「マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
ASP.NET Identityの、OAuth 2.0によるセキュアトークンサービス(STS)のEndpoint追加実装。
準備 †
OAuth2.0 Server、Client共に以下からダウンロード可能。
このサンプルは、VS2013・2015で、そのままF5実行可能で非常に便利。
検証 †
ダウンロードしたサンプルを使用して、以下のシナリオの検証ができる。
ASP.NET IdentityでOAuth2のRFCに追加されている仕様 †
RFCに規定のない認証の仕掛け †
- 認証には、(基本的に、)ASP.NET Identityを使用する。
- Bearer Tokenの発行には、ClaimsIdentity?を使用する。
- ASP.NET MVCアプリケーションの認可エンドポイント上
- Cookie認証チケットからClaimsIdentity?を生成できる。
AuthenticateResult ticket = this.AuthenticationManager.AuthenticateAsync(DefaultAuthenticationTypes.ApplicationCookie).Result;
ClaimsIdentity identity = (ticket != null) ? ticket.Identity : null;
- 以下の方法でTokenを発行する。
「Authorization Codeグラント種別」では仲介トークンを、
「Implicitグラント種別」ではAccess Tokenを生成する。
this.AuthenticationManager.SignIn(identity);
- OAuthAuthorizationServerProvider?のTokenエンドポイント上
参考(サービス / ミドルウェア毎の仕様の違い) †
「技術文書中での Shall / Should / May」があるため、
サービス / ミドルウェア毎に仕様は異なってくる。以下が参考になる。
やはり、サービスによって扱いがマチマチなのは、
redirect_uriパラメタとstateパラメタであるもよう。
Bearer Tokenを暗号化・復号化する秘密鍵 †
- 認可サーバ(Authorization Server)とリソースサーバ(Resource Server)が同じマシン上に無い場合、
Bearer Tokenを暗号化・復号化する秘密鍵を双方のマシン間で一致させる必要がある。
machineKeyセクションの生成には、以下のツールが使えそう。
参考 †
The ASP.NET Site †
このコンテンツは以下の様な構成になっている。
Download the sample code. †
以下から、サンプル・コードをダウンロードできる。
http://code.msdn.microsoft.com/OWIN-OAuth-20-Authorization-ba2b8783/file/114932/1/AuthorizationServer.zip
Create an Authorization Server. †
- このAuthorization ServerはOAuthの4つのフローをサポートしている。
- Authorization Code Grant Client
- Implicit Grant Client
- Resource Owner Password Credentials Grant Client
- Client Credentials Grant Client
- OAuthAuthorizationServerProvider?の実装
- ValidateClientRedirectUri?
(Authorization Code, Implicitグラント種別)
- ValidateClientAuthentication?
(Resource Owner Password Credentials, Client Credentialsグラント種別)
- GrantResourceOwnerCredentials?
(Resource Owner Password Credentialsグラント種別)
- GrantClientCredetails?
(Client Credentialsグラント種別)
- AuthorizeEndpoint?の実装
(Authorization Code, Implicitグラント種別)
Creating a Resource Server. †
アクセストークンによって保護されたResource ServerのEndpointを作成。
Create OAuth 2.0 Clients. †
.NETクライアント・アプリからHTTPアクセスする際のライブラリとしては、DotNetOpenAuth.OAuth2を使用している。
- Authorization Code Grant Client
WebApplication?として実装。
- Resource Owner Password Credentials Grant Client
コンソール・アプリケーションで実装。
- Client Credentials Grant Client
コンソール・アプリケーションで実装。
関連する情報 †
その他のサイト †
実装方法の調査で参照にしたサイト。
Tags: :.NET開発, :ASP.NET, :ASP.NET MVC, :ASP.NET SPA, ASP.NET Web API, :ASP.NET Identity, :OAuth, :認証基盤, :セキュリティ