Microsoftはクラウド事業を開始し、顧客は自分たちのアプリケーションを新しいプラットフォームに移行しようとしている。その中で、認証とアイデンティティ管理に取り組む必要がある。InfoQの編集者であるJon Arild Torresdalは、Patterns & Practicesチームのシニア・プログラム・マネージャであるEugenio Pace氏にインタビューを行い、最近、Microsoftからリリースされたフェデレーションおよびアイデンティティ技術に関して話しを聞いた。
しかし、フェデレーションはクラウドでのみ価値があるものではなく、パートナー企業とのフェデレーションやアプリケーションをまたいだシングル・サイン・オンを求めている企業には、興味の対象であろう。.NETプラットフォーム上でのフェデレーションに関して、より詳細な情報を求めている開発者やITプロフェッショナルのために、InfoQは有益だと思われる一連の参考文献を集め、この記事の最後に記載した。
InfoQ:フェデレーションに関する概要と、目的としているところをお教えねがえませんか。
Eugenio氏:今日の多くのアプリケーションは、ユーザの認証に対して責任をもっています。これらのアプリケーションは、ユーザの資格証明(通常はユーザ名/パスワードの形か、その他の共有秘密鍵)を管理することによって認証を行っています。この結果として、ユーザ・アカウントのレポジトリが拡散し、それぞれのアプリケーションごとにレポジトリをもつことになってしまいます。こういった状態でも問題にはならない場合も少なくはないでしょう。しかし、多くのシナリオにおいては、このアプローチをとることによって、多くの制限が発生します。例えば、それぞれのアプリケーションが独自のデータベースにユーザ・アカウントを保持していたのでは、シングル・サイン・オンを実現するのはとても難しいでしょう。また、新規ユーザの作成時にすべてのアプリケーションにユーザを作成しなければならないといった管理負荷の増大という問題もあります。さらにユーザがすでに有効でないのに、アプリケーションのうちの一つでユーザの無効化を忘れていて、不注意で本来許すべきでないアクセスを許可してしまうといったセキュリティ・リスクの増大といった問題もあります。アイデンティティ・フェデレーション(およびクレームをベースとした関連する認証アーキテクチャ)は、ユーザ認証を個々のアプリケーションから分離し、「アイデンティティ・プロバイダ」という特別なサーバにその機能を移管することにより、これらの問題を解決しようとしているのです。
InfoQ:以前、.NETのフェデレーションは実装するのが難しく、正しく動かすには、セキュリティに精通している必要がありました。この状況をかえるために、Microsoftは何をしたのですか?
Eugenio氏:Microsoftは、最近、「クレームを利用可能な」.NETアプリケーションのための.NETライブラリである Windows Identity Foundation (WIF)をリリースしました。WIFでは、高度な抽象化が行われおり、アイデンティティ・フェデレーションおよびクレームの世界へ入る障壁は劇的に低くなっています。WIFは、SDKとVisual Studioに統合されたツールを提供しており、開発時の作業がさらに単純になっています。
InfoQ:どういったところで、フェデレーションがもっとも採用されると思いますか?もしくはもっとも効果がでるのはどういったところですか?
Eugenio氏:アイデンティティ・フェデレーションが活躍する重要なシナリオの一つは、クラウド・ベースのアプリケーションです。企業がクラウドにアプリケーションを移動していけばいくほど、クレーム・ベースの認証方式は、望ましい方式となっていくと私は思います。
InfoQ:あなたと、 Dominick Baier氏、Vittorio Bertocci氏、Keith Brown氏、Matias Woloski氏は、最近、「A Guide To Claims-Based Identity and Access Control」という本を出版し、これは本とともに無料のPDFでも利用可能ですね。この本に関してコメントをいただけませんか?
Eugenio氏:このガイドのゴールは、開発者に短時間でクレーム・ベース・アイデンティティの利点を理解してもらえるよう手助けをすることです。この本では、きわめて一般的なシナリオ(SSOや複数のパートナーのフェデレーション、Webサービスのフェデレーションなど)を取り上げており、これらの特定の要求に対処する際の考慮点とデザインに関して述べています。究極的なゴールはクレーム・ベース・アイデンティティの採用を加速させることです。
InfoQ:クレームについて言及されましたが、わたしが知る限りでは、クレームはv.1.0のころから.NETにありましたが、多くの人は積極的に利用してきませんでした。現在、クレームが.NETのアイデンティティモデルの中心部分になったように見受けられます。クレームモデルの概要を説明いただき、今までのモデルとなにが違うのかを教えていただけませんでしょうか。
Eugenio氏:WIFは、セキュリティ・トークンの検証、パース、交換といった詳細をすべて抽象化して開発者が関わらなくてよいようにしてくれています。WS-FederationとWS-Trustプロトコルを実装しており、SAML 1.1および1.2のセキュリティ・トークンを扱えます。開発者は、たいていの場合IPrincipalやIIdentityといった高度に抽象化されたものを利用することになるでしょう。WIFはこれらの特別なバージョンを提供します。IClaimsPrincipalとIClaimsIdentityです。
InfoQ:WIFフレームワークについて、他になにかありますでしょうか?
Eugenio氏:WIFは、Webサイト向けのASP .NETやWebサービス向けのWCFのような人気のあるアプリケーション・スタックとシームレスに連携します。多くのシナリオにおいては、開発者はIPrincipleインターフェースのような既に慣れ親しんだ抽象化レイヤを単に利用すればよいだけなのです。WIFは実行時に自動的に具体的なクレームベースの実装を組み立ててくれます。例えばASP .NETアプリケーションでは、開発者はUser.Identity.Nameを呼び出せばよいのです。ここで、Identityプロパティは、実際は IClaimsIdentity であり、 Name はクレームコレクションから抽出されたものです。Visual Studioに統合されたツールによって、開発者は既存のアプリケーションをクレームを利用するように自動変換することも可能です。この例のひとつは、Webアプリケーションに対してクレームを有効化するためのVisual Studioの「STSリファレンスの追加」ウィザードです。
InfoQ: ADFS 2.0は、Active Directoryと統合されたMicrosoftのSTSですよね。現時点では(その名前が示すとおり)、Active Directoryしかサポートしていません。ADFSは、AD専用のSTSにとどまり続けるのか、将来、他の統合ポイントを期待して良いのかどちらでしょうか。
Eugenio氏: ADFS v2は現時点では、ADに対するユーザの認証のみをサポートしています。しかしADFS v2は、様々な属性を利用可能なクレームを発行するための、リッチで拡張性のあるエンジンをサポートしています。デフォルトの状態で、ADFS v2は、LDAPディレクトリやSQLレポジトリに格納された情報からクレームを発行することができます。さらに独自のカスタム属性プロバイダを開発することも可能です。
InfoQ: ADFSは、インターネット越しに企業ドメインでの認証を行うことが可能な、オプションのプロキシを提供しています。ITの人たちがこの機能が安全だと確信するのは難しいと思います。このプロキシの動作方式に関する詳細な情報と推奨される使い方を教えていただけませんでしょうか。
Eugenio氏:シナリオはそれぞれなので、お客様ごとの要求の詳細を分析する必要があるでしょう。主要なシナリオはあなたが述べられたものです。このプロキシは、社内のSTSの上に追加のセキュリティ・レイヤを構築します。このプロキシは、マルチファクタ認証を実装するために拡張可能であり、インターネットユーザの認証要求を強化することが可能です。
InfoQ:ADFS 2.0は、SAMLトークンをサポートしていますよね。SAMLプロトコルもサポートしているのですか?
Eugenio氏: ADFS v2は現時点で次のものをサポートしています。SAMLプロトコル、IdP Lite、SPLite、EGov 1.5プロファイル。そしてLiberty Allianceの相互運用性テストをクリアしています。
InfoQ:本日はお時間をいただきありがとうございました。
参考文献
以下にあげる参考文献は、開発者やITプロフェッショナルが、.NET上でのフェデレーションの実装方法について追加情報を得るのに役立ってくれるはずだ。
- Windows Identity Foundation (WIF)
.NET上のセキュリティの実装を簡単にしてくれる開発フレームワーク - Windows Identity Foundation SDK (WIF SDK)
クレームを利用可能なアプリケーションを構築するためのVisual Studioのテンプレートおよびウイザードを含む。 - Active Directory Federation Services 2.0 (AD FS)
Active Directoryと統合されたMicrosoftのセキュリティ・トークン・サービス - A Guide To Claims-Based Identity and Access Control
MicrosoftのPatterns & Practicesチームによる書籍で、フェデレーションを利用するアプリケーションに役立つ様々なコンセプトをカバーしている。 - Identity Developer Training Kit
AzureやASP.NET、Silverlight、WCFといった様々な.NETテクノロジーでのフェデレーションの実装方法の一連のコーディング例およびステップ・バイ・ステップのガイド。 - ホワイトペーパー
フェデレーション関連のコンセプトを概念的に説明した開発者向けの一連のホワイトペーパー - Starter STS
Dominick Bayer氏によって構築されたWIFを使ったオープンソースのセキュリティ・トークン・サービス。ASP.NETプロバイダ、WS-Federation、WS-Trust、REST、OpenId、Information Cardsをサポート - The Id Element show
Vittorio Bertocci氏によって運営されているアイデンティティ管理に関連したインタビューや発表、デモ - Microsoft’s Identity Management Web Site