「[[Open棟梁 wiki>https://opentouryo.osscons.jp]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -戻る --[[Github上の成果物]] --[[アプリケーション設計のポイント]] *目次 [#k79ad689] #contents *概要 [#k9a12c13] 汎用認証サイトは、 -[[ASP.NET Identity>https://techinfoofmicrosofttech.osscons.jp/index.php?ASP.NET%20Identity]] -[[ASP.NET Core Identity>https://techinfoofmicrosofttech.osscons.jp/index.php?ASP.NET%20Core%20Identity]] ベースのIdP / STS。 **ターゲット&ポジション [#k1f08807] STPにおけるターゲット&ポジション -Webサービス向きの認証機能(IdP) --サインアップさせる必要がある。 --画面や機能のカスタマイズが多い。 -STS機能 --フェデレーション機能を持つ。 --クライアント機能とサーバー機能 -Webサービス向き~ 組織アカウント向けでも利用可能だが、その場合、~ 組織アカウント用の専用ソリューションがオススメ。 **[[リポジトリ>https://github.com/OpenTouryoProject/MultiPurposeAuthSite/]] [#c5e3e152] **[[ファーストステップ>汎用認証サイトのファーストステップガイド]] [#ye3a6c02] *機能 [#f4c6e363] -インターネット環境でも安全に利用可能な認証基盤 -認証フレームワークに[[ASP.NET Identity>https://techinfoofmicrosofttech.osscons.jp/index.php?ASP.NET%20Identity]]を採用 **インターネット向けIdP機能 [#v9c059b1] ***サインアップ [#q9032516] ***サインイン・サインアウト [#abb57db0] ***E-mailアドレス確認 [#j00577dc] E-mailアドレスの確認(E-mail confirmation) ***パスワード・リセット [#v4faf7a9] ***アカウント・ロックアウト [#tbc0969e] ***SecurityStamp [#v14a6a69] アカウント編集時、他のSessionを自動的にサインアウトさせるSecurityStamp ***2要素認証 [#u2925d4e] E-mailやSMSを使用した2要素認証(Two-factor authentication) ***外部ログイン [#pd421fad] 外部Idp & STSサービスを使用した、外部ログイン(External login, Social login) ***生体認証の追加 [#x87dd51c] [[FIDO2.0>汎用認証サイトの独自仕様#a4e5d429]]を参照。 **OAuth 2.0 + JWTのSSO可能な拡張STS機能 [#r17c5ca5] [[汎用認証サイト(Multi-purpose Authentication Site)]]に実装された「OAuth 2.0 Server」機能を使用して、~ OpenID ConnectのIDトークン(JWTアサーション)形式のBearer Tokenを発行することで、~ シングル・サインオン(SSO)やアプリケーション連携を実現する。 ***OAuth 2.0 の 4 flowをサポート [#j294c1d5] -Authorization Codeグラント種別 -Implicitグラント種別 -Resource Owner Password Credentialsグラント種別 -Client Credentialsグラント種別 ***Bearer TokenにIDトークン・ライクなJWTアサーションを使用 [#b49443fe] -JWT検証ライブラリの準備。 -ここで発行したJWT形式のBearer Tokenを[[jwt.io>https://jwt.io/]]でも検証可能であり、~ これにより、さまざまなプラットフォーム上のアプリケーションをサポートできる。 **OpenID ConnectのSSO可能な拡張STS機能 [#r17c5ca5] ***OpenID Connect の 3 flowをサポート [#jd0d37fb] OAuth2.0の -Authorization Codeグラント種別 -Implicitグラント種別 を、OpenID Connectの -[[Authorization Code Flow>https://techinfoofmicrosofttech.osscons.jp/index.php?OpenID%20Connect#mcde509a]] -[[Implicit Flow>https://techinfoofmicrosofttech.osscons.jp/index.php?OpenID%20Connect#e7adf5c2]] に拡張した。 また、[[Hybrid Flow>https://techinfoofmicrosofttech.osscons.jp/index.php?OpenID%20Connect#l565139a]] もサポートした。 ***OpenID Connect 拡張方法 [#wa3a07b8] OAuth 2.0 Serverと、HTTPModuleの書き換え機能によりOpenID Connectをサポートしている。 -AccessTokenに使用するJWTアサーションを編集してID Token化している。 -なので、AccessTokenフォーマットはJWTのモードで動かす必要がある。 ***STSスクラッチ実装によるOIDCフルサポート [#q40f0d23] 前述の、[[OpenID Connect 拡張方法>#wa3a07b8]]を廃止し、[[STSスクラッチ実装>https://techinfoofmicrosofttech.osscons.jp/index.php?ASP.NET%20Identity%20%E3%81%AE%20Community%20STS]]で制限事項を解消した。 *[[独自仕様部分の説明>汎用認証サイトの独自仕様]] [#i0d4f1cc] **[[Idp仕様>汎用認証サイトの独自仕様#f550c2de]] [#ed92dc10] -認証用のデータストアと認証機能のセットを提供する。 -インターネット向け認証は、イントラネット向け認証と異なり、~ [[非常に多くの機能が必要になる>https://techinfoofmicrosofttech.osscons.jp/index.php?ASP.NET%20Identity#l1b690dc]](ASP.NET Identityの機能を利用する)。 **[[外部ログイン仕様>汎用認証サイトの独自仕様#w534c815]] [#v17d08eb] -別名、ソーシャル・ログイン。 -「Facebookでログイン」が一般的。 **セキュアトークンサービス(STS)機能 [#fa0a3c47] ***[[OAuth 2.0 Server仕様>汎用認証サイトの独自仕様#td27d2c1]] [#z9445fef] OAuth 2.0は、通常、アプリケーション間連携(認可)に使用するが、~ JWTを使用することでシングル・サインオン(認証)にも使用できる。 ***[[OpenID Connect Server仕様>汎用認証サイトの独自仕様#t9212783]] [#t0f47c7d] ***STS専用モード [#r9857738] [[こちらの設定>汎用認証サイトのファーストステップガイド (5)]]を行うことで、~ 既存のユーザストアに接続してSTS専用モードとして動作させることができる。 *[[動作検証手順の説明>汎用認証サイトの動作検証]] [#sdf20ba9] **[[Idp動作検証>汎用認証サイトの動作検証#z524bb24]] [#x5dd96bb] **[[外部ログイン動作検証>汎用認証サイトの動作検証#x929aa7a]] [#a9787847] **セキュアトークンサービス(STS)機能 [#ydc7f2d0] ***[[OAuth 2.0 Server動作検証>汎用認証サイトの動作検証#o226b9a8]] [#wc364aac] ***[[OpenID Connect Server動作検証>汎用認証サイトの動作検証#o226b9a8]] [#e3041172] ***STS専用モード [#r9857738] [[こちらの設定>汎用認証サイトのファーストステップガイド (5)]]を行うことで、~ 既存のユーザストアに接続したSTS専用モードの動作ができる。 *外部サービス [#ce8626ae] **[[外部ログイン>https://techinfoofmicrosofttech.osscons.jp/index.php?ASP.NET%20Identity%E3%81%AE%E5%A4%96%E9%83%A8%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3#j7ec63cb]] [#ie8c4d4d] Microsoft, Google, Facebook, Twitter, etc. **[[オンライン決済サービス>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?%E3%82%AA%E3%83%B3%E3%83%A9%E3%82%A4%E3%83%B3%E6%B1%BA%E6%B8%88%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9]] [#qf3fddd8] Stripe、PAY.JPなど、オンラインで処理可能な「カード決済」などを行なう。 **[[通知プロバイダ>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?%E9%80%9A%E7%9F%A5%E3%83%97%E3%83%AD%E3%83%90%E3%82%A4%E3%83%80]] [#j3aea225] 「メール送信」や「SMS送信」がある。 *メモ [#ge1cb21b] **[[SecurityStamp>https://techinfoofmicrosofttech.osscons.jp/index.php?ASP.NET%20Identity#obd1b0ed]] [#sc81e3cf] 詳しくは[[コチラ>https://techinfoofmicrosofttech.osscons.jp/index.php?ASP.NET%20Identity#obd1b0ed]]を参照。 **[[外部ログイン>https://techinfoofmicrosofttech.osscons.jp/index.php?ASP.NET%20Identity%E3%81%AE%E5%A4%96%E9%83%A8%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3]] [#x86be174] -[[クレームベース認証>https://techinfoofmicrosofttech.osscons.jp/index.php?%E3%82%AF%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%99%E3%83%BC%E3%82%B9%E8%AA%8D%E8%A8%BC]] による認証・認可の仕組みを使用する。 -詳しくは以下を参照のこと。 --[[OAuth - マイクロソフト系技術情報 Wiki>https://techinfoofmicrosofttech.osscons.jp/index.php?OAuth]] --[[ASP.NET Identityの外部ログイン - マイクロソフト系技術情報 Wiki>https://techinfoofmicrosofttech.osscons.jp/index.php?ASP.NET%20Identity%E3%81%AE%E5%A4%96%E9%83%A8%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3]]を参照。 **[[セキュアトークンサービス(STS)>https://techinfoofmicrosofttech.osscons.jp/index.php?ASP.NET%20Identity%E3%81%AB%E3%82%88%E3%82%8BSTS%E5%AE%9F%E8%A3%85]] [#cf98a3ef] -[[クレームベース認証>https://techinfoofmicrosofttech.osscons.jp/index.php?%E3%82%AF%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%99%E3%83%BC%E3%82%B9%E8%AA%8D%E8%A8%BC]] による認証・認可の仕組みを提供する。 -詳しくは以下を参照のこと。 --[[OAuth - マイクロソフト系技術情報 Wiki>https://techinfoofmicrosofttech.osscons.jp/index.php?OAuth]] --[[ASP.NET IdentityによるSTS実装 - マイクロソフト系技術情報 Wiki>https://techinfoofmicrosofttech.osscons.jp/index.php?ASP.NET%20Identity%E3%81%AB%E3%82%88%E3%82%8BSTS%E5%AE%9F%E8%A3%85]]を参照。 **負荷分散クラスタ環境化での稼働実績 [#ib3a5a48] 実績、あります。 -基本的に、[[ユーザを1つの物理ノードにルーティングするモード>https://techinfoofmicrosofttech.osscons.jp/index.php?NLB#i56f376b]]で動作させて下さい。 -上記が不可能な場合、以下の設定が必須になります。 --認証チケットをクラスタノード間で共有するために、machine keyを一致させる。 --Sessionをクラスタノード間で共有するために、以下の何れかのモードを使用しSessionのクラスタ対応を行う。 ---StateServer ---SQLServer ---Custom >※ ただし、cookie persistenceの持続する時間によるので、~ ユーザを1つの物理ノードにルーティングできる場合も、基本的に設定した方が良い。 **他サイトとの認証チケットの共有 [#z394b083] ***.NET [#pe0a9346] [[ASP.NET Identity>https://techinfoofmicrosofttech.osscons.jp/index.php?ASP.NET%20Identity]]を使用して共有できる(データストアは共有する)。 ***その他 [#h75cd3ef] 前述の「[[セキュアトークンサービス(STS)>#cf98a3ef]]」を使用する。 -OAuth 2.0, OpenID ConnectのIdP+STSを使用して、SSOする。 -JWTを使用すればクロスプラットフォームな (Bearer) Token として利用可能。 *サポート状況 [#u111c780] https://github.com/OpenTouryoProject/MultiPurposeAuthSite/issues/94#issuecomment-463061867 **[[OAuth 2.0>https://techinfoofmicrosofttech.osscons.jp/index.php?OAuth]] [#s4b720c9] フルサポート **[[OpenID Connect>https://techinfoofmicrosofttech.osscons.jp/index.php?OpenID%20Connect]] [#jdd4f796] 基本的な機能をサポート **[[Financial API (FAPI)>https://techinfoofmicrosofttech.osscons.jp/index.php?Financial%20API%20%28FAPI%29#l4147461]] [#l1a314b6] ***[[FAPI Part 1>https://techinfoofmicrosofttech.osscons.jp/index.php?FAPI%20Part%201%20%28Read%20Only%20API%20Security%20Profile%29]] [#nd0cb6ab] フルサポート ***[[FAPI Part 2>https://techinfoofmicrosofttech.osscons.jp/index.php?FAPI%20Part%202%20%28Read%20and%20Write%20API%20Security%20Profile%29]] [#qbe14ad2] 未サポート **OAuth2拡張 [#z9f113a4] ***[[OAuth PKCE>https://techinfoofmicrosofttech.osscons.jp/index.php?OAuth%20PKCE]] [#a92070dd] ***[[OAuth 2.0 Token Introspection>https://techinfoofmicrosofttech.osscons.jp/index.php?OAuth%202.0%20Token%20Introspection]] [#r02d792d] ***[[OAuth 2.0 Token Revocation>https://techinfoofmicrosofttech.osscons.jp/index.php?OAuth%202.0%20Token%20Revocation]] [#v17657b0] ***[[JWT bearer token authorizationグラント種別>https://techinfoofmicrosofttech.osscons.jp/index.php?JWT%20bearer%20token%20authorization%E3%82%B0%E3%83%A9%E3%83%B3%E3%83%88%E7%A8%AE%E5%88%A5]] [#r038cb10] *参考 [#tbd2d6ef] **[[FAQ>汎用認証サイトのFAQ]] [#zff81a14] **[[独自仕様>汎用認証サイトの独自仕様]] [#gf66e714] **[[動作検証>汎用認証サイトの動作検証]] [#ab1b5691] **[[コンフィギュレーション>汎用認証サイトのコンフィギュレーション]] [#eb4ea0ac] **[[ファーストステップガイド>汎用認証サイトのファーストステップガイド]] [#x08a1fe9] **OSSコンソーシアム [#xf876464] ***OAuth2 / OIDC / SAML2 / FAPI [#j9845bd5] -OAuth2 / OpenID Connect課題解決 備忘録 --1:https://www.osscons.jp/joab17h5n-537/ --2:https://www.osscons.jp/joyyxnads-537/ --3:https://www.osscons.jp/jouqhleqc-537/ --4:https://www.osscons.jp/jozpnvi15-537/ --5:https://www.osscons.jp/joq7suwpb-537/ --6:https://www.osscons.jp/jovzty1xk-537/ -PKCE --オレオレPKCE実装とマイクロサービスやクラウドネイティブ開発の浸透~ https://www.osscons.jp/jom4szpyu-537/ --PKCEのトークンリクエストはフロントエンドから?バックエンドから? ---①:https://www.osscons.jp/jorfs4g6d-537/ ---②:https://www.osscons.jp/joxql6yjz-537/ -話題になったIdP/Stsの実装パターン、~ ASP.NET Identityが結構、参考になる。~ https://www.osscons.jp/jos8ktrsk-537/ -結構あるYO!自分でプログラムを組まないとイケナイCASE。~ https://www.osscons.jp/jojlmn5kq-537/ ***エンハンス情報 [#o4ba2456] -汎用認証サイトのミドルウェア化計画~ https://www.osscons.jp/jokhhbsp2-537 -.NETの暗号ライブラリが進化している件について。~ https://www.osscons.jp/jo0xhcron-537 -JWS (ES256)、JWE (RSAES-OAEP and AES GCM)の実装が完了しました。~ https://www.osscons.jp/joirtdyb5-537 -ASP.NET Core化 --汎用認証サイトのASP.NET Core化について~ https://www.osscons.jp/jorgwf57r-537 ---汎用認証サイト ASP.NET Core版の実装が完了しました。~ https://www.osscons.jp/jo4cm3lif-537 -SAML2 --汎用認証サイトにSAML2を実装する準備が完了した。~ https://www.osscons.jp/jo0welfb9-537/ --汎用認証サイトにSAML2を大方実装しました~ ---(1):https://www.osscons.jp/josyb03ia-537/ ---(2):https://www.osscons.jp/jo1tvxoud-537/ --汎用認証サイトのSAML2連携テスト、.NET Core版へのマージが完了。~ https://www.osscons.jp/jo021eogb-537/ -FAPI --Financial API Part 1 (Read Only API Security Profile) をサポートした話。~ https://www.osscons.jp/jo4uzqs3i-537/ --汎用認証サイトにFAPI2のConfidential Client対応を追加した話。~ https://www.osscons.jp/jodn3d9cs-537/ --OAuth2/OIDC/FAPI2関連仕様、JAR、JARMを汎用認証サイトに実装しました。~ https://www.osscons.jp/jo21dkox6-537/ -FIDO 2.0 WebAuthn --Security Key by YubicoというFIDO2.0認証器を評価する ---(1):https://www.osscons.jp/jogiz4cps-537/ ---(2):https://www.osscons.jp/joi5xu2en-537/ ---(3):https://www.osscons.jp/joa13f6lr-537/ --Open棟梁 汎用認証サイト】FIDO 2.0 WebAuthnを正式サポートしました。~ https://www.osscons.jp/jod1zzlht-537