<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Matthias Biehl</title>
    <description>The latest articles on Forem by Matthias Biehl (@mattbiehl).</description>
    <link>https://forem.com/mattbiehl</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F311487%2Fcf63556d-ec0b-4b34-abc0-c7f278edf51f.jpg</url>
      <title>Forem: Matthias Biehl</title>
      <link>https://forem.com/mattbiehl</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/mattbiehl"/>
    <language>en</language>
    <item>
      <title>Video Tutorial: How to build Social Login with LinkedIn API, OAuth and Node.js - Part 1 </title>
      <dc:creator>Matthias Biehl</dc:creator>
      <pubDate>Sun, 14 Jun 2020 14:41:52 +0000</pubDate>
      <link>https://forem.com/mattbiehl/social-login-with-linkedin-api-and-oauth-8211-live-coding-8211-part-1-bl7</link>
      <guid>https://forem.com/mattbiehl/social-login-with-linkedin-api-and-oauth-8211-live-coding-8211-part-1-bl7</guid>
      <description>&lt;p&gt;Social Login allows you to improve convenience for your customers and increase conversion rates for your signups and offerings. Instead of letting users fill in forms, they just need to click to sign in with LinkedIn.&lt;/p&gt;

&lt;p&gt;In this video I show you how you can develop Social Login with LinkedIn, by leveraging the LinkedIn API and LinkedIn OAuth. We will develop a small program in node.js to see OAuth and APIs in practice.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.youtube.com/watch?v=WhKkbpMjSks"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6gtWpysG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/http://img.youtube.com/vi/WhKkbpMjSks/0.jpg" alt="Video tutorial on social login with Linkedin API and node.js"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Don’t miss any upcoming episode and &lt;a href="https://www.youtube.com/c/api-university?sub_confirmation=1"&gt;subscribe to the API-University channel&lt;/a&gt; on youtube.&lt;/p&gt;

&lt;p&gt;This is the first part of a 3 part series on social login:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Social Login Part 1: &lt;a href="https://api-university.com/blog/api-usage/social-login-with-linkedin-part-1"&gt;Write code to call the LinkedIn APIs to get profile and email data&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Social Login Part 2 (publication scheduled for 2020-06-17): Write code for the redirect endpoint and code for getting an access token&lt;a href="https://api-university.com/blog/api-usage/social-login-with-linkedin-part-2"&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Social Login Part 3 (publication scheduled for 2020-06-24): Write code to push signup information to a mailinglist provider via API&lt;a href="https://api-university.com/blog/api-usage/social-login-with-linkedin-part-3"&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You might also want to watch: &lt;a href="https://api-university.com/blog/api-usage/how-to-use-the-linkedin-api-and-oauth/"&gt;How to use the LinkedIn API and OAuth&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vEa3nFxH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://api-university.com/wp-content/uploads/2020/06/social-login-nodejs-977x1024.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vEa3nFxH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://api-university.com/wp-content/uploads/2020/06/social-login-nodejs-977x1024.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the video, I show you how to write a &lt;strong&gt;node.js application&lt;/strong&gt; to call the LinkedIn APIs. It makes your life much easier because it guides you through the process, and helps you to get all the nitty-gritty details right. Without it, you would probably spend a lot of time reading the documentation or figuring it out by trial and error.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://api-university.com/blog/api-usage/social-login-with-linkedin-part-1/"&gt;Get the Source Code.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Learn about OAuth in a more structured way, with step-by-step guides:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://api-university.com/courses/oauth-2-0-course/"&gt;Course on OAuth&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://api-university.com/books/oauth-2-0-book/"&gt;Book on OAuth&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://api-university.com/books/"&gt;Books on other API Topics&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://api-university.com/courses/"&gt;Courses on other API Topics&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>sociallogin</category>
      <category>linkedinapi</category>
      <category>node</category>
      <category>oauth</category>
    </item>
    <item>
      <title>How to use Google Sheets API </title>
      <dc:creator>Matthias Biehl</dc:creator>
      <pubDate>Tue, 26 May 2020 23:47:20 +0000</pubDate>
      <link>https://forem.com/mattbiehl/how-to-use-google-sheets-api-36aa</link>
      <guid>https://forem.com/mattbiehl/how-to-use-google-sheets-api-36aa</guid>
      <description>&lt;p&gt;Learn to use the Google Sheets API. In this week’s episode, I show you hands-on how you can turn any Google Spreadsheet into a data store that is accessible via API.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/pFpytftOYiw"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Don’t miss any upcoming episode and &lt;a href="https://www.youtube.com/c/api-university?sub_confirmation=1"&gt;subscribe to the API-University channel&lt;/a&gt; on youtube.&lt;/p&gt;

&lt;p&gt;In the video, I show you how to use the worksheet as a step-by-step guide. It makes your life much easier because it guides you through the process, and helps you to get all the nitty-gritty details right. Without it, you would probably spend a lot of time reading the documentation or figuring it out by trial and error.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://api-university.com/blog/how-to-use-google-sheets-api/"&gt;Get the Google Sheets API Worksheet&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Learn about APIs in a more structured way, with step-by-step guides:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://api-university.com/books/api-design/"&gt;Book on RESTful API Design&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://api-university.com/courses/restful-api-design-course/"&gt;Course on RESTful API Design&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://api-university.com/books/"&gt;Books on other API Topics&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://api-university.com/courses/"&gt;Courses on other API Topics&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>api</category>
      <category>googlesheetsapi</category>
      <category>spreadsheetapi</category>
      <category>callapi</category>
    </item>
    <item>
      <title>The 10 most critical API security risks - Part 9: Improper Assets Management </title>
      <dc:creator>Matthias Biehl</dc:creator>
      <pubDate>Tue, 24 Mar 2020 20:00:30 +0000</pubDate>
      <link>https://forem.com/mattbiehl/the-10-most-critical-api-security-risks-part-9-improper-assets-management-168l</link>
      <guid>https://forem.com/mattbiehl/the-10-most-critical-api-security-risks-part-9-improper-assets-management-168l</guid>
      <description>&lt;p&gt;The recently published &lt;em&gt;“OWASP API security top 10”&lt;/em&gt; report analyzes the anti-patterns that lead to vulnerabilities and security risks in APIs. In this 10 part series, we introduce these API anti-patterns. Every API professional should know about these anti-patterns.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--j6-97_pc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://api-university.com/wp-content/uploads/2020/01/owasp-api-09-1024x473.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--j6-97_pc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://api-university.com/wp-content/uploads/2020/01/owasp-api-09-1024x473.png" alt=""&gt;&lt;/a&gt;&lt;br&gt;
Improper Assets Management from the &lt;a href="https://github.com/OWASP/API-Security/raw/master/2019/en/dist/owasp-api-security-top-10.pdf"&gt;OWASP API security paper&lt;/a&gt;&lt;strong&gt;API security anti-pattern for Improper Assets Management&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;APIs tend to expose more endpoints than traditional web applications, making proper and updated documentation highly important. Proper hosts and deployed API versions inventory also play an important role to mitigate issues such as deprecated API versions and exposed debug endpoints.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Want to learn more?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://api-university.com/blog/api-security/the-10-most-critical-api-security-risks---part-1:-broken-object-level-authorization"&gt;Part 1 Broken Object Level Authorization &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://api-university.com/blog/the-10-most-critical-api-security-risks---part-2:-broken-user-authentication"&gt;Part 2 Broken User Authentication&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://api-university.com/blog/the-10-most-critical-api-security-risks---part-3:-excessive-data-exposure"&gt;Part 3 Excessive Data Exposure&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://api-university.com/blog/api-security/the-10-most-critical-api-security-risks---part-4:-lack-of-resources-&amp;amp;-rate-limiting/"&gt;Part 4 Lack of Resources &amp;amp; Rate Limiting&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://api-university.com/blog/the-10-most-critical-api-security-risks---part-5:-broken-function-level-authorization"&gt;Part 5 Broken Function Level Authorization&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://api-university.com/blog/api-security/the-10-most-critical-api-security-risks---part-6:-mass-assignment"&gt;Part 6 Mass Assignment&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://api-university.com/blog/api-security/the-10-most-critical-api-security-risks---part-7:-security-misconfiguration"&gt;Part 7 Security Misconfiguration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://api-university.com/blog/api-security/the-10-most-critical-api-security-risks---part-8:-injection"&gt;Part 8 Injection&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://api-university.com/blog/api-security/the-10-most-critical-api-security-risks---part-9:-improper-assets-management"&gt;Part 9 Improper Assets Management&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Check out the complete &lt;a href="https://github.com/OWASP/API-Security/raw/master/2019/en/dist/owasp-api-security-top-10.pdf"&gt;OWASP API security paper&lt;/a&gt;. To secure access to your APIs, learn more about the OAuth in the &lt;a href="https://api-university.com/books/oauth-2-0-book/"&gt;OAuth Book&lt;/a&gt;, or the &lt;a href="https://api-university.com/courses/oauth-2-0-course/"&gt;OAuth Course&lt;/a&gt;. To provide and use identity data in apps and APIs, learn more about OpenID Connect in the &lt;a href="https://api-university.com/books/openid-connect/"&gt;OpenID Connect Book&lt;/a&gt;, or the &lt;a href="https://api-university.com/courses/openid-connect/"&gt;OpenID Connect Course&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>api</category>
      <category>apisecurity</category>
      <category>owasp</category>
      <category>security</category>
    </item>
    <item>
      <title>The 10 most critical API security risks - Part 8: Injection </title>
      <dc:creator>Matthias Biehl</dc:creator>
      <pubDate>Tue, 17 Mar 2020 21:01:26 +0000</pubDate>
      <link>https://forem.com/mattbiehl/the-10-most-critical-api-security-risks-part-8-injection-2kkd</link>
      <guid>https://forem.com/mattbiehl/the-10-most-critical-api-security-risks-part-8-injection-2kkd</guid>
      <description>&lt;p&gt;The recently published &lt;em&gt;“OWASP API security top 10”&lt;/em&gt; report analyzes the anti-patterns that lead to vulnerabilities and security risks in APIs. In this 10 part series, we introduce these API anti-patterns. Every API professional should know about these anti-patterns.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jFQK5jwP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://api-university.com/wp-content/uploads/2020/01/owasp-api-08-1024x399.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jFQK5jwP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://api-university.com/wp-content/uploads/2020/01/owasp-api-08-1024x399.png" alt=""&gt;&lt;/a&gt;&lt;br&gt;
Injection from the &lt;a href="https://github.com/OWASP/API-Security/raw/master/2019/en/dist/owasp-api-security-top-10.pdf"&gt;OWASP API security paper&lt;/a&gt;&lt;strong&gt;API security anti-pattern for Injection&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Injection flaws, such as SQL, NoSQL, Command Injection, etc., occur when untrusted data is sent to an interpreter as part of a command or query. The attacker’s malicious data can trick the interpreter into executing unintended commands or accessing data without proper authorization.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Want to learn more?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://api-university.com/blog/api-security/the-10-most-critical-api-security-risks---part-1:-broken-object-level-authorization"&gt;Part 1 Broken Object Level Authorization &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://api-university.com/blog/the-10-most-critical-api-security-risks---part-2:-broken-user-authentication"&gt;Part 2 Broken User Authentication&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://api-university.com/blog/the-10-most-critical-api-security-risks---part-3:-excessive-data-exposure"&gt;Part 3 Excessive Data Exposure&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://api-university.com/blog/api-security/the-10-most-critical-api-security-risks---part-4:-lack-of-resources-&amp;amp;-rate-limiting/"&gt;Part 4 Lack of Resources &amp;amp; Rate Limiting&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://api-university.com/blog/the-10-most-critical-api-security-risks---part-5:-broken-function-level-authorization"&gt;Part 5 Broken Function Level Authorization&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://api-university.com/blog/api-security/the-10-most-critical-api-security-risks---part-6:-mass-assignment"&gt;Part 6 Mass Assignment&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://api-university.com/blog/api-security/the-10-most-critical-api-security-risks---part-7:-security-misconfiguration"&gt;Part 7 Security Misconfiguration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://api-university.com/blog/api-security/the-10-most-critical-api-security-risks---part-8:-injection"&gt;Part 8 Injection&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Check out the complete &lt;a href="https://github.com/OWASP/API-Security/raw/master/2019/en/dist/owasp-api-security-top-10.pdf"&gt;OWASP API security paper&lt;/a&gt;. To secure access to your APIs, learn more about the OAuth in the &lt;a href="https://api-university.com/books/oauth-2-0-book/"&gt;OAuth Book&lt;/a&gt;, or the &lt;a href="https://api-university.com/courses/oauth-2-0-course/"&gt;OAuth Course&lt;/a&gt;. To provide and use identity data in apps and APIs, learn more about OpenID Connect in the &lt;a href="https://api-university.com/books/openid-connect/"&gt;OpenID Connect Book&lt;/a&gt;, or the &lt;a href="https://api-university.com/courses/openid-connect/"&gt;OpenID Connect Course&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>api</category>
      <category>owasp</category>
      <category>security</category>
      <category>apisecurity</category>
    </item>
    <item>
      <title>The 10 most critical API security risks - Part 7: Security Misconfiguration </title>
      <dc:creator>Matthias Biehl</dc:creator>
      <pubDate>Tue, 03 Mar 2020 17:04:41 +0000</pubDate>
      <link>https://forem.com/mattbiehl/the-10-most-critical-api-security-risks-part-7-security-misconfiguration-3no0</link>
      <guid>https://forem.com/mattbiehl/the-10-most-critical-api-security-risks-part-7-security-misconfiguration-3no0</guid>
      <description>&lt;p&gt;The recently published &lt;em&gt;“OWASP API security top 10”&lt;/em&gt; report analyzes the anti-patterns that lead to vulnerabilities and security risks in APIs. In this 10 part series, we introduce these API anti-patterns. Every API professional should know about these anti-patterns. In this blog post, we focus on “API security misconfiguration”.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UoMfWhMM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://api-university.com/wp-content/uploads/2020/01/owasp-api-07-1-1024x393.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UoMfWhMM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://api-university.com/wp-content/uploads/2020/01/owasp-api-07-1-1024x393.png" alt=""&gt;&lt;/a&gt;&lt;strong&gt;API security anti-pattern for Security Misconfiguration&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Security misconfiguration is commonly a result of insecure default configurations, incomplete or ad-hoc configurations, open cloud storage, misconfigured HTTP headers, unnecessary HTTP methods, permissive Cross-Origin resource sharing (CORS), and verbose error messages containing sensitive information.&lt;/p&gt;

