「[[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]

**OSSC > 開発基盤部会 Blog [#xf876464]

***[[OAuth2 / OIDC / FAPI>https://techinfoofmicrosofttech.osscons.jp/index.php?OAuth%20%2F%20OpenID%20Connect%E3%81%AB%E3%82%88%E3%82%8B%E8%AA%B2%E9%A1%8C%E8%A7%A3%E6%B1%BA#n4dc7596]] [#j9845bd5]

***エンハンス情報 [#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

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS