2013年4月23日火曜日

[WAAD]アプリケーション統合でGraph APIを簡単に実行

先日のWindows Azure Active Directory(WAAD)の正式リリースでWAADと統合するアプリケーションを簡単に登録することが出来るようになりました。

実際にやっているのは、GoogleのAPIコンソールと同じく、OAuthのクライアントを登録することだけで、

  • アプリケーション情報の登録(各種エンドポイント)
  • クライアントIDとキー(Secret)の取得
  • アプリケーションへ付与するWAADへのアクセス権限を設定

などが行えます。

ここでアプリケーションへ与えることが出来る権限ですが、

  • シングルサインオン
  • シングルサインオン、ディレクトリデータの読み取り
  • シングルサインオン、ディレクトリデータの読み取りと書き込み


の3種類が用意されています。

シングルサインオンはSAMLプロトコルを使ってWAADとの認証連携をする機能、ディレクトリデータの読み取り、書き込みについてはGraph APIを使ってディレクトリデータを操作するための機能を指します。

と、いうことで今回は以前紹介したGraph APIを使って行うWAADのディレクトリデータの操作をアプリケーション統合の機能を使って、より簡単に実行する方法を紹介します。
(といっても簡単になるのはAccess Tokenの取得だけですが)

以前の記事では、Graph APIを利用するためのAccess Tokenを取得するのに、AAL(Windows Azure Authentication Library)を使ったコードを書いていましたが、この部分をアプリケーション統合機能で大幅に簡略化します。

手順はシンプルで、以下のステップだけです。
1.ディレクトリデータの読み取り権限のあるアプリケーションを作成する
  ⇒ClientID / Client Secretを取得する
2.WAADのOAuthのトークンエンドポイントへClient Credentials Grantフローでアクセスする
  ⇒Access Tokenを取得する
3.取得したAccess Tokenを使ってディレクトリデータを読み取る

※尚、OAuth2.0の各種フローと注意点についてはこの辺りを参照してください。
 RFCとなった「OAuth 2.0」――その要点は?

では、さっそくやってみます。


■ディレクトリデータの読み取り権限のあるアプリケーションを作成する

Windows Azureの管理ポータル(https://manage.windowsazure.com/)へログインし、Active Directoryの管理からディレクトリ⇒統合されたアプリケーションを選択します。


アプリの作成からアプリケーションを新規作成します。

[組織で開発中のアプリケーションを追加]を選択します。

アプリケーションに任意の名前を付けて、アクセス権を設定します。とりあえずユーザ情報の読み取りをしたいので、「シングルサインオン、ディレクトリデータの読み取り」を選択します。

URLやアプリIDなどは今回は特に使わないので適当に入れておきます。


取り敢えずアプリケーションが追加されるので、左上の[構成]メニューを開きます。


クライアントIDが生成されているのがわかります。クライアント Secretを生成したいので[キー]のところで時間の指定をします。


1年もしくは2年が選択できるので取り敢えず1年を選択します。保存するとキーが表示されます。


これで必要な情報(Client ID / Client Secret)がそろいました。


■WAADのOAuthのトークンエンドポイントへClient Credentials Grantフローでアクセスする

次は、取得したClient ID / Client Secret)を使ってAccess Tokenを取得します。

手順は簡単で、WAADのOAuthのトークンエンドポイントである
  https://login.windows.net/<テナントドメイン名>/oauth2/token?api-version=1.0
に、

 - grant_type : client_credentials
 - resource : https://graph.windows.net
 - client_id : <先ほど取得した Client ID>
 - client_secret : <先ほど取得した Client Secret>
をPOSTするだけです。
※POSTするデータはURL Encodeしておく必要があります。

いつものAdvanced REST Clientを使ってアクセスしてみます。


すると、JSON形式でAccess Tokenが返ってきます。


これでAccess Tokenを取得できました。
コードを書かずに取得できるというのはとっても素晴らしいことです。



■取得したAccess Tokenを使ってディレクトリデータを読み取る

ここからはこれまでも何回か紹介した方法ですが、取得したAccess TokenをAuthorizationヘッダにセットしてディレクトリからユーザ一覧を取得します。


ユーザ情報が取得できました。




どうでしょうか?
Access Tokenの取得が格段に楽になっているのがわかると思います。
Office365のディレクトリ同期状況の確認などGraph APIの使い道は色々とありますので、一つ簡単なアプリケーションを作っておくと良いかも知れません。

2013年4月18日木曜日

Windows Azure の IaaS の正式リリースと FIM2010 R2 SP1 のサポート

永らくプレビューだった Windows Azure の IaaS がリリースされました。

Windows Azure チームの blog
 http://blogs.msdn.com/b/windowsazure/archive/2013/04/16/the-power-of-and.aspx

今回リリースされたのが IaaS ということで、各種 MS サーバ製品群を IaaS 上で動かすことが出来るか?という情報が KB として公開されています。

Microsoft server software support for Windows Azure Virtual Machines
 http://support.microsoft.com/?id=2721672

この KB を見ると、 Forefront Identity Manager 2010 R2 SP1 がサポートされています。
ただ、同時に以下の制限があるので、当面は大規模のプロダクション環境ではなく、小規模(たとえば Office 365 とのディレクトリ同期や部門で利用するクラウドサービスとの連携など)での利用やテスト環境として使われていくのかな?と考えています。

以下、動作に関する制限事項・考慮事項です。

  • バックエンドとして、SQL Azure や別の(リモートの)SQL VMはダメなので、同一サーバ内で SQL Server も動作させる必要がある
  • ドメインコントローラも IaaS 上に配置する必要がある。


2013年4月14日日曜日

A Guide to Claims-Based Identity and Access Control 2nd Editionが紙媒体でリリース

以前のポストで紹介した「A Guide to Claims-Based Identity and Access Control 2nd Edition」ですが、e-Book版のリリースから1年半が経過した今何故か紙媒体でリリースされたようです。(日本のAmazonでは売ってませんが、USのAmazonでは$50程度で売っています)

PDF版がMSDNで無償ダウンロード出来るのでどこまでニーズが有るのかわかりませんが、紙媒体が大好き!っていう方には良いかも知れません。2nd Editionでやたらとページ数が増えたのでPDF版を印刷して持ち歩くっていうのはほぼ不可能な量なので。。
(実は私、1st Editionの時はPDF版を印刷して読みました。その後著者のEugenio Paceさんにサイン入りの紙媒体をMS社内便で送ってもらいましたがw)

Amazon.comのURLはこちら。
http://amzn.to/10UZxhb

2013年4月11日木曜日

[WAAD]Windows Azure Active Directory が正式リリース


ようやく正式リリースされました。

Windows Azure チームの blog
 - Windows Azure Active Directory: Ready for Production with over 265 Billion Authentications & 2.9 Million Organizations Served!


細かいポイントはすでに色んな人が書いているので省略しますが、
・マイクロソフトアカウントで作成したWindows Azureテナントから利用が出来るようになった
・アプリケーション統合が管理ポータルから出来るようになった
というあたりが新規機能です。

ブチザッキ
 - Windows Azure AD/Backup Serviceほかいろいろ

Cloud Identity(Vittorio Bertocciのblog。MSDNから引っ越しました)
 - Windows Azure Active Directory Reaches General Availability
 - Walkthrough #1: Adding Sign-On to Your Web Application Using Windows Azure AD
 - Walkthrough #3: Developing Multi-Tenant Web Applications with Windows Azure AD

他にも Graph API で若干変更があったので、ここではその点を見ておきます。

最大のポイントは
・リクエストのパラメータに api-version を指定する必要がある様になった
・それに伴い、data contract version の指定が不要になった
という点です。

もちろん、今のところこれまでと同じエンドポイントも使えるのですが、その場合はこれまで通り data contract version を指定する必要があります。(しかも 0.5 / 0.8 のみ指定が可能)


ユーザ情報の取得を行う場合を例に新しいリクエスト方法を見てみます。

・エンドポイント:https://graph.windows.net/テナント名.onmicrosoft.com/users?api-version=2013-04-05
・メソッド:GET
・ヘッダ
 - Authorization/取得したJWT
 - Accept:application/json;odata=verbose;charset=utf-8
  ※簡易取得なら odata=verbose は不要

これまでは以下でした。
・エンドポイント:https://graph.windows.net/テナント名.onmicrosoft.com/users
・メソッド:GET
・ヘッダ
 - Authorization/取得したJWT
 - x-ms-dirapi-data-contract-version:0.5 or 0.8
  ※直近までは 0.9 も指定可能だったが、今は 0.5 / 0.8 しか受け付けない
 - Accept:application/json;odata=verbose;charset=utf-8
  ※簡易取得なら odata=verbose は不要

ちなみに古い形のリクエストで data contract version を付けないと HTTP 400 Bad Request が返ってきて、0.5 / 0.8 / 0.9 / 1.0 のどれかを指定するように言われるのですが、実際 0.9 や 1.0 を指定しても同じく Bad Request となってしまいます。


逆に新しい形のリクエスト(パラメータに api-version=2013-04-05 をつける)だと、data contract version をヘッダにつける必要はなくなり、Response ヘッダを見ると version 1.0 が使われていることがわかります。



後、実は大きな変更点なのですが、エンドポイントのリソース名(usersやgroups)が小文字しか受け付けなくなりました。
以前はリファレンスにも Users とか Groups と書いてありましたが、今は users や groups のようにすべて小文字にしないと 404 Not Found が返ってきます。



今後も以前の宣言通り OpenID Connect 対応など、IDMaaS としての機能が色々とリリースされるようなので、目が離せません。

2013年4月2日火曜日

[FIM2010]ECMA2.2と各種対応コネクタがベータリリース


そう言えば先日の FIM2010 R2 用の SP1 と共に 2.1 へとバージョンが上がった EMCA(Extensible Connectivity:拡張管理エージェント)ですが、早くも 2.2 のベータ版が Connect サイトに上がっています。

https://connect.microsoft.com/site433/Downloads/DownloadDetails.aspx?DownloadID=48615
※要登録

今回のバージョンの目玉はなんといっても「同期エンジンなしで実行できる様になったこと」です。この機能により、Visual Studio を使って単体で管理エージェントのテストやデバッグを実行できるようになりました。

他にも、
・コネクタを作成する際、機能のロードをユーザに情報を入れさせてから実行できるようになった。(例えば、SQL Server などから動的にスキーマを取得するようなコネクタを作ろうとした場合、これまでは SQL Server へ接続するユーザ情報を入力する前に機能をロードしようとして失敗していた)
・アンカー属性として LDAP の DN 形式をサポートした。
・delta import の際に object type の更新/削除できなくした。
という拡張がされています。


また、同時に EMCA2.2 に対応した以下のコネクタのベータ版もリリースされています。
・PowerShell MA
 もともと MCS(Microsoft Consulting Service)が個別で開発して使っていたコネクタのようですが、製品としてリリースされることになりました。
・SharePoint User Profile MA
 SharePoint のユーザプロファイルを管理するコネクタです。
・Generic LDAP MA
 汎用の LDAP コネクタです。XMA1.0 のサポート終了に伴い、コミュニティベースで公開されていた OpenLDAP XMA の代わりに使うことになりそうです。

最近特に FIM 関連の製品更新が多いので、なかなかついていけてません。。。