&lt;p&gt;The good thing is, that it is relatively easy to fix security misconfiguration and considerably improve the API security as a result.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Want to learn more?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://api-university.com/blog/api-security/the-10-most-critical-api-security-risks---part-1:-broken-object-level-authorization"&gt;Part 1 Broken Object Level Authorization &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://api-university.com/blog/the-10-most-critical-api-security-risks---part-2:-broken-user-authentication"&gt;Part 2 Broken User Authentication&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://api-university.com/blog/the-10-most-critical-api-security-risks---part-3:-excessive-data-exposure"&gt;Part 3 Excessive Data Exposure&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://api-university.com/blog/api-security/the-10-most-critical-api-security-risks---part-4:-lack-of-resources-&amp;amp;-rate-limiting/"&gt;Part 4 Lack of Resources &amp;amp; Rate Limiting&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://api-university.com/blog/the-10-most-critical-api-security-risks---part-5:-broken-function-level-authorization"&gt;Part 5 Broken Function Level Authorization&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://api-university.com/blog/api-security/the-10-most-critical-api-security-risks---part-6:-mass-assignment"&gt;Part 6 Mass Assignment&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://api-university.com/blog/api-security/the-10-most-critical-api-security-risks---part-7:-security-misconfiguration"&gt;Part 7 Security Misconfiguration&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Check out the complete &lt;a href="https://github.com/OWASP/API-Security/raw/master/2019/en/dist/owasp-api-security-top-10.pdf"&gt;OWASP API security paper&lt;/a&gt;. To secure access to your APIs, learn more about the OAuth in the &lt;a href="https://api-university.com/books/oauth-2-0-book/"&gt;OAuth Book&lt;/a&gt;, or the &lt;a href="https://api-university.com/courses/oauth-2-0-course/"&gt;OAuth Course&lt;/a&gt;. To provide and use identity data in apps and APIs, learn more about OpenID Connect in the &lt;a href="https://api-university.com/books/openid-connect/"&gt;OpenID Connect Book&lt;/a&gt;, or the &lt;a href="https://api-university.com/courses/openid-connect/"&gt;OpenID Connect Course&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>apisecurity</category>
      <category>api</category>
      <category>owasp</category>
      <category>security</category>
    </item>
    <item>
      <title>Alexa Account Linking with OAuth and Spotify </title>
      <dc:creator>Matthias Biehl</dc:creator>
      <pubDate>Fri, 28 Feb 2020 08:07:18 +0000</pubDate>
      <link>https://forem.com/mattbiehl/alexa-account-linking-with-oauth-and-spotify-e0i</link>
      <guid>https://forem.com/mattbiehl/alexa-account-linking-with-oauth-and-spotify-e0i</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0TeCeU63--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://api-university.com/wp-content/uploads/2019/05/1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0TeCeU63--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://api-university.com/wp-content/uploads/2019/05/1.png" alt="Alexa Account Linking with OAuth"&gt;&lt;/a&gt;We can personalize &lt;a href="https://developer.amazon.com/en-US/alexa"&gt;Alexa Skills&lt;/a&gt; by accessing our own APIs or the APIs of third parties from within our Alexa Skill. This allows us to have the customer’s data available in our Skill. For example, if we create a music Skill and can access the user’s Spotify playlists and preferred music, the user will feel at home – like the Skill is personally created for him/her. To realize such a personalized experience we explore the Alexa Account Linking feature with OAuth on the example of Spotify.&lt;/p&gt;

