Open棟梁Project - マイクロソフト系技術情報 Wiki
OAuthのクレームベース認証のEndpoint追加をサポートしており、
これにより、Java、JavaScript、Perl、PHP、Python、Rubyなどの
「非 .NET 環境」と認証処理を連携させることもできる。
この処理は、ASP.NET SPAテンプレートの以下のEndpointに実装されている。
Install-Package Microsoft.AspNet.WebApi Install-Package Microsoft.AspNet.WebApi.Owin Install-Package Microsoft.AspNet.WebApi.Cors
http://localhost:XXXX/Token Endpointのシナリオを検証する。
http://localhost:XXXX/Account/Authorize Endpointのシナリオを検証する。
以下のブログの内容を参考に検証を行うことができる。
ここでは、以下のような前提の検証用アプリケーションを構築する。
+--------+ +----------------+ | 非 |--(A)- Authorization Request ->| ASP.NET | | . | | Identity | | N |<-(B)----- Bearer Token -------| | | E | | | | T |--(C)----- Bearer Token ------>| | +-----------+ | 環 | | |---| UserStore | | 境 |<-(D)--- Protected Resource ---| | +-----------+ +--------+ +----------------+
- (A) Authorization処理 と Bearer Token発行のEndpointへRequestする。
- (B) 認証処理後、内部ではClaimsIdentity?を生成してSign-inされ、Bearer TokenがResponseされる。
- (C) Bearer Tokenを持って、Resources用のEndpointにRequestする。
- (D) Resources用のEndpointからClaim等のリソースがResponseされる。
コードの提示はGithub登録まで待ってください。
ここの検証では、cURLコマンドを使用するため開発不要。
cURLコマンドを使用して認証連携の動作を検証する。
/Token Endpointに対して以下のRequestを出すと、Bearer Tokenが返ってくる。
ここでは、
ここでは、以下のような前提の検証用アプリケーションを構築する。
+--------+ +----------------+ | |--(A)- Authorization Request ->| | | | | | | |<-(B)-- Authorization Grant ---| | | | | | | 非 | | | | . | | | | N |--(C)-- Authorization Grant -->| ASP.NET | | E | | Identity | | T |<-(D)----- Bearer Token -------| Token認証機能 | | 環 | | | | 境 | | | | | | | | |--(E)----- Bearer Token ------>| | | | | | +-----------+ | |<-(F)--- Protected Resource ---| |---| UserStore | +--------+ +----------------+ +-----------+
- (A) 認証サイトのForms認証機構へRequestする。
- (B) 発行されたCookie認証チェットのResponseされる。
- (C) Cookie認証チェットを持って、OAuth用のEndpointにRequestする。
既に認証されているので、内部ではClaimsIdentity?を生成してSign-inされる。
すると、OAuthProvider?がBearer Token用のEndpointにRedirectされる。- (D) Bearer Token用のEndpointからBearer TokenがResponseされる。
- (E) Bearer Tokenを持って、Resources用のEndpointにRequestする。
- (F) Resources用のEndpointからClaim等のリソースがResponseされる。
コードの提示はGithub登録まで待ってください。
Providersフォルダを作成し、OAuthのProviderであるApplicationOAuthProvider?を追加する。
前述のApplicationOAuthProvider?をOAuthのProviderとして登録する。
Authorizeメソッドで認証を行なう。
Authorizeメソッドで認証した後、
Authorizeメソッド実行後にRedirectされる先のAction MethodとViewを準備する。
App_Startフォルダに、ASP.NET Web APIの設定を行うためのWebApiConfig?.csを追加する。
Global.asax.csのApplication_Startメソッドで、定義したWebApiConfig?の設定を登録。
Models フォルダに、Claimを返すためのOAuthClaimViewModel?.csを追加する。
Controller フォルダに、Claimを返すためのOAuthResourceController?.csを追加する。
ここに、Claim等のOAuthのResourcesを返すためのASP.NET Web APIのメソッドを追加する。
JavaScriptとして実装する。
次のURLでアクセスする。
http://localhost/Account/Authorize?client_id=self&response_type=token
+--------+ +---------------+ | |--(A)- Authorization Request ->| Resource | | | | Owner | | |<-(B)-- Authorization Grant ---| | | | +---------------+ | | | | +---------------+ | |--(C)-- Authorization Grant -->| Authorization | | Client | | Server | | |<-(D)----- Access Token -------| | | | +---------------+ | | | | +---------------+ | |--(E)----- Access Token ------>| Resource | | | | Server | | |<-(F)--- Protected Resource ---| | +--------+ +---------------+
ASP.NET Identityによる認証サイト
= 上記図中のResource Owner, Authorization Server, Resource Serverに該当する。
Tags: :ASP.NET, :ASP.NET MVC, :ASP.NET SPA, ASP.NET Web API, :ASP.NET Identity
Special thanks go to mg-san for his support.