2013年12月7日土曜日

[WAAD]アップデートラッシュ

最近、Windows Azure Active Directory(WAAD) 周りの機能がどんどんアップデートされています。
例えば、
・アプリケーションアクセス機能の正式リリース
・Graph API のバージョンアップ
・WAAD Premium のプレビュー版のリリース
など、楽しい?機能がたくさん登場してきています。

ちょうど今月は昨年に引き続き Windows Azure Advent Calendar に参加する予定なので、徐々にネタ探しをしているのですが、今回はウォーミングアップということで軽く小ネタを。

先にあげたアップデートのうち、アプリケーションアクセス機能については、以前のポストでも紹介しましたが、2つほど小ネタを紹介します。

一つ目は、アプリケーションパネルへのアクセス URL です。

前回のポストでは以下のような長い URL を紹介していました。
 https://account.activedirectory.windowsazure.com/applications

しかし、結構長いのでエンドユーザに展開するのが面倒、という方には以下の短い URL を使ってもアクセスできるのでこちらがおススメです。
 https://myapps.microsoft.com


次に、利用者がアプリケーションパネルを使っている最中に管理者が新しいアプリケーションを割り当てたらどうなるのか?という話です。
ログアウト~再ログインするまでアプリケーションが使えないのか、単純にページをリロードすれば使えるようになるのか???

答えは単純にリロードすれば OK です。

この状態で、、、


管理者がアプリケーションにユーザを割り当てると、、、


ページをリロードすると新しいアプリケーションが表示されます。



それだけです。
ほんとに小ネタでした。


2013年11月29日金曜日

[FIM2010/WAAD]新管理エージェントがまとめてリリース

ちょうど MVP Global Summit という年一回の世界中の MVP の集いに参加するためにシアトルのマイクロソフト本社を訪問している最中、Forefront Identity Manager 用の新しい管理エージェント(Management Agent / MA)がまとめてリリースされました。



今回リリースされたのは以下の3つです。



Generic LDAP コネクタを使うことで、これまでコミュニティベースで公開されていた ECMA 1.0 ベースの OpenLDAP XMA や、ここにきてようやく MA 名が Sun から Oracle に変更された旧 Sun の Directory Server、NetIQ(Novell)の eDirectory 用の管理エージェントを置き換えることが出来ます。

SharePoint コネクタに関しては SharePoint 標準の User Profile Service では出来ないような複雑な属性制御などが出来るようになります。

そして、やはりこれが目玉だと思いますが、Windows Azure Active Directory(WAAD)コネクタです。ディレクトリ同期ツールでは対応できなかったマルチフォレスト構成のオンプレミス AD との同期や、複数のデータソースからのアイデンティティ情報を WAAD に同期することが出来ます。


2013年11月21日木曜日

[FIM2010]小ネタ:色々な FIM

Forefront Identity Manager(FIM)が MS 製品の色々なところで使われている、という話はこれまでもしてきました。(SharePoint や Office365 のディレクトリ同期)

特に最近はディレクトリ同期ツールのビルド番号が完全に FIM と一致しており、ソースツリーとしては同じものになっていると推測されます。(おそらく SharePoint 2013 も Service Pack 1 が出るタイミングで合わせてくるものと思われます)

 参考)以前のポスト:[FIM2010]ついにディレクトリ同期ツールにビルド番号が追いつきました
 http://idmlab.eidentity.jp/2013/06/fim2010.html


ただ、このような状況だと本当にライセンス提供を受けている本家 FIM を使っているのか、無償ダウンロード可能なディレクトリ同期を使っているのかの区別がつかなくなってしまうため、Product ID というもので区別をしているようです。

Synchronization Service の Identity Manager(miisclient.exe)を起動し、[Help] - [About] で表示されるバージョン情報のダイアログの中の Product ID の 2 つ目のブロックが製品区分です。

- 270 : ボリュームライセンス
- 335 : MSDN
- 849 : 評価版
- 442 : ディレクトリ同期ツール

出典:現 MS Premier Support(元 FIM MVP)の Peter Green 氏の blog 「IdentityUndergroud」
http://identityunderground.wordpress.com/2013/11/20/which-fim-software-version-are-you-running/


実際に見てみました。
これがボリュームライセンス版です。


これがディレクトリ同期ツールです。


おまけですが、SharePoint 2013 です。
Product ID が空白になっています。(まだ FIM 2010 も無印です)


このように、SharePoint やディレクトリ同期ツールも FIM を組み込んで使っているので、FIM の更新情報(バグフィックス)なども見ておくと、色々とヒントがあるかも知れませんね。

[WAAD/Office365]Vittorio Bertocci氏来日

今週はシアトルの Microsoft 本社に来ています。

Windows Azure Active Directory(WAAD) や Active Directory Federation Service(AD FS)、Windows Identity Foundation(WIF) など Microsoft のアイデンティティ・テクノロジーに興味のある人には朗報です。

