<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Auth on ashitaka blog</title>
    <link>https://8fd9c3c3.blog-1xe.pages.dev/tags/auth/</link>
    <description>Recent content in Auth on ashitaka blog</description>
    <generator>Hugo</generator>
    <language>ja-jp</language>
    <lastBuildDate>Tue, 24 Nov 2020 14:51:59 +0900</lastBuildDate>
    <atom:link href="https://8fd9c3c3.blog-1xe.pages.dev/tags/auth/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>認証・認可のしくみとフロー(FIDO, OAuth, SAML)</title>
      <link>https://8fd9c3c3.blog-1xe.pages.dev/2020/11/24/auth/</link>
      <pubDate>Tue, 24 Nov 2020 14:51:59 +0900</pubDate>
      <guid>https://8fd9c3c3.blog-1xe.pages.dev/2020/11/24/auth/</guid>
      <description>&lt;p&gt;業務にてOpen ID Connect(OIDC)を使った認証の仕組みを作ったが, いまだにOIDCがどういったものであるかを理解しないままだった。&lt;/p&gt;
&lt;p&gt;そんな中, &lt;a href=&#34;https://www.amazon.co.jp/Software-Design-%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3-2020%E5%B9%B411%E6%9C%88%E5%8F%B7-%E9%9B%91%E8%AA%8C-ebook/dp/B08KSQ2FB5/ref=sr_1_3?dchild=1&amp;amp;qid=1606222669&amp;amp;s=books&amp;amp;sr=1-3&#34;&gt;Software Design 2020年11月号&lt;/a&gt;にて認証・認可が取り上げられていたので, その中でOIDCについて詳しく書かれていた第2章ついてまとめる。&lt;/p&gt;
&lt;h2 id=&#34;第2章-認証認可のしくみとフロー--fidoからoauth-samlまで一挙に解説-&#34;&gt;第2章 認証・認可のしくみとフロー ~ FIDOからOAuth, SAMLまで一挙に解説 ~&lt;/h2&gt;
&lt;h3 id=&#34;ソーシャルログイン&#34;&gt;ソーシャルログイン&lt;/h3&gt;
&lt;p&gt;外部のソーシャルネットワークサービス(Facebook, Twitterなど)を使って認証を行い, その結果をもって対象のWebサービスの認可を行う仕組み。対象のWebサービス側のID管理データベースへの新規登録を大幅に簡素化することができる。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;../../wp-content/uploads/2020/11/IMG_0434-scaled-1-1024x396.jpg&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;fast-identity-online-fido&#34;&gt;Fast IDentity Online (FIDO)&lt;/h3&gt;
&lt;p&gt;生体認証を中心とする新しいオンライン認証技術。その名のとおり, 高速なオンライン認証を実現する。WebサービスではなくFIDO認証サーバで認証処理を行う。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;../../wp-content/uploads/2020/11/IMG_0443-scaled-1-1024x469.jpg&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;open-authorization-oauth&#34;&gt;Open Authorization (OAuth)&lt;/h3&gt;
&lt;p&gt;アプリ(Oauthクライアント)がユーザーの代わりにAPI(リソース)にアクセスすることを許す(権限移譲する)&lt;strong&gt;認可&lt;/strong&gt;フレームワーク。これによって, Facebookにログイン(認証)したあとは, Instagramも利用(APIアクセスを認可)できるようになり, パスワードをサービスごとに設定・送信する手間から開放される。&lt;/p&gt;
&lt;h3 id=&#34;oauth-20&#34;&gt;OAuth 2.0&lt;/h3&gt;
&lt;p&gt;以下の点がOAuth 1.0と異なる。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Webサービスだけでなくスマホアプリも対象&lt;/li&gt;
&lt;li&gt;アクセストークンを受け渡す仕組みを改善&lt;/li&gt;
&lt;li&gt;HTTPSが必須&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以下の4種類の認可フローが用意されている。比較的よく使われるのがAuthorization Code Grant。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;../../wp-content/uploads/2020/11/IMG_0436-1-scaled-1-1024x670.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;以下がOAuth 2.0の仕組みである。スマホアプリは, 認可サーバの「認可エンドポイント」から認可コードを発行してもらう。次に, スマホアプリはアクセストークンを発行してもらうために, HTTPリクエストのペイロード部分に「&lt;code&gt;grant_type=authorization_code&amp;amp;code=&amp;lt;認可コード&amp;gt;&lt;/code&gt;」という形で認可コードを入れ, 認可サーバの「トークンエンドポイント」に提出する。こうして取得したアクセストークンをHTTPリクエストのヘッダ部分などに「&lt;code&gt;Authorization: Bearer &amp;lt;アクセストークン&amp;gt;&lt;/code&gt;」のように入れ, APIに提出する。&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;../../wp-content/uploads/2020/11/IMG_0437-scaled-1-1024x410.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;あくまで認可のしくみであり, 認証のしくみについては定義されていない。&lt;/p&gt;
&lt;h3 id=&#34;リフレッシュトークン&#34;&gt;リフレッシュトークン&lt;/h3&gt;
&lt;p&gt;アクセストークンを更新するためのトークン。&lt;/p&gt;
&lt;p&gt;Webサービスは認証・認可のあと, HTTP Cookieによってユーザーを特定しているが, APIはトークンによって実行権限の有無を判定する。このトークンに, アクセストークンとリフレッシュトークンが含まれている。&lt;/p&gt;
&lt;h3 id=&#34;openid-connect-oidc&#34;&gt;OpenID Connect (OIDC)&lt;/h3&gt;
&lt;p&gt;認証結果を含むアイデンティティ情報も受け渡しできるようにOAuth 2.0を拡張したプロトコル。認証結果を含むアイデンティティ情報を「IDトークン」に入れて受け渡す。&lt;/p&gt;
&lt;p&gt;アイデンティティ情報とはユーザーの属性情報や認証した日時などの情報であり, これをAPI側が確認できるようになる。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
