「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -[[戻る>OpenID / OAuth / OpenID Connect]] * 目次 [#j5ff9e92] #contents *概要 [#sbb490d1] -[[OAuth]] / [[OpenID Connect]]の課題解決ノウハウをまとめています。 -説明を始めると、 >「単に「ユーザストアでアプリが認証する。」ということではない。」 >というトコロからの説明が必要になります。 *導入 [#m4c226b6] **要件の確認 [#n410df59] ***SSO(Single Sign-On)のサポート [#g6a5175e] -基本的に、 --[[OpenID Connect]] --[[OAuth]] 2.0のBearer Tokenの[[JWT]]化 >が必要。 -スマホ認証の場合は、[[OAuth PKCE]]が必要。 ***認証 / 認可フレームワーク [#u480f8e2] -認証 / 認可フレームワークとはなにか? -フレームワーク中で[[各登場人物>#w20e53f4]]はどのようなロールを担うか? ***(Web)APIエコノミーのサポート [#l209c71d] システム間を連携させるAPI(Application Programing Interface)を通じて、~ 既存のサービスやデータをつなぎ、新たなビジネスや価値を生み出す仕組み。 -認証連携とシステム間連系 -[[SPA、スマホへの露出>UserAgentでOAuth2のTokenを取得するベスト・プラクティス]] -管理の一元化([[API Gateway]]の導入) **4つの登場人物 [#w20e53f4] 「[[OAuth2の4つの登場人物>OAuth#zb38b595]]」についての説明が必要。 ***Resource Owner [#ue54d411] ユーザー ***Authorization Server [#x2b3bde9] 認証 / 認可の根幹となる機能を提供するプログラム。 ***Resource Server [#bf1f74a5] Authorization Serverに対応したWebAPIを提供するプログラム。 ***Client [#rd84ff2c] 上記の認証基盤を使用してWebAPIにアクセスするプログラム。 *詳細 [#wd05a75f] **クロスプラットフォーム & コンパチブル [#r3e76c2d] -オープンなプロトコルを使用しているため、~ クロスプラットフォーム対応可能であること。 -故に、4つの登場人物がプラットフォームや言語に依存せず、~ クロスプラットフォーム & コンパチブルであることが求められる。 ***Authorization Serverからの視点 [#j163495b] Authorization Server提供者は、 -様々なユーザストアに対応する必要がある。 -[[OAuth]] 2.0のBearer Tokenの[[JWT]]化が必要。 -[[OAuth]] 2.0拡張 / [[OpenID Connect]]のサポートについて検討が必要。 ***Resource Serverからの視点 [#z6ae8ab9] Resource Server提供者は、 -様々なAuthorization Serverと連携可能な提案を行う必要がある。 -従って、Tokenの検証方法を検討する必要がある --[[JWT]] -> [[JWS]]の署名検証 --[[OAuth 2.0 Token Introspection]] -上記2つをまとめて解決する、[[API Gateway]]の導入を検討しても良い。 ***Clientからの視点 [#m1423689] Client提供者は、 -使用するAuthorization Server、Resource Serverを選択する。 -この場合、サポートされるFlowやTokenのフォーマットを理解する必要がある。 **[[ASP.NET Identity]]の生の実装ダケではダメ [#o71994b3] [[ASP.NET Identity]]を使うダケで頑張れるか?と言えばそんなこともありません。 ***カスタマイズ [#g952bfed] [[ASP.NET Identity]]を覚えるダケでも、ある程度、大変ですが、~ 更に、IdP & STSは、カスタマイズが必要となるケースが多い。 ***Bearer Token [#hc89dbc7] -また、[[ASP.NET Identity]]のBearer Tokenは、[[ASP.NET Identity]]しか理解しないので、 -他のプラットフォームや言語で処理可能なように[[JWT化>JWTとOAuth2.0#k0b22c52]]が必要になってくる。 ***プロトコル [#kba6cccb] -生の[[ASP.NET Identity]]は、[[OAuth]] 2.0拡張 / [[OpenID Connect]]をサポートしない。 -このため、既定の実装では、安全な認証や、SPA、スマホへの露出ができない。 *参考 [#cb9c0a10] 説明に使用した図。~ ※ 説明しながら伝導活動の重要性を感じた次第です。 #ref(temp.png,left,nowrap,OAuth / OpenID Connectによる課題解決) ---- Tags: [[:認証基盤]], [[:クレームベース認証]], [[:OAuth]]