&lt;p&gt;Let’s work with our Alexa Skill that needs access to Spotify playlists. The Alexa Skill has the role of an API client accessing the Spotify API. Spotify is the API provider; it provides the playlist data via API and protects the API with OAuth. The &lt;a href="https://tools.ietf.org/html/rfc6749"&gt;OAuth framework&lt;/a&gt; is a standardized, commonly used protocol for delegating access rights on the web and in web applications. It is a well-invested time, to &lt;a href="https://api-university.com/books/oauth-2-0-book/"&gt;learn more about the OAuth &lt;/a&gt;protocol.&lt;/p&gt;

&lt;p&gt;When an API is protected with OAuth, this means that a valid OAuth access token is required to access the API. In our example, this means that the Alexa Skill needs a valid OAuth access token from Spotify if it wants to access the playlist API. How does it get such a token?&lt;/p&gt;

&lt;p&gt;According to the &lt;a href="https://api-university.com/oauth/"&gt;OAuth protocol&lt;/a&gt;, the end-user, i.e., Alexa user, has to authenticate with Spotify first, then the client, i.e., Alexa Skill, has to authenticate with Spotify and if all checks are positive, &lt;a href="https://api-university.com/blog/spotify-api-how-to-get-an-oauth-access-token-api-review-series/"&gt;Spotify may hand out the OAuth access token&lt;/a&gt;. This OAuth access token created by Spotify is stored in the user context of the Alexa Skill. This OAuth access token allows the Skill to make &lt;a href="https://api-university.com/blog/api-review-series-spotify-api-how-to-get-a-playlist/"&gt;calls against the Spotify Playlist API&lt;/a&gt; in the name of the end-user, without the end-user having to authenticate against Spotify with each API access.&lt;/p&gt;

&lt;p&gt;Account linking in Alexa means in more technical terms that an Alexa Skill becomes an OAuth client. This OAuth client can request, hold and use an OAuth token that interacts with the OAuth server according to the standardized OAuth protocol. In the following, we will walk through the steps necessary to get an OAuth token and thus create linked accounts.&lt;/p&gt;

&lt;p&gt;There will be a series of posts on this topic:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://api-university.com/blog/alexa-account-linking-via-oauth/"&gt;Part 0: Introduction to Account Linking via OAuth&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://api-university.com/blog/part-1-registration-with-oauth-provider/"&gt;Part 1: Registration with OAuth Provider &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://api-university.com/blog/part-2-of-alexa-account-linking-via-oauth-account-linking-configuration-on-skill-interface/"&gt;Part 2: Account Linking Configuration on Skill Interface &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://api-university.com/blog/part-3-of-alexa-account-linking-via-oauth-skill-service-get-access-token/"&gt;Part 3: Skill Service: Get Access Token&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://api-university.com/blog/part-4-of-alexa-account-linking-via-oauth-call-protected-api-from-skill-service/"&gt;Part 4: Call Protected API from Skill Service &lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In my new &lt;a href="https://api-university.com/books/alexa"&gt;book “Making Money with Alexa Skills – A Developer’s Guide”&lt;/a&gt; I describe not only how to develop, but also how to monetize Alexa Skills. Account linking is one of the possibilities for personalizing a Skill and make it unique – more practical approaches for personalizing Skills are described in the book. In this book, I explain in detail how to make Alexa Account Linking with OAuth and Spotify work.&lt;/p&gt;

&lt;p&gt;In the &lt;a href="https://api-university.com/books/oauth-2-0-book/"&gt;OAuth 2.0 book&lt;/a&gt;, you can find a simple and understandable explanation of all the standard OAuth Flows (such as those supported by Alexa). What makes this book unique is that complicated OAuth interactions are visualized as easy-to-understand sequence diagrams.&lt;/p&gt;

</description>
      <category>alexaskill</category>
      <category>api</category>
      <category>oauth</category>
      <category>spotify</category>
    </item>
    <item>
      <title>The 10 most critical API security risks - Part 6: Mass Assignment </title>
      <dc:creator>Matthias Biehl</dc:creator>
      <pubDate>Tue, 25 Feb 2020 17:22:53 +0000</pubDate>
      <link>https://forem.com/mattbiehl/the-10-most-critical-api-security-risks-part-6-mass-assignment-24d3</link>
      <guid>https://forem.com/mattbiehl/the-10-most-critical-api-security-risks-part-6-mass-assignment-24d3</guid>
      <description>&lt;p&gt;The recently published &lt;em&gt;“OWASP API security top 10”&lt;/em&gt; report analyzes the anti-patterns that lead to vulnerabilities and security risks in APIs. In this 10 part series, we introduce these API anti-patterns. Every API professional should know about these anti-patterns.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xJrquYgY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://api-university.com/wp-content/uploads/2020/01/owasp-api-06-1024x440.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xJrquYgY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://api-university.com/wp-content/uploads/2020/01/owasp-api-06-1024x440.png" alt=""&gt;&lt;/a&gt;&lt;br&gt;
Mass Assignment from the &lt;a href="https://github.com/OWASP/API-Security/raw/master/2019/en/dist/owasp-api-security-top-10.pdf"&gt;OWASP API security paper&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;API security anti-pattern for Mass Assignment&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The binding of client-provided data (e.g., JSON) to data models, without properties filtering based on a whitelist, usually leads to Mass Assignment. Either guessing objects properties, exploring other API endpoints, reading the documentation, or providing additional object properties in request payloads, allows attackers to modify object properties they are not supposed to.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Want to learn more?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://api-university.com/blog/api-security/the-10-most-critical-api-security-risks---part-1:-broken-object-level-authorization"&gt;Part 1 Broken Object Level Authorization &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://api-university.com/blog/the-10-most-critical-api-security-risks---part-2:-broken-user-authentication"&gt;Part 2 Broken User Authentication&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://api-university.com/blog/the-10-most-critical-api-security-risks---part-3:-excessive-data-exposure"&gt;Part 3 Excessive Data Exposure&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://api-university.com/blog/api-security/the-10-most-critical-api-security-risks---part-4:-lack-of-resources-&amp;amp;-rate-limiting/"&gt;Part 4 Lack of Resources &amp;amp; Rate Limiting&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://api-university.com/blog/the-10-most-critical-api-security-risks---part-5:-broken-function-level-authorization"&gt;Part 5 Broken Function Level Authorization&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://api-university.com/blog/api-security/the-10-most-critical-api-security-risks---part-6:-mass-assignment"&gt;Part 6 Mass Assignment&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Check out the complete &lt;a href="https://github.com/OWASP/API-Security/raw/master/2019/en/dist/owasp-api-security-top-10.pdf"&gt;OWASP API security paper&lt;/a&gt;. To secure access to your APIs, learn more about the OAuth in the &lt;a href="https://api-university.com/books/oauth-2-0-book/"&gt;OAuth Book&lt;/a&gt;, or the &lt;a href="https://api-university.com/courses/oauth-2-0-course/"&gt;OAuth Course&lt;/a&gt;. To provide and use identity data in apps and APIs, learn more about OpenID Connect in the &lt;a href="https://api-university.com/books/openid-connect/"&gt;OpenID Connect Book&lt;/a&gt;, or the &lt;a href="https://api-university.com/courses/openid-connect/"&gt;OpenID Connect Course&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>apisecurity</category>
      <category>api</category>
      <category>security</category>
      <category>owasp</category>
    </item>
    <item>
      <title>Is the API-key enough? Common API security issues - and how to fix them.</title>
      <dc:creator>Matthias Biehl</dc:creator>
      <pubDate>Tue, 25 Feb 2020 05:52:34 +0000</pubDate>
      <link>https://forem.com/mattbiehl/is-the-api-key-enough-common-api-security-issues-and-how-to-fix-them-4bh9</link>
      <guid>https://forem.com/mattbiehl/is-the-api-key-enough-common-api-security-issues-and-how-to-fix-them-4bh9</guid>
      <description>&lt;p&gt;It can be seen over and over again: API-keys are directly embedded in the source code of an app. The most &lt;a href="https://www.vice.com/en_us/article/3a8ajj/an-off-the-shelf-skeleton-project-experts-analyze-the-app-that-broke-iowa"&gt;recent incident&lt;/a&gt; as of February 2020 is the &lt;a href="https://www.vice.com/en_us/article/3a8ajj/an-off-the-shelf-skeleton-project-experts-analyze-the-app-that-broke-iowa"&gt;Iowa caucus app&lt;/a&gt;, that contained API-keys right inside the source code.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6MWUtmyI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://api-university.com/wp-content/uploads/2020/02/api-key.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6MWUtmyI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://api-university.com/wp-content/uploads/2020/02/api-key.png" alt="API keys"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But it should be clear, that source code or the corresponding assembly/binary/bytecode is not secure storage for credentials, especially when rolled out to the end-users' device! Hardcoding API credentials into the source code is a no-go. There are at least two reasons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Source code may be uploaded to a public repository (e.g. GitHub). By the time it is uploaded, the uploader may not be aware of the credentials being included in the sources.&lt;/li&gt;
&lt;li&gt;Assembly/binary/bytecode can be easily disassembled/decoded and any API-keys can be easily extracted.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If source code and the resulting assembly/binary/bytecode are not a secure place for API credentials, how should API credentials be persisted instead? &lt;br&gt;
There are several aspects to the answer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Static credentials such as API-keys should not be used in the first place. Instead, dynamic credentials should be used. This needs to be fixed by the API provider. See section "Static vs Dynamic Credentials".&lt;/li&gt;
&lt;li&gt;Where credentials are stored. Not in assembly/binary/bytecode, but in secure storage. This needs to be properly managed by the API consumer. See the section "Credential Storage".&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Static vs Dynamic Credentials
&lt;/h1&gt;

&lt;p&gt;API-keys are static credentials and thus can be easily transferred and used in unintended scenarios. They do not even adequately identify the app. And under no circumstances should access to user-data be made, based on an API-key.&lt;/p&gt;

&lt;p&gt;This is a problem, that first of all needs to be addressed by the API provider. The API provider needs to offer APIs protected by dynamic credentials. Dynamic credentials, such as &lt;a href="https://api-university.com/books/oauth-2-0-book/"&gt;OAuth&lt;/a&gt;, require to include the end-user in the loop, who has to authenticate. And the end-user should be able to check the trustworthiness/authenticity of the app.&lt;/p&gt;

&lt;p&gt;Dynamic credentials typically have several components, (1) identification of the app with a static credential, called clientID and clientSecret in OAuth, and (2) the end-user identification. The static credentials of the app should be stored in secure credential storage, offered by the operating system (see next section). If the end-user also decides to store end-user credentials, they should also be stored in secure credential storage.&lt;/p&gt;

&lt;p&gt;If you want to learn more about OAuth, read up in the &lt;a href="https://api-university.com/books/oauth-2-0-book/"&gt;OAuth Book&lt;/a&gt; or in the &lt;a href="https://api-university.com/courses/oauth-2-0-course/"&gt;OAuth Course&lt;/a&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  Credential Storage
&lt;/h1&gt;

&lt;p&gt;If the API provider did their homework and protected the APIs with OAuth, it is now the turn of the API consumer to store the necessary credentials appropriately. &lt;/p&gt;

&lt;p&gt;Apps should use the secure storage offered by the operating system to store app identifiers/credentials and user identifiers/credentials. &lt;br&gt;
Both iOS and Android have appropriate libraries:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;a href="https://developer.apple.com/documentation/security/keychain_services"&gt;Keychain service&lt;/a&gt; in iOS&lt;/li&gt;
&lt;li&gt;The &lt;a href="https://developer.android.com/training/articles/keystore"&gt;Keystore system&lt;/a&gt; on Android, and the &lt;a href="https://developer.android.com/reference/android/accounts/AccountManager.html"&gt;Account Manager&lt;/a&gt; on Android&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I hope to have shown you, more secure alternatives to protect your APIs and how to protect API credentials in your apps. The centerpiece? Use OAuth. Correctly.&lt;/p&gt;

</description>
      <category>api</category>
      <category>security</category>
      <category>authentication</category>
      <category>oauth</category>
    </item>
  </channel>
</rss>