年明け 1/14 ~ 1/15 に開催される Japan Identity & Cloud Summit(JICS)に Windows Azure Active Directory の Principal Program Manager の Vittorio Bertocci 氏が来日・登壇してくれることになりました。

 おなじみ Vittorio の Blog
 http://www.cloudidentity.com/blog/



テーマや中身の詳細は現在詰めている最中ですが、Identity as a Service(IDaaS)について Microsoft の考えていることなどを中心に話をしてもらう予定です。


すでにイベントへのレジストは開始されているので、早めにお申し込みください。

 Japan Identity & Cloud Summit 公式サイト
 https://jics.nii.ac.jp/HOME/



私も Vittorio のセッションと同日の午前中に企業が ID・アクセス管理を行うための基盤を導入しようと思った際、まず何をすべきなのか?という初めの一歩的なセッションを担当する予定なので、よろしければそちらもどうぞ。

 1/15 10:00 ~ 11:00 「ID 基盤構築 101」
「OpenIDやSAML、プロビジョニングは確かに興味深いが、そもそも自社/自組織にID基盤が存在しないんだよね」「ちょうどこれからID基盤の整備をしようと思っているんだけどどこから手をつけたらいいのやら...」といった声を多く耳にします。本セッションでは、企業にとって必要なID基盤構築のとっかかりから勘所についてご紹介していきます。

繰り返しますが、日本にいて Vittorio から直接話を聞くことができるのは非常にレアな機会ですので、是非お越しいただき、直接色々と話を聞いてみてください。

2013年11月9日土曜日

[WAAD] OpenID Connect Interop 5

Windows Azure Active Directory(WAAD)の OpenID Connect サポートについては 2012 年 6 月のWindows Azure チームの blog 「Reimagining Active Directory for the Social Enterprise」以降、Mike B. Jones さんや Vittorio Bertocci さんによって少しずつ情報が公開され、実装も進んできました。

私の先日の Post でもアクセストークンを取得する時に id_token が取得できていたりしていましたし、OAuth への対応状況の確認の際に responce_type に id_token を指定すると対応の気配が見えたりしていました。

で、遂に公の接続性テストの場に出てきました。某 OP や PingIdentity などに並んで Microsoft AAD が Participant に掲載されています。

 OC5:OpenID Connect Interop 5
 http://osis.idcommons.net/wiki/OC5:OpenID_Connect_Interop_5



尚、Mike Jones さんの公開している WAAD テナントの well-known を見ると OpenID Connect の構成情報やサポート状況がわかります。
https://login.windows.net/kauti.onmicrosoft.com/.well-known/openid-configuration

{
"issuer":"https://sts.windows.net/b4ea3de6-839e-4ad1-ae78-c78e5c0cdc06/",
"authorization_endpoint":"https://login.windows.net/b4ea3de6-839e-4ad1-ae78-c78e5c0cdc06/oauth2/authorize",
"token_endpoint":"https://login.windows.net/b4ea3de6-839e-4ad1-ae78-c78e5c0cdc06/oauth2/token",
"token_endpoint_auth_methods_supported":["client_secret_post","private_key_jwt"],
"jwks_uri":"https://login.windows.net/common/discovery/keys",
"response_types_supported":["code","id_token","code id_token"],
"subject_types_supported":["pairwise"],
"id_token_signing_alg_values_supported":["RS256"],
"microsoft_multi_refresh_token":true
}

ちなみに特別なテナントを使っているわけではなさそうなので、WAAD のテナントをお持ちの方は well-known を叩いてみると同様に情報を参照することができます。


今後も引き続き要ウォッチです。

2013年11月5日火曜日

[Office365] DirSync on DC!!

いつの間にか色々な機能がどんどん使えるようになってきたディレクトリ同期ツールですが、これまで何故かドメインコントローラ上へインストール出来ませんでした。

ベースとなっている Forefront Identity Manager(FIM)は普通にドメインコントローラへインストール出来るのに何故?という状態だったのですが、この度の更新(6553.0002)からドメインコントローラへのインストールがサポートされました。

これで小規模環境や検証環境でもサーバを2台用意しなくても済むようになったので、より手軽に導入が出来るようになりました。




とりあえずインストールしてみましたが、若干工夫が必要な部分もあるので注意が必要です。
(すみません、スクリーンショットとるのをミスって若干解像度荒いです)



まぁ当然このあたりは変わりようもなく、、、



と、ここまで来たら次は構成ウィザードですが、ここで構成ウィザードを始めるとダメなので、一旦インストーラを終了します。



ここで一旦ログオフ~再ログオンをします。
何をやっているかというと、FIM をインストールしたことのある人ならお分かりだと思いますが、この後の Synchronization Service への構成(管理エージェントのインポートなど)を行うには、インストール実行ユーザが FIMSYNCADMINS グループの権限を持っている必要があるため、インストーラがメンバ追加をした権限を有効化するために一旦ログオフして再ログオンする必要があるのです。

再ログイン後、デスクトップに出来ている「ディレクトリ同期の構成」を実行すると構成ウィザードが再開されるので、通常通りオンライン側の管理ユーザと企業ディレクトリの管理ユーザを入れて構成を進めると問題なくセットアップが完了します。




ベースの FIM のビルド番号はつい先日リリースされた 4.1.3479.0 でした。
もう完全に同じものになってしまっています。。。




2013年10月26日土曜日

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

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

これまでのポスト
 [WAAD]OAuth で WebAPI を保護する ①
 [WAAD]OAuth で WebAPI を保護する ②


前回までで環境は整ったので、今回は実際にアクセスしてみます。(今回でようやく終わりです)

◆作業の流れ
これまでの作業の流れは以下の通りです。今回は最後の 7 を実行します。


  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 のフローに従ってアクセスできるかどうかテストします。(今回は認可コードフローを試してみます)



◆実際の作業

7.動作確認

実際に OAuth クライアントから WebAPI へアクセスします。OAuth の認可コードフローを使って WAAD からアクセスに必要なアクセストークンを取得するので、まずは OAuth クライアントの client_id と client_secret を確認します。
クライアント ID(client_id)は 管理ポータルのアプリケーションの構成の中にありますが、client_secret は初期状態では生成されていません。そこでキーの項目で有効期限を選んで生成をします。尚、作成後ページ遷移をするとそのキーは二度と参照できなくなるので、必ずコピーしておきます。万一忘れてしまった場合は再度キーを生成します。




これで実際にアクセスするための準備はすべて終了です。
もう一度おさらいですが、今回やりたいことをシーケンスに表わすと以下のような流れになります。



上記のシーケンスの通り、まずは WAAD の 認可エンドポイントへリクエストを投げます。

※今回はクライアントを作らずにブラウザと Chrome Extension の Advanced REST Client を使うので、リソースオーナー(ユーザ)がクライアントへアクセスしてきたと仮定して、クライアントがリソースオーナーへリダイレクトしてくる認可要求を手動で実行します。

投げるリクエストは以下の通りです。

・メソッド:GET
・エンドポイント:
 https://login.windows.net/common/oauth2/authorize?api-version=1.0
・パラメータ
 response_type : code
 client_id : 先に取得した Client の client_id

実際はブラウザから以下の URL へアクセスします。
 https://login.windows.net/common/oauth2/authorize?api-version=1.0&response_type=code&client_id=[client_id]


すると、WAAD の認可エンドポイントから認証要求が返ってきますので、WAAD 上に登録した組織のアカウントでログインします。(フローの①)


認証が通ると、再度認可エンドポイントへ遷移し、設定がうまくいっていれば認可コードが払い出されます。
クライアントがダミー(WAAD に登録したアドレスが適当に http://localhost)なので、ブラウザにはエラーが表示されますが、アドレスバーを見るとちゃんとコードがパラメータに入っていることがわかります。
これが上記フローの②に該当します。


これで認可コードが取得できたので、次は WAAD のトークンエンドポイントで認可コードとアクセストークンを交換してもらいます。
今度は POST メソッドを使うので Advanced REST Client を使います。

投げるリクエストは以下の通りです。

・メソッド:POST
・エンドポイント:
 https://login.windows.net/common/oauth2/token
・フォームデータ
 grant_type : authorization_code
 client_id : 先に取得した Client の client_id
 client_secret : 先に取得した Client の client_secret
 code : 取得したcode
 resource : WebAPI の URI(WAAD に登録した URI)


こんな感じで投げます。


うまくいけば HTTP 200 が返ってきて、結果にアクセストークンが返ってきます。フローの④の部分です。(ついでに id_token も返ってきてます)


ようやくこれで WebAPI へアクセスする準備が整いました。
あとは単純に、このアクセストークンを Authorization ヘッダにセットして WebAPI の URI へリクエストを投げるだけです。

投げるリクエストは以下の通りです。実際のアクセストークンの前に「Bearer 」を入れるのを忘れないでください。

・メソッド:GET
・エンドポイント:
 http://localhost:52941/Api/Values
・ヘッダ
 Authorization : Bearer [取得したアクセストークン]

こんな感じです。上記フローの⑤に当たります。


前々回で保護設定をした状態では HTTP 401 が返ってきていましたが、今回はちゃんと HTTP 200 が返ってきます。
データも取得できているようです。



いかがでしょうか?
概念的に OAuth2.0 を使ってリソースを保護する、と言うだけなら簡単なのですが、実際にステップ毎に実行してみると理解ができると思います。
また、Visual Studio 2013 からは OWIN という新しい認証の実装が入ってきていますが、内部的にはこんな感じで動いています(たぶん)。

参考)Understanding OWIN Forms authentication in MVC 5