「Open棟梁 wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
リポジトリ †
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/
機能 †
インターネット向けIdP機能 †
サインアップ †
サインイン・サインアウト †
E-mailアドレス確認 †
E-mailアドレスの確認(E-mail confirmation)
パスワード・リセット †
アカウント・ロックアウト †
SecurityStamp? †
アカウント編集時、他のSessionを自動的にサインアウトさせるSecurityStamp?
2要素認証 †
E-mailやSMSを使用した2要素認証(Two-factor authentication)
外部ログイン †
外部Idp & STSサービスを使用した、外部ログイン(External login, Social login)
生体認証の追加 †
FIDO2.0(Web Authentication API)対応の生体認証
OAuth 2.0 + JWTのSSO可能な拡張STS機能 †
汎用認証サイト(Multi-purpose Authentication Site)に実装された「OAuth 2.0 Server」機能を使用して、
OpenID ConnectのIDトークン(JWTアサーション)形式のBearer Tokenを発行することで、
シングル・サインオン(SSO)やアプリケーション連携を実現する。
OAuth 2.0 の 4 flowをサポート †
- Authorization Codeグラント種別
- Implicitグラント種別
- Resource Owner Password Credentialsグラント種別
- Client Credentialsグラント種別
Bearer TokenにIDトークン・ライクなJWTアサーションを使用 †
- JWT検証ライブラリの準備。
- ここで発行したJWT形式のBearer Tokenをjwt.ioでも検証可能であり、
これにより、さまざまなプラットフォーム上のアプリケーションをサポートできる。
OpenID ConnectのSSO可能な拡張STS機能 †
OpenID Connect の 2 flowをサポート †
OAuth2.0の
- Authorization Codeグラント種別
- Implicitグラント種別
を、OpenID Connectの
- Authorization Code Flow (response_type=code)
- Implicit Flow (response_type=id_token token, id_token)
に拡張した。
OpenID Connect 拡張方法 †
OAuth 2.0 Serverと、HTTPModuleの書き換え機能によりOpenID Connectをサポートしている。
- AccessToken?に使用するJWTアサーションを編集してID Token化している。
- なので、AccessToken?フォーマットはJWTのモードで動かす必要がある。
- 認証用のデータストアと認証機能のセットを提供する。
- インターネット向け認証は、イントラネット向け認証と異なり、
非常に多くの機能が必要になる(ASP.NET Identityの機能を利用する)。
- 別名、ソーシャル・ログイン。
- 「Facebookでログイン」が一般的。
セキュアトークンサービス(STS)機能 †
OAuth 2.0は、通常、アプリケーション間連携(認可)に使用するが、
JWTを使用することでシングル・サインオン(認証)にも使用できる。
STS専用モード †
こちらの設定を行うことで、
既存のユーザストアに接続してSTS専用モードとして動作させることができる。
セキュアトークンサービス(STS)機能 †
STS専用モード †
こちらの設定を行うことで、
既存のユーザストアに接続したSTS専用モードの動作ができる。
外部サービス †
Microsoft, Google, Facebook, Twitter, etc.
オンラインで処理可能な「カード決済」などを行なう。
「メール送信」や「SMS送信」がある。
メモ †
詳しくはコチラを参照。
負荷分散クラスタ環境化での稼働実績 †
実績、あります。
- 上記が不可能な場合、以下の設定が必須になります。
- 認証チケットをクラスタノード間で共有するために、machine keyを一致させる。
- Sessionをクラスタノード間で共有するために、以下の何れかのモードを使用しSessionのクラスタ対応を行う。
- StateServer?
- SQLServer
- Custom
※ ただし、cookie persistenceの持続する時間によるので、
ユーザを1つの物理ノードにルーティングできる場合も、基本的に設定した方が良い。
他サイトとの認証チケットの共有 †
.NET †
ASP.NET Identityを使用して共有できる(データストアは共有する)。
その他 †
前述の「セキュアトークンサービス(STS)」を使用する。
- OAuth 2.0, OpenID ConnectのIdP+STSを使用して、SSOする。
- JWTを使用すればクロスプラットフォームな (Bearer) Token として利用可能。
参考 †
OAuth 2.0, OpenID ConnectのParameterとFlowの関係 †
OAuth_And_OIDC.xlsx
#ref(): File not found: "OAuth_And_OIDC.png" at page "汎用認証サイト(Multi-purpose Authentication Site)"
OAuth 2.0 †
フルサポート。
OpenID Connect †
- AuthenticateCode?系
response_type="code"はフルサポート
- Implicit系
- response_type="id_token token"のみサポート。
- ASP.NET Identityの制約なので、認可エンドポイントを変更し、
ASP.NET Identityをバイパスしてスクラッチ実装すれば、response_type="id_token" 対応は可能。
- Hybrid系
response_type="code xxxx"はフルサポート
- Implicit、Hybrid系
response_modeは、指定無し(default)のみ(fragment相当)。
OAuth2拡張 †