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 の 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のモードで動かす必要がある。

独自仕様部分の説明

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 として利用可能。

参考

汎用認証サイトのFAQ

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

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

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

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

OAuth 2.0, OpenID ConnectのParameterとFlowの関係

fileOAuth_And_OIDC.xlsx

OAuth_And_OIDC.png

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拡張


添付ファイル: fileOAuth_And_OIDC.png 60件 [詳細] fileOAuth_And_OIDC.xlsx 38件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-10-05 (金) 19:15:34 (70d)