「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-[[戻る>OAuthによる外部ログイン(認証)の研究]]
-[[戻る>OAuth 2.0 拡張]]

* 目次 [#n69bb58b]
#contents

*概要 [#fe00a351]
-[[JWT]]を使う[[OAuth]] 2.0についての纏め。
-[[OAuth]] 2.0のセキュリティ上の解題を解決し認証での利用を可能にする。

*[[JWT]]アサーションを使用 [#y9c24d21]
**概要 [#s2e7f5ab]
-[[ASP.NET Identity]]のAccess Tokenはカスタマイズが可能。
-そこで、Access Tokenを[[JWT]]アサーションに変更する。
*詳細 [#n5b682c9]

**参考 [#abcaa4fd]
-詳しくは、[[コチラ>ASP.NET IdentityのOAuthによるSTS実装#a0f5b8a7]]を参照。
**Bearer Tokenの[[JWT]]化 [#y9c24d21]

*[[OpenID Connect]] [#cd3ff39c]
**概要 [#c6a16225]
[[OpenID Connect]]では、Access Tokenではなく[[ID Token>OpenID Connect#ofb73c59]]に[[JWT]]を使用している。
***概要 [#h509f0e1]
-[[OAuth]] 2.0ではAccess Tokenまで仕様化されていないので[[JWT]]アサーションを利用可能。

**参考 [#baf5a1a4]
-[[OpenID Connect]]
-Access Tokenとして、[[JWT]]アサーションを使用すれば、~
改ざん、置換、CSRF(XSRF)などを検出できるようになるため、~
Implicitグラント種別でもより安全に利用できるようになる。

*JWT Bearer Token Flow [#f5007063]
-[[OpenID Connect]] の [[IDトークンに同梱されるクレーム>OpenID Connect#ofb73c59]]を~
同梱させれば、ほぼ安全になり、認証用途にも利用できるようになる。

**概要 [#c700ab65]
-[[GoogleやMicrosoft、SalesforceなどのWebAPI認証の方式として採用されているもよう>WebAPIの認証#p99216b3]]。
--ClientやResource Serverでtokenの署名検証が可能になる。

-事前に信頼関係を構築できるシステムからAPI接続する場合に有効な方法らしい。
--また、発行者のAuthZ Server(iss:issuer)と~
発行対象のClient(aud:audience=[[クライアント識別子>#i7b73962]])を特定できる。

**具体的なフロー [#s17db5fe]
-[[JWT]]作成のための証明書を生成 or 取得する。
-証明書をClient側とResource Server側に登録する。
-Clientで[[JWT]]を作成し、Resource Serverに送信してAccess Token(Bearer Token)を取得する。
-Clientから、Access Token(Bearer Token)を使用してResource Serverにアクセスする。
--これにより、トークン置き換え攻撃も防ぐことができる。

**参考 [#uea38a81]
-RFC 7523 - JSON Web Token (JWT) Profile for OAuth 2.0 Client Authentication and Authorization Grants~
https://tools.ietf.org/html/rfc7523
-ポイントは、このAccess Tokenは、[[ASP.NET Identity]]などの~
特定テクノロジを使用したResource Serverでなくても利用可能であるという点。

*OAuth2.0  Proof of Possession [#u8ebfddc]
**概要 [#u06d5989]
-Access Tokenを[[JWT]]アサーションで発行する系のドラフト。
-[[OAuth]] 2.0に近い[[OpenID Connect]]と比べると、いくぶんか複雑らしい。
***[[ASP.NET Identity]] [#k0b22c52]
-Access Tokenのカスタマイズが可能。

**参考 [#u43bc76c]
-draft-ietf-oauth-pop-architecture-08~
OAuth 2.0 Proof-of-Possession (PoP) Security Architecture~
https://tools.ietf.org/html/draft-ietf-oauth-pop-architecture-08
-OAuth2.0  Proof of Possession についてまとめてみた - hiyosi's blog~
https://hiyosi.tumblr.com/post/121441878998/oauth20-proof-of-possession-%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E3%81%BE%E3%81%A8%E3%82%81%E3%81%A6%E3%81%BF%E3%81%9F
-RFC7636として発行されたOAuth PKCEとは - r-weblife~
http://d.hatena.ne.jp/ritou/20151018/1445181974
-ただし、(基本的には)Access Tokenのみがカスタマイズの対象なので、~
[[OpenID Connect]]に対応させることはできない([[IDトークン>OpenID Connect#ofb73c59]]の追加はできない)。

-参考
--JSON Web Token in ASP.NET Web API 2 using Owin - Bit of Technology~
http://bitoftech.net/2014/10/27/json-web-token-asp-net-web-api-2-jwt-owin-authorization-server/

***[[Azure Active Directory>Microsoft Azure Active Directory]] [#de766162]
[[この方式は、AzureADのOAuthでも利用されている模様。>Microsoft Azure Active Directory#a58c67e4]]

***参考 [#ie28f470]
-OAuth 2.0のAccess TokenへのJSON Web Token(JSON Web Signature)の適用 - r-weblife~
http://d.hatena.ne.jp/ritou/20140927/1411811648

-モバイルアプリのユーザ認証方法についてまとめてみた - Qiita~
http://qiita.com/ledmonster/items/0ee1e757af231aa927b1
--10 Things You Should Know about Tokens~
9. JSON Web Tokens can be used in OAuth: Bearer Token~
https://auth0.com/blog/ten-things-you-should-know-about-tokens-and-cookies/#token-oauth

**クライアント認証 [#pebd83d3]

***[[JWT bearer token authorizationグラント種別]] [#f5007063]
-Client Credentialsグラント種別の代替フロー
-強化されたクライアント認証を使用してaccess_tokenを取得する。

***[[JWT Secured Authorization Request (JAR)>#bdaa0ed5]] [#p48a3c8f]
JARのリクエスト署名もクライアント認証として機能する。

**認可・レスポンス署名 [#c028ff7f]
***[[JWT Secured Authorization Request (JAR)]] [#bdaa0ed5]
-認可リクエストのパラメタを[[JWT]]で送信する機能。
-これにより、許可要求の機密性、完全性が達成される。

***[[JWT Secured Authorization Response Mode for OAuth 2.0 (JARM)]] [#y2f2d599]
-認可レスポンスを[[JWT]]で送信する機能。
-これにより、許可応答の機密性、完全性が達成される。

**認可リクエストの高度化 [#o9b238a2]

***[[JWT Secured Authorization Request (JAR)>#bdaa0ed5]] [#g1d51259]
[[前述のJAR>#bdaa0ed5]]

***[[OAuth 2.0 Pushed Authorization Requests (PAR)>FAPI Part 2 (Read and Write API Security Profile)#dfcede35]] [#m63e1f26]
-ファジーな[[JAR>#g1d51259]]の、一、ユースケース。
-[[FAPI Part 2>FAPI Part 2 (Read and Write API Security Profile)]]で、実質的にPARが使用されている。

***OAuth 2.0 Rich Authorization Requests (RAR) [#k6886e2a]
複雑な JSON 構造を持つ authorization_details リクエストパラメタを追加。

***[[OpenID Connect for Identity Assurance]] [#k2204d7a]
claims リクエストパラメタ値に、複雑な JSON 構造を持つ verified_claims を挿入。

**[[OpenID Connect]] [#cd3ff39c]

----
Tags: [[:認証基盤]], [[:ASP.NET Identity]], [[:OAuth]]
Tags: [[:IT国際標準]], [[:認証基盤]], [[:ASP.NET Identity]], [[:OAuth]]


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS