Open棟梁Project - マイクロソフト系技術情報 Wiki
目次 †
概要 †
ASP.NET Identityは、
OAuthのクレームベース認証のEndpoint追加をサポートしており、
これにより、JavaScript などの「非 .NET 環境」と連携させることもできる。
この処理は、SPAテンプレートの以下のエンドポイントに実装されている。
ここでは、
- SPAテンプレートの動作確認を行い、
- MVCテンプレートの差分を確認した上で、
- OAuthのEndpoint追加に必要な実装を抽出し、
- MVCテンプレートにOAuthのEndpointを追加する手順を書き出し、
- その手順の妥当性を以下の検証手順によって検証した。
検証手順 †
前提 †
ここでは、以下のような前提のアプリケーションを構築するサンプルを示す。
#ref(): File not found: "goal.png" at page "ASP.NET IdentityのToken 認証"
認証サイト †
- ASP.NET MVC アプリケーションとして作成する。
- ASP.NET Identity を用いて、各 Web アプリのアカウント管理を行う。
- ユーザー情報へのアクセスには、既定の Entity Framework を使用する。
- ユーザー情報は、既定の LocalDb? に格納する。
Web アプリ †
- 個々の Web アプリではアカウント管理は行わず、
アカウント管理が必要な場合は認証サイトにリクエストする。
- Java Web アプリケーションとして作成する。
開発環境 †
- 認証サイト側
- Visual Studio 2015
- プログラム言語は C#
認証サイト開発 †
Github登録まで待ってください。
プロジェクトの準備 †
- Visual Studio 2015 で、新規 ASP.NET Web アプリケーションを作成する。
- 「新しい ASP.NET プロジェクト」ダイアログで、以下を選択する。
- テンプレート: MVC
- 認証の変更: 個別のユーザー アカウント
- Visual Studio の「パッケージ マネージャー コンソール」で、以下のコマンドを実行する。
Install-Package Microsoft.AspNet.WebApi
Install-Package Microsoft.AspNet.WebApi.Owin
Install-Package Microsoft.AspNet.WebApi.Cors
ApplicationOAuthProvider?の追加 †
Providersフォルダを作成し、
OAuthのProviderであるApplicationOAuthProvider?を追加する。
Startup.Authで、UseOAuthBearerTokens?を実行 †
これにより、OAuth BearerToken?を使用してユーザーを認証できるようになる。
AccountControlle?に、Authorizeメソッドを追加 †
これにより、他システムからOAuthでToken認証できるようになる。
WebApiConfig?の追加 †
App_Startフォルダに、Web APIの設定を行うためのWebApiConfig?.csを追加する。
Global.Application_Startメソッドで、定義したWebApiConfig?を登録 †
Global.asax.csのApplication_Startメソッドで、定義したWebApiConfig?の設定を登録。
OAuthClaimViewModel?の追加 †
Models フォルダに、クレームを返すためのOAuthClaimViewModel?.csを追加する。
OAuthClaimController?の追加 †
Controller フォルダに、クレームを返すためのOAuthClaimController?.csを追加する。
ここに、クレームを返すためのWeb APIのメソッドを追加する。
HomeController?にActionMethod?とViewを追加 †
Authorizeメソッド実行後にRedirectされる先のActionMethod?とViewを準備する。
- ActionMethod?
Authorize 属性をつけることで、Authorize メソッドからリダイレクトされたときに、Access Token 情報が URL に付与される。
- View
Access Token を取得し、Web サイトに遷移させるための処理を追加。
Web アプリ開発 †
参考 †
Tags: :ASP.NET, :ASP.NET Identity
Special thanks go to maegawa-san for his support.