「[[Open棟梁 wiki>https://opentouryo.osscons.jp]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-戻る
--[[Github上の成果物]]
--[[機能一覧]] > [[対応する処理方式と、そのサンプル>機能一覧 - 対応する処理方式と、そのサンプル]]
--[[アプリケーション設計のポイント]]

*目次 [#k79ad689]
#contents

*概要 [#k9a12c13]

**リポジトリ [#c5e3e152]
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/

**[[ファーストステップ>汎用認証サイトのファーストステップガイド]] [#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 の 2 flowをサポート [#jd0d37fb]
OAuth2.0の
-Authorization Codeグラント種別
-Implicitグラント種別

を、OpenID Connectの
-Authorization Code Flow (response_type=code)
-Implicit Flow (response_type=id_token token, id_token)

に拡張した。

***OpenID Connect 拡張方法 [#wa3a07b8]
OAuth 2.0 Serverと、HTTPModuleの書き換え機能によりOpenID Connectをサポートしている。

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

*[[独自仕様部分の説明>汎用認証サイトの独自仕様]] [#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 として利用可能。

*参考 [#tbd2d6ef]

**[[汎用認証サイトのFAQ]] [#zff81a14]

**[[汎用認証サイトの独自仕様]] [#gf66e714]

**[[汎用認証サイトの動作検証]] [#ab1b5691]

**[[汎用認証サイトのコンフィギュレーション]] [#eb4ea0ac]

**[[汎用認証サイトのファーストステップガイド]] [#x08a1fe9]

**OAuth 2.0, OpenID ConnectのParameterとFlowの関係 [#d07fe545]
&ref(OAuth_And_OIDC.xlsx);
#ref(OAuth_And_OIDC.png,left,nowrap,OAuth_And_OIDC.png)

***OAuth 2.0 [#s4b720c9]
フルサポート。

***OpenID Connect [#jdd4f796]
--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拡張 [#z9f113a4]

-[[OAuth PKCE>https://techinfoofmicrosofttech.osscons.jp/index.php?OAuth%20PKCE]]

-[[OAuth 2.0 Token Introspection>https://techinfoofmicrosofttech.osscons.jp/index.php?OAuth%202.0%20Token%20Introspection]]

-[[OAuth 2.0 Token Revocation>https://techinfoofmicrosofttech.osscons.jp/index.php?OAuth%202.0%20Token%20Revocation]]

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

IP:202.246.252.97 TIME:"2018-12-21 (金) 13:44:37" REFERER:"https://opentouryo.osscons.jp/index.php?cmd=edit&page=%E6%B1%8E%E7%94%A8%E8%AA%8D%E8%A8%BC%E3%82%B5%E3%82%A4%E3%83%88%EF%BC%88Multi-purpose%20Authentication%20Site%EF%BC%89" USER_AGENT:"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS