【WP for ITPro】Windows Phone から直接 Active Directory 認証を行うには ~その4(完結編)

※この投稿は Windows Phone Advent Calender 2011 に参加しています ※こちらもお勧め Windows Phone Advent Calendar "ひとり" 2011 : ATND Windows Phone + Active Directory の 4 回目です。過去の投稿は以下より。 2011年11月28日 Tech Fielders セミナー 「Windows Phone に認証機能を実装する」で使用した資料、ソースコードは以下からどうぞ。当日の収録動画もあります。 2011/11/28 セミナー資料 Windows Phone アプリケーションに認証機能を実装する 前回までの作業で準備が整いました(かなり時間が空いてしまいましたが)。ここからは、実際に Active Directory Federation Service からセキュリティトークンを受け取ってみましょう。 極力シンプルなコードにするために、各パラメタはハードコーディングしますのでご容赦ください。 はじめに新しい Windows Phone のプロジェクトを作成します。選択するテンプレートは「Windows Phone アプリケーション」でよいでしょう。 プロジェクトが開いたら、前回作成したライブラリ(IdentityModel.WP7.dll)を「参照設定」に追加します。 MainPage.xaml ファイルをダブルクリックして開いてください。ここに、ボタンを2つ追加しておきます。1つは SSL 証明書をインストールするためのボタン、もう1つはログオンしてセキュリティトークンを受け取るためのボタンです。今回は極力シンプルにするためにユーザー名やパスワードなどは、すべてハードコーディングしてしまいます。なのでテキストボックスは使いません。 はじめに、AD…


【WP/Azure for ITPro】Windows Phone から Windows Azure AppFabric ACS を使用する

※この投稿は Windows Azure Advent Calender に参加しています Windows Phone で Windows Azure AppFabric Access Control Service からセキュリティトークンを受け取るにはためには、面倒なコードを書く必要があります。でも安心してください。うってつけのライブラリがあります。 必要なソフトウェアは以下の2つです。 Windows Phone SDK 7.1 Windows Auzre Platform Trainig Kit 2011 Novenver Update(英語版) Windows Phone SDK は Windows Phone アプリの開発環境なので、ここでの説明はよいでしょう。 ■Windows Phone 用 ACS コントロールの準備 重要なのは、Windows Azure Platform Training Kit(WAPTK) です。WAPTK を解凍すると、C:\WAPTK 配下に自習用のラボファイルが作成されます。この中に、Windows Phone 用のライブラリが用意されてます。 以下のフォルダが、Windows Phone 用の ACS用ライブラリです。…


【IDM】テキストファイルを AD FS のカスタム属性ストアとして登録してみる その1

やっとこの話題に触れることができます。なぜ触れなかったかというと、全くテストしていなかったから…すんません。 TechNet に以下の記事が用意されています。この記事では、独自の属性ストア(テキストファイル)を作成して実装する手順が紹介されています。 AD FS 2.0 Attribute Store Overview(英語) 英語ということもあり読むのも面倒ですし、せっかくなのでここでご紹介します。 AD FS の既定の属性ストアは以下の通りです。 Active Directory Domain Service Active Directory Lightwaight Directory Service SQL Server SQL Server を属性ストアとして使用する場合には、以下に示す手順に従って登録する必要があります。 【IDM】AD FS 2.0 で属性ストアとしてSQL Server を使用する では、これ以外の属性ストア(例えばテキストファイルとか Facebook とか)を使用したい場合にはどうしたらよいかといえば、独自のクラスライブラリを作成して、AD FS にカスタム属性ストアとして登録する必要があります。 クラスライブラリの仕事は何かというと、AD FS からクエリーを受け取り、指定された属性ストアからデータを検索して AD FSに返してあげる…とうことです。理屈は単純ですね。 そうすると、実装すべきものは見えてきます。 AD FS のお作法にのっとって、クエリーや結果の受け渡し部分をコーディング カスタム属性ストアにアクセスしてクエリーに合致したデータを検索する クエリーや属性ストアに不備があればエラーとしてAD FSに返してあげる といった感じです。単純ですね。 今回はテキストファイルをカスタム属性ストアとして使用しますが、作りさえすれば ORACLE だろうが OpenLDAPだろうが…


【WP for ITPro】Windows Phone から直接 Active Directory 認証を行うには ~その3

Windows Phone + Active Directory の3回目です。過去の投稿は以下より。 2011年11月28日 Tech Fielders セミナー 「Windows Phone に認証機能を実装する」で使用した資料、ソースコードは以下からどうぞ。当日の収録動画もあります。 2011/11/28 セミナー資料 Windows Phone アプリケーションに認証機能を実装する 前回までの投稿で AD FS を含めたテスト環境は整ったかと思います。今回はWPアプリへの認証機能の実装について振れるわけですが、その前にやらなければいけないことがあります。それは、AD FS と通信するためのライブラリの準備です。 前回までの投稿で書いたとおり、Windows Phone には System.DirectoryService が実装されていません。そのため、AD DS(Active Directory Domain Service)に対して直接認証を依頼することができません。そのために、Windows Phone と AD DS の間に AD FS を挟むわけです。 しかし、AD FS と通信するためには、WS-Trust というプロトコルを使用する必要があり、これを一からコーディングしていたのでは日が暮れてしまいます。そこで、既存のライブラリを使えないだろうか…と調べたところ、以下のようなすばらしい事例がありました。 aXelerate Blog | Using Active Directory authentication from Windows Phone…

1

【PowerShell】証明書を使用してパスワードを暗号化する

※ この投稿は PowerShell Advent Calendar 2011 に参加しています。 証明書というと、つい SSL で使用するサーバー証明書を思い浮かべてしまいますが、パスワードを暗号化してどこかに格納しておきたいとか、パスワードを誰かに伝えるために暗号化して渡したい..なんていうシチューエションにも証明書が使われることがあります。 パスワードを暗号化する場合、シードと呼ばれる文字列を決めておき、これを用いて暗号化するという方法が良く使われますが、この方法の場合、シード自身の漏えいを配慮する必要があります。そこで、よく使われるのが証明書を使用してパスワードの暗号化する方法です。証明書を使用する方法であれば、証明書がインストールされていなければ復号化することもできないため、文字列のシードで管理するよりは安全性が高まります。Windows Azure なんかでも、この方法を使用したパスワードの暗号化を要求されることが多く、IT Pro にとっても身に着けておきたい手法だと言えます。 証明書による暗号化は、PowerShell を使用すると簡単です。 1.証明書の準備 まずは暗号化に使用する証明書を作成しましょう。 証明書の作成は PowerShell ではなく、通常のコマンドを使用します。 ここでは自己署名証明書を使用することにします。自己署名証明書を作成する方法はいくつもありますが、代表的な方法は以下の2通りです。  IIS の管理コンソールで作成する Makecert コマンドを使用する 前者の場合、作成できる主体名は自分自身のみなので、ちょっと自由度が落ちるんですよね。ま、解凍できればよいので何でも構わないといえば構わないのですが…。 それよりも、Makecert コマンドを覚えて置いたほうが今後役に立ちます。Makecert コマンドは、Windows SDK に含まれているので、これをインストールしておく必要があることに注意してください。 Windows SDK for Windows 7 | MSDN makecert コマンドは、以下のような比較的深いパスにインストールされています。 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\x64 通常のコマンドプロンプトやPowerShellコンソールではパスが通っていないので、一度上記のフォルダに移動する必要があるので注意しましょう。 Makecert コマンドで証明書を作成するための書式は以下の通りです。以下の書式では、CN=Encpassword という主体名の証明書を、ハッシュアルゴリズム sha1…

1

【IDM】Windows Phone アプリ開発者のための AD FS 2.0 セットアップ手順書

開発者にとって何が面倒って、開発環境を準備することほど面倒なことはありません(なんてことは言っちゃいられないのでしょうけど)。特に、インフラ系の知識を多分に要求されるようなものは面倒です。 現在、Windows Phone から Active Directory Federation Service(AD FS) にアクセスして、AD 認証するためのアプリケーションについて解説する記事を書いているのですが(追ってアップします)、それに先立ち AD FS 2.0 のセットアップ手順をまとめました。 面倒な技術解説とか、そんなものは一切省いてあります。 とりあえず、「アプリからアクセスして結果が得られる」ことだけを目的にしたものです。なので、Windows Phone アプリ開発者だけでなく、A FS 入門者にも広く使っていただけると思います。クレームルールについては、少し詳しく解説してあります。 以下の SlideShare サイトからダウンロードしてください。 SlideShare – Windows Phone アプリ開発者のための AD FS 2.0 セットアップ手順 AD FS や AppFabric ACS をじっくり勉強したい、そしてクラウドアプリとの連携についてテストしてみたい!という方は以下を参照してください。300ページあります。


【WP for ITPro】Windows Phone から直接 Active Directory 認証を行うには ~その1

2011年11月28日 Tech Fielders セミナー 「Windows Phone に認証機能を実装する」で使用した資料、ソースコードは以下からどうぞ。当日の収録動画もあります。 2011/11/28 セミナー資料 Windows Phone アプリケーションに認証機能を実装する Windows Phone に業務アプリケーションをインストールして使用する場合、業務アプリケーショにはなんらかの「認証」の仕組みが実装されている必要があります。もちろん、社内にはきちんと管理された認証基盤が設置されているという前提です。例えば Active Directory ですね。 ここで業務サービスの構成について簡単にまとめておきます。考慮しなければならないのは大きく分けて以下の2点です。 業務サービスの場所 オンプレミス クラウド 業務サービスにアクセスする Windows Phone アプリケーションが何か? Internet Explorer Mobile 9 Silverlight アプリケーション 業務サービスの場所については言わずもがなですね。社内認証基盤との通信経路が確保されているかどうかが重要な課題になります。オンプレミスの業務サービスであれば通信経路の心配は必要ありませんが、クラウドに存在する場合には何らかの方策を検討する必要があります。 そこで使えるのが、IT Pro の皆さんにはおなじみ「Windows Azure Connect」です。Windows Azure Connect を使用することで、Windows Azure 上のインスタンスは社内 Active Directory ドメインと通信することができるようになります。必要であれば、AD ドメインに参加することだって可能です。 ※ Windows Azure Connect の使い方は IT Pro (IT…


【WP for ITPro】SignInButton Control を使用して Windows Phone アプリから Windows Live で認証するサンプル

この投稿は以下の記事を参考にしています。 Backup your Windows Phone Isolated Storage data to SkyDrive using Live Connect API « Niko Vrdoljak’s Blog ※上記の記事はいろいろ参考になりますので、英語が我慢できるかたは是非ともご覧ください 前回は Windows Phone アプリから Windows Live で認証するサンプルをご紹介しました。 【WP for ITPro】Windows Phone アプリから Windows Live で認証するサンプル 恥ずかしながら、その後 Live SDK(プレビュー版)で SignInButton Control が提供されていることに気づきました。こちらを使用したほうがはるかに実装が楽なので、今回は SignInButton Control を使用したサンプルをご紹介します。 Signin Control には OAuth 2.0 のハンドラーが実装されているため、前回の投稿のように ブラウザーコントロールを使用してリダイレクトを独自にハンドリングする必要がありません。そのため、大変シンプルにコードを実装することができます。超楽です。 コードに興味のない IT Pro の皆さんは、「こんな実装が可能なんだ」ということだけでも把握していただけると幸いです。 1….


【WP for ITPro】Windows Phone アプリから Windows Live で認証するサンプル

2011/11/9 追記 Live SDK(プレビュー版)を使用すると SignInButton コントロールを使用して、より簡単に実装できます。以下にサンプルを掲載したので、あわせて参照してください。 【WP for ITPro】SignInButton Control を使用して Windows Phone アプリから Windows Live で認証するサンプル —————————————————– この記事は以下の投稿を参考にしています。 Using Windows Live ID in a WP7 App » BuildMobile 最近 Facebook の話ばかりで、ついマイクロソフトが世界に誇る巨大アイデンティティプロバイダー Windows Live の扱いが手薄になっておりました。 Windows Live の認証を受ける代表的な方法として2つ挙げられます。 Windows Azure AppFabric ACS を使用する Live Connect(旧称 Windows Live Messenger Connect)を使用する 前者はすっかりおなじみですよね。今回は比較的目新しい?後者(Live Connect)を使用する方法を紹介します。 と言っても、1から説明するのは大変なのでオンラインの記事は無いかなぁと探してみたら…ありました。 Windows Live チームの…


【WP for ITPro】Windows Phone に業務アプリケーションを配布するには

Windows Phone を業務端末として採用するにあたり、壁となっているのがアプリケーションの配布の仕組みです。 Windows Phone にアプリケーションをインストールするには、アプリケーションを Windows Phone Marketplace に登録する必要があります。そして、アプリケーションは必ず Windows Phone Marketplace からダウンロードしなければなりません。標準では企業内のアプリケーション配布の仕組み(System Center Configuration Managger など)を流用することができない…というのがシステム管理者にとっての壁となっています。 しかし、こうした難関の解決こそ  IT Pro の本領が発揮できる領域です! Windows Phone Marketplace には「プライベート配布」と呼ばれる機能が提供されています。これは、Marketplace に登録されたアプリケーションを一般に公開せず、アプリケーションの URL を知っているユーザーだけがインストールできる機能です。 この機能を活用したサービスを独自に開発することで、業務アプリケーションの配布システムを構築することができます。 全体の流れを簡単に示したのが以下の図です。 はじめに、業務アプリケーションのカタログサービスにアクセスするための「管理用アプリケーション」を Windows Phone にインストールする必要があります。インストールのための URL はメール等で利用者に通知する必要があります。 通知された URL にアクセスして Windows Phone に管理用アプリケーションをインストールしたら、利用者は管理用アプリケーションを介して、業務アプリケーションの「カタログサービス」にアクセスすることができます。カタログサービスに新しいアプリケーションが登録された場合には、Windows Phone のプッシュ通知機能を使用して、利用者に新たなアプリの存在を通知することができます。 利用者は必要に応じて業務アプリケーションをインストールすることができます。 ここで問題となるのが、管理用アプリケーションの URL が外部に漏れる可能性があるということです。そのため、アプリケーション管理サービス(カタログサービス)には、防御壁として社内の ID で「認証」を行うためのしくみを実装しておかなければなりません。 クラウドのサービスを、どのように社内IDで認証するのか…IT Pro の皆さんならば容易に解決できますよね。そうです。Windows Azure…