Open棟梁 wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

リポジトリ

https://github.com/OpenTouryoProject/MultiPurposeAuthSite/

ファーストステップ

機能

  • インターネット環境でも安全に利用可能な認証基盤
  • 認証フレームワークにASP.NET Identityを採用

インターネット向け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を参照。

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 の 3 flowをサポート

OAuth2.0の

  • Authorization Codeグラント種別
  • Implicitグラント種別

を、OpenID Connectの

に拡張した。

また、Hybrid Flow もサポートした。

OpenID Connect 拡張方法

OAuth 2.0 Serverと、HTTPModuleの書き換え機能によりOpenID Connectをサポートしている。

  • AccessToken?に使用するJWTアサーションを編集してID Token化している。
  • なので、AccessToken?フォーマットはJWTのモードで動かす必要がある。

STSスクラッチ実装によるOIDCフルサポート

前述の、OpenID Connect 拡張方法を廃止し、STSスクラッチ実装で制限事項を解消した。

独自仕様部分の説明

Idp仕様

  • 認証用のデータストアと認証機能のセットを提供する。
  • インターネット向け認証は、イントラネット向け認証と異なり、
    非常に多くの機能が必要になる(ASP.NET Identityの機能を利用する)。

外部ログイン仕様

  • 別名、ソーシャル・ログイン。
  • 「Facebookでログイン」が一般的。

セキュアトークンサービス(STS)機能

OAuth 2.0 Server仕様

OAuth 2.0は、通常、アプリケーション間連携(認可)に使用するが、
JWTを使用することでシングル・サインオン(認証)にも使用できる。

OpenID Connect Server仕様

STS専用モード

こちらの設定を行うことで、
既存のユーザストアに接続してSTS専用モードとして動作させることができる。

動作検証手順の説明

Idp動作検証

外部ログイン動作検証

セキュアトークンサービス(STS)機能

OAuth 2.0 Server動作検証

OpenID Connect Server動作検証

STS専用モード

こちらの設定を行うことで、
既存のユーザストアに接続したSTS専用モードの動作ができる。

外部サービス

外部ログイン

Microsoft, Google, Facebook, Twitter, etc.

オンライン決済サービス

Stripe、PAY.JPなど、オンラインで処理可能な「カード決済」などを行なう。

通知プロバイダ

「メール送信」や「SMS送信」がある。

メモ

SecurityStamp

詳しくはコチラを参照。

外部ログイン

  • 詳しくは以下を参照のこと。

セキュアトークンサービス(STS)

  • 詳しくは以下を参照のこと。

負荷分散クラスタ環境化での稼働実績

実績、あります。

  • 上記が不可能な場合、以下の設定が必須になります。
    • 認証チケットをクラスタノード間で共有するために、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 として利用可能。

サポート状況

https://github.com/OpenTouryoProject/MultiPurposeAuthSite/issues/94#issuecomment-463061867

OAuth 2.0

フルサポート

OpenID Connect

基本的な機能をサポート

Financial API (FAPI)

FAPI Part 1

フルサポート

FAPI Part 2

未サポート

OAuth2拡張

OAuth PKCE

OAuth 2.0 Token Introspection

OAuth 2.0 Token Revocation

JWT bearer token authorizationグラント種別

参考

汎用認証サイトのFAQ

汎用認証サイトの独自仕様

汎用認証サイトの動作検証

汎用認証サイトのコンフィギュレーション

汎用認証サイトのファーストステップガイド

OSSコンソーシアム

OAuth2 / OIDC / SAML2 / FAPI

エンハンス情報

  • FIDO 2.0 WebAuthn?

添付ファイル: fileOAuth_And_OIDC.xlsx 76件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-08-02 (金) 14:25:27 (18d)