Open棟梁Project - マイクロソフト系技術情報 Wiki

目次

概要

ASP.NET Identityは、以下のクレームベース認証のセキュアトークンサービス(STS)のEndpoint追加をサポートしている。

プロトコル

OAuth 2.0

URLは変更可能。上記は既定値。

OpenID Connect

OpenID Connectのセキュアトークンサービス(STS)のEndpoint追加は、現時点(2016年)では提供されていない。

認証サイト

構成

準備

  1. Visual Studio 2015 で、新規 ASP.NET Web アプリケーションを作成する。
  2. 「新しい ASP.NET プロジェクト」ダイアログで、以下を選択する。
    • テンプレート: ASP.NET MVC
    • 認証の変更: 個別のユーザー アカウント
  3. Visual Studio の「パッケージ マネージャー コンソール」で、以下のコマンドを実行する。
    Install-Package Microsoft.AspNet.WebApi
    Install-Package Microsoft.AspNet.WebApi.Owin
    Install-Package Microsoft.AspNet.WebApi.Cors

連携サイト(, システム, アプリ)

cURLコマンド

http://localhost:XXXX/Token Endpointのシナリオを検証する。

JavaScript

http://localhost:XXXX/Account/Authorize Endpointのシナリオを検証する。

/Token Endpointの検証手順

以下のブログの内容を参考に、

のシナリオの検証を行うことができる。

前提

認証サイト開発

コードの提示はGithub登録まで待ってください。

Web アプリ開発

ここの検証では、cURLコマンドを使用するため開発不要。

認証連携の動作検証

cURLコマンドを使用して認証連携の動作を検証する。

Resource Owner Password Credentialsグラント種別

Client Credentialsグラント種別

/Account/Authorize Endpointの検証手順

ここでは、以下の手順で作成した検証手順を使用して、
Implicitグラント種別」のシナリオの検証を行うことができる。

  1. ASP.NET SPAテンプレートの動作確認を行なった後、
  2. ASP.NET MVCテンプレートの差分を確認した上で、
  3. OAuthに必要な実装を抽出し、
  4. ASP.NET MVCテンプレートにOAuthのEndpointを追加する手順を書き出し、
  5. その手順の妥当性を以下の検証手順によって検証した。

前提

認証サイト開発

コードの提示はGithub登録まで待ってください。

ApplicationOAuthProvider?の追加

Providersフォルダを作成し、OAuthのProviderであるApplicationOAuthProvider?を追加する。

Startup.Authで、定義したApplicationOAuthProvider?を登録

前述のApplicationOAuthProvider?OAuthのProviderとして登録する。

AccountControlle?に、Authorizeメソッドを追加

Authorizeメソッドで認証を行なう。

Authorizeメソッドで認証した後、

  1. Bearer Tokenを発行する。
  2. クライアントはBearer Tokenを使用してOAuthリソースにアクセスする。
  3. サーバはOAuthリソースへのアクセスを認可できるようになる。

AccountControlle?ReturnBearerTokenScreen?メソッドを追加

Authorizeメソッド実行後にRedirectされる先のAction MethodとViewを準備する。

WebApiConfig?の追加

App_Startフォルダに、ASP.NET Web APIの設定を行うためのWebApiConfig?.csを追加する。

Global.Application_Startメソッドで、定義したWebApiConfig?を登録

Global.asax.csのApplication_Startメソッドで、定義したWebApiConfig?の設定を登録。

OAuthClaimViewModel?の追加

Models フォルダに、Claimを返すためのOAuthClaimViewModel?.csを追加する。

OAuthResourceController?の追加

Controller フォルダに、Claimを返すためのOAuthResourceController?.csを追加する。
ここに、Claim等のOAuthのResourcesを返すためのASP.NET Web APIのメソッドを追加する。

Web アプリ開発

JavaScriptとして実装する。

コードの提示はGithub登録まで待ってください。

認証連携の動作検証

次のURLでアクセスするだけでよい。

http://localhost/Account/Authorize?client_id=self&response_type=token

/Account/Authorize Endpointに到達する前に、Forms認証されるため、
/Account/Authorize Endpointでは、Forms認証のクレデンシャルを使用して認証し、
Tokenを発行→OAuthリソースにアクセスする。

参考

Tsmatz

かずきのBlog@hatena

The ASP.NET Site

このコンテンツは以下の様な構成になっている。

Create an Authorization Server

Creating a Resource Server

アクセストークンによって保護されたResource ServerのEndpointを作成。

Create OAuth 2.0 Clients

.NETクライアントからHTTPアクセスする際のライブラリとしては、DotNetOpenAuth.OAuth2を使用している。

関連する情報

OAuth2.0のセキュリティについて。


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.


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