2013年10月25日金曜日

[WAAD]OAuth で WebAPI を保護する ②

前回に引き続き Windows Azure Active Directory(WAAD)の OAuth2.0 で WebAPI を保護する方法を紹介します。

◆作業の流れ
作業の流れは以下の通りで、前回は 1 ~ 2 を紹介しましたので、今回は 3 からです。

  1. WebAPI の作成:今回は ASP.NET MVC4 の WebAPI を使います
  2. WebAPI の保護:WAAD を使って認可する様に設定を行います
  3. WebAPI を WAAD に登録:WAAD の保護対象リソースとして WAAD へ登録します
  4. OAuth クライアントの作成:本来は真面目にクライアントも作るのですが、今回は生の動きを見るために Chrome Extension の Advanced REST Client とダミー URL を使います
  5. OAuth クライアントを WAAD に登録:WAAD を使うアプリケーションとして OAuth クライアントを登録します
  6. WebAPI へのアクセス許可設定:OAuth クライアントが WebAPI へアクセスできるように設定します
  7. 動作確認:実際に OAuth2.0 のフローに従ってアクセスできるかどうかテストします。(今回は認可コードフローを試してみます)


◆実際の作業

3.WAAD への保護リソースの登録

ここまでで WebAPI へアクセスした時に渡されるアクセストークンを WAAD で確認するための WebAPI 側の設定を行いました。次は WAAD 側に保護対象リソースとして WebAPI を登録する作業です。
以下の手順で WAAD にアプリケーションを追加します。

まずは Windows Azure の管理ポータルにログインし、Active Directory から対象にしたいディレクトリの設定を開きます。すると、アプリケーションというメニューがあるので、そこから追加をしていきます。

追加するのは「組織で開発中のアプリケーション」です。

次にアプリケーションに任意の名前を付けて、種類に「WEB アプリケーションや WEB API」にします。

次にアプリケーションの URI を指定します。ここには先ほどの WebAPI の URI を指定します。(今回は Visual Studio からデバッグするときの URL(http://localhost:xxxx)を使います。


WAAD のディレクトリへのアクセス権限を設定します。
今回は特にディレクトリ上のデータへのアクセスは不要で、単に認証さえ出来ればよいので、「シングルサインオン」にチェックを入れておきます。


これで作成した WebAPI の WAAD への登録は完了です。


4.OAuth クライアントの登録~5.WebAPI を WAAD に登録

次は WebAPI にアクセスする OAuth クライアントです。

保護リソースへアクセスするための OAuth クライアント(実際はこれも Web アプリケーションやネイティブアプリケーション)についても WAAD が認識している必要があるので、WAAD 上へ登録します。
今回はアクセスの流れと WebAPI の保護を見るだけなので、実際にクライアント・アプリケーションを作らずに Chrome Extension の Advanced REST Client を使いますので、WAAD 上にはダミーの URL でアプリケーションを登録します。


先ほどの WebAPI の時と同じように登録を開始します。

URI には適当な値を入れておきます。今回は「http://localhost」としています。OAuth2.0 の認可エンドポイントから認可コードを取得するときにこの URI にフラグメントとしてコードがくっついてくるので、実際にアクセスできる URI である必要はなく、404 Not Found であろうとブラウザのアドレスバーからコードが取得できる、という寸法です。



ディレクトリアクセスについては特には必要ないので、「シングルサインオン」としておきます。


6.WebAPI へのアクセス許可設定

次は、先ほど作った WebAPI に対して OAuth クライアントがアクセスできるようにするアクセス許可設定を行います。
現状では Preview 機能ですが、アプリケーション構成の中に「クライアントアクセス」があるので、ここでクライアントとなれるアプリケーションを設定します。プルダウンに先ほど作った OAuth クライアントが出てくるので、そちらを選択して保存します。






さて、実はこれで設定は基本的には終わりです。

次回は実際にアクセスをして、動きを確認したいと思います。

0 件のコメント: