2011年8月23日火曜日

9/9 OpenID TechNight Vol.8 in 大阪 が開催されます!

これまで Identity 関連の技術セミナが大阪で開催されることは殆どなかったのですが、今回初めて東京で大好評の OpenID TechNight が開催されることになりました。

このブログでも LiveID の OpenID 対応のエントリや AppFabric ACS への OpenID Provider の登録に関するエントリなど、 OpenID に関連するトピックスを紹介してきました。

なかなかエンタープライズでの利用シナリオが想像されないま状態が続いていますが、 OpenID 自体は各種ソーシャル・サービスで浸透来ていることもあり、コンシューマ向けのサービス開発者の方々を中心にこの OpenID TechNight は毎回大好評だったイベントです。

また、最近は OAuth2.0 との親和性も手伝って OpenID Connect という新しい考え方もホットで、米国 OpenID Foundation 理事の @_natさんを中心に Microsoft の Mike Jones 氏など ws-* や SAML の仕様を策定していた方々が集まって日々スペックを書いているようです。

今回のイベントは 8/5 に東京で開催された OpenID TechNight Vol.7 に引き続き OAuth2.0 / OpenID Connect を中心としたトピックが満載の予定です。(東京での Vol.7 には 100名以上の参加があったようです)

私も実は登壇予定で、開発者向けということで Windows Identity Foundation / AppFabric ACS を中心に OAuth や OpenID に関連した具体的なコードやデモを紹介しようと思います。具体的には ACS 経由で取得した Facebook のアクセス・トークンを SAML トークンに変換したものを WIF で Windows Azure 上にデプロイしたアプリケーションに渡し、Facebook Graph API を使って、色々と Facebook を弄ぶ、などといったことを考えています。

参加申し込み方法は以下のイベント紹介文の中に載っているので、これまで「良さそうなイベントだけど東京だよね~~」と思っていた関西人の方は是非ともご参加ください。


======================================================================
毎回好評のID専門セミナーが初の大阪開催! いまやWeb APIに欠かせない
OAuth/OpenIDの最新動向から、実サービスへの適用まで学べます!
======================================================================

9/9(金)OpenIDファウンデーション・ジャパン主催で、技術者向け無料セミ
ナー "OpenID TechNight Vol.8 in 大阪" を開催いたします。仕様が策定中の
OpenID Connect と OAuth 2.0 の最新状況や、ID プロバイダーの取り組みにつ
いてご紹介します。

お申し込みは以下のいずれかのサイトからお願い致します。
http://atnd.org/events/19093
http://www.openid.or.jp/modules/news/details.php?bid=46
----------------------------------------------------------------------
■日時:
 2011年 9月 9日(金) 16:00 ~ 18:30(開場15:30 ~)

■場所:
 株式会社ケイ・オプティコム 16階 会議室
(大阪市北区中之島3-3-23 中之島ダイビル)
 http://www.k-opti.com/company/access/

■プレゼンテーション(予定):

・「OpenID Connect latest spec」 by @ritou
・「OAuth latest spec」 by @nov
・「Microsoft の Restful Identity」 by @phr_eidentity
・「eoID の OpenID 化について」 by K-Opticom

■対象:
・Restful な Identity 技術にご興味をお持ちの方。
・Twitter / Facebook / Google / mixi などの API を触ったことがある方、
 これから勉強してみたいと思っている方。

■インターネット中継:
 当日の模様は Ustream の以下の URL にて中継する予定です。
 http://www.ustream.tv/channel/openid-tech-night

■Twitterハッシュタグ:
 #openid #technight


■過去の模様はこちら:
・2011/08/05 OpenID TechNight Vol. 7
 http://atnd.org/events/18104
・2010/05/28 OpenID TechNight Vol. 6
 http://gihyo.jp/news/report/2010/06/0101

WIF Extension for OAuth CTP1 を試してみる

4月にリリースされてからしばらく時間がたちますが、Windows Identity Foundation Extension for OAuth CTP 1-4(WIF Extension for OAuth)の中に入っているサンプルを動かしてみたいと思います。


■サンプルの内容
このサンプルでは AppFabric ACS を OAuth の認可サーバとして利用し、Contoso Customer Information サービスから顧客情報をユーザの同意に基づき取得する、というシナリオです。













登場するコンポーネントは、

・ユーザ:ブラウザ
・コンシューマ:Fabrilam Information Portal(WIF Extension for OAuth を利用したクライアント)
・認可サーバ:ACS2.0
・リソースサーバ:Contoso Customer Information Service(WIF Extension for OAuth を利用した OAuth Protection モジュール)

の4つで、各コンポーネントのアクセスフローは以下の通りです。
1.ユーザがコンシューマへアクセスする
2.コンシューマはリソースサーバのログオンページへリダイレクトする
3.ユーザはIDとパスワードでリソースサーバで認証を受ける
4.ユーザはリソースへのアクセスに関する同意を行う
5.リソースサーバは認可サーバから認可コードを取得する
6.リソースサーバは認可コードをコンシューマへ渡す
7.コンシューマは認可コードを元に認可サーバからアクセストークンとリフレッシュトークンを取得する
8.コンシューマはアクセストークンをリソースサーバへ渡しリソースを取得する
9.コンシューマは取得したリソースをユーザへ返す

図示すると以下の様な形になります。
















■サンプルのセットアップ準備
早速ですがサンプルをセットアップしてみます。まずは必要物をそろえます。
現在 CTP 版のモジュールは connect サイトでダウンロードできます。

  ダウンロードURL:https://connect.microsoft.com/site1168/Downloads

また、前提となる環境は以下の通りです。
  PC(私は Windows 7 x64 を利用しました)
  ・IIS
  ・Visual Studio 2010
  Windows Azure AppFabric Access Control Service
  ・v2 で適当な名前空間を一つ


■サンプルのセットアップ
1.ACS へサービス ID を追加する
 ACS のサービスの設定 -> サービス ID よりサービス ID を追加し、以下の情報を設定します。

 サービス ID の設定
  名前:FabrikamClient
 資格情報の設定
  型:パスワード
  パスワード:FabrikamSecret






















2.ACS へ証明書利用者アプリケーションを追加する
 同じく ACS より Relying Party ( 証明書利用者アプリケーション ) を追加します。

 証明書利用者アプリケーションの設定
  名前:Customer Information Service
  領域:http://contoso/CustomerInformationService/
  戻り先URL:http://localhost/
  トークン形式:SWT
 認証の設定
  IDプロバイダー:チェックを外す
 トークン署名キー
  生成 をクリックして生成する









































3.Visual Studio でサンプル・ソリューションを開き編集する
 次は先ほどのダウンロードしたモジュールを解凍した中にある「OAuth with ACS.sln」を管理者として開き、以下の設定を行います。

・SamplesConfiguration.cs の編集
  ServiceNamespace : ACS の名前空間
  ManagementServiceIdentityKey : 管理サービスの ManagementClient の資格情報の対象キーの値
  RelyingPartySigningKey : 2で設定した証明書利用者アプリケーションのトークン署名キーの値
















・ソリューションエクスプローラから ConfigureAcsConsoleApplication を右クリックして「デバッグ -> 新しいインスタンスを開始」をクリック
  → コンソールが起動するので、 Press any key to exit と表示されたら何かキーを押してアプリケーションを閉じる
 ※このコンソールアプリケーションが ACS の IdP 設定などを行います。














・HTTPSでのアクセスを行う際のチェックを無効化する(そのままだとWeb例外「"基礎になる接続が閉じられました: SSL/TLS のセキュリティで保護されているチャネルに対する信頼関係を確立できませんでした"」が発生する)

 WebClient の Defalut.aspx.cs の GetAllInformation メソッドの初めに以下のコードを追加する
 if (System.Net.ServicePointManager.ServerCertificateValidationCallback == null)
 {
  System.Net.ServicePointManager.ServerCertificateValidationCallback += delegate(Object sender, System.Security.Cryptography.X509Certificates.X509Certificate certificate,System.Security.Cryptography.X509Certificates.X509Chain chain, System.Net.Security.SslPolicyErrors sslPolicyErrors)
  {
   return true;
  };
 }


・ソリューションをビルドする


■サンプルの実行
 いよいよソリューションの実行です。

1.ブラウザより https://localhost/WebClient/ へアクセスする
  画面が表示されたら Populate all data をクリックする











2.CONTOSO CUSTOMER INFORMATION SERVICE へログオンする
  ログオン画面へリダイレクトされるので
  ・User Name : john
  ・Password : password
  を入力してログインする


















3.リソースへのアクセスに関する同意を行う
  同意を求められるので Yes を選択し、Submit する












4.リソースの表示
  元の画面にリダイレクトされ、リソースが表示される















  同様にアクセストークン、リフレッシュトークンに関する情報も表示されます。











いかがでしょうか? SAML もそうですが、OAuth もやはり実際の動きを見てみないと動きのイメージがつかないものだと思いますので、イメージをつかむためにも一度実際に動くものを見てみるのが理解を早めると思います。一度是非試してみてください。