2009年8月18日火曜日

FIM2010におけるJOINとPROJECTION

さて、久しぶりにFIM(ILM"2")ネタです。
ILM2007からFIM2010(ILM"2")への大きな進化として「コードレスプロビジョニング」がありますが、そういえばJOINとPROJECTIONってどこへ行ってしまったの?という話です。

答えから言うとSynchronization Ruleの中のAttribute Flowに吸収されてしまいました。
設定方法などはこれまでも解説をしてきたので細かくは割愛しますが、結果として少し注意が必要になったポイントもあるのでその点を含め今回は解説していきます。

まずおさらいですが、FIM2010においてはすべてのオブジェクトがMSILMデータベースを経由して同期されます。
 入:ソースCS→Metaverse→MSILMのCS→MSILMデータベース
 出:MSILMデータベース→MSILMのCS→Metaverse→ターゲットCS

ILM2007においてCS上のオブジェクトとMetaverse上のオブジェクトの関連付けを判断するのがJOINルールでした。
FIM2010でJOINルールにに対応するのがSynchronization RuleのRelationship Criteria設定です。ここに設定した属性の値が一致すればFIMは同一のオブジェクトとして扱います。












製品条件
JOINPROJECTION
ILM2007JOINルールに適合する属性を持つオブジェクトがMetaverse上に存在するJOINルールに適合する属性を持つオブジェクトがMetaverse上に存在しない
FIM2010RelationshipCriteriaに適合する属性を持つオブジェクトがMetaverse上に存在するRelationshipCriteriaに適合する属性を持つオブジェクトがMetaverse上に存在しない




これはILM2007のJOINルールでも同様ですが、Relationship Criteriaに指定した属性の値を変更してしまうと別のオブジェクトとして扱われてしまうので、Metaverse上に別のオブジェクトが作成されてしまうことになります。

これを避けるため、Synchronization RuleのAttribute Flow設定時にInitial Flow Only(初回、つまりPROJECTION時のみ同期する)という設定をRelationship Criteriaとなっている属性について行うことが必要です。(同様の理由でDN属性についても必要)













製品動作
JOINPROJECTION
ILM2007MAのAttributeFlowに定義された属性値が関連するMetaverse上のオブジェクトの属性に反映されるMAのAttributeFlowに定義された属性値を持つオブジェクトがMetaverse上に作成される
FIM2010SynchronizationRuleのAttributeFlowのうち、Initial Flow Onlyにチェックがない属性のみが関連するMetaverse上のオブジェクトに反映されるSynchronizationRuleのAttributeFlowに定義されたすべての属性値を持つオブジェクトがMetaverse上に作成される




横道にそれますが、このInitial Flow Onlyを使うことによる別の効果(むしろこちらが本来の使い方ですが)として、ILM2007ではRules ExtensionでProvision関数などに書く必要のあった初期値の設定をGUIから行うことができます。
例えば、ActiveDirectory上に作成するオブジェクトの初期パスワードを設定したい場合はunicodePwd属性にString値を入れたうえでInitial Flow Onlyをチェックすることで実現できます。


話を戻して設定を行う上での注意点ですが、現状のFIM2010ではRelationship Criteriaに指定した属性やDNにInitial Flow Onlyが設定されているかどうかのチェックをしてくれません。それほどややこしい設定ではないので忘れることはないとは思いますが、整合性をチェックするPowerShellがTechnet Forumに載っているので紹介しておきます。

http://social.technet.microsoft.com/Forums/en-US/ilm2/thread/a7946d62-0c15-4ade-a27c-5ed802a33efe

利用方法ですが、このスクリプトにチェック対象のMAの識別子を引数で渡して実行します。

チェック対象のMAの識別子はIdentity ManagerからILM MAのCSから取得します。
Search Connector SpaceでObject TypeがSynchronizationRuleの物を探してDisplayNameプロパティを見て対象のMAを判別し、Distinguished Nameを取得します。

















スクリプトの実行結果は下記のようになります。
・整合性が取れている時
Initial Flow Config Check
======================
MA Name: MSILM
SR Name: [OSR]ADDS PERSON

Initial export flow is missing for the following attributes:
None


・DNにInitial Flow Onlyが設定されていない時
Initial Flow Config Check
======================
MA Name: MSILM
SR Name: [OSR]ADDS PERSON

Initial export flow is missing for the following attributes:
- dn


・Relationship Criteriaに設定された属性(ここではsAMAccountName)にInitial Flow Onlyが設定されていない時
Initial Flow Config Check
======================
MA Name: MSILM
SR Name: [OSR]ADDS PERSON

Initial export flow is missing for the following attributes:
- sAMAccountName



最後に一応ps1ファイルのソースを転記しておきます。

#--------------------------------------------------------------------------------------------------------------------------
if($args.count -ne 1) {throw "Missing DN parameter"}
$srGuid = $args[0]
#--------------------------------------------------------------------------------------------------------------------------
write-host "`nInitial Flow Config Check"
write-host "======================"
#--------------------------------------------------------------------------------------------------------------------------
$lstMA = @(get-wmiobject -class "MIIS_ManagementAgent" -namespace "root\MicrosoftIdentityIntegrationServer"`
-computername "." -filter "Type='Identity Lifecycle Management (ILM)'")
if($lstMA.count -eq 0) {throw "There is no FIM MA configured"}
#--------------------------------------------------------------------------------------------------------------------------
write-host "MA Name:" $lstMA[0].Name
$ilmMAGuid = $lstMA[0].Guid
$lstCs = @(get-wmiobject -class "MIIS_CSObject" -namespace "root\MicrosoftIdentityIntegrationServer" `
-computername "." --filter "DN='$srGuid' and MaGuid = '$ilmMaGuid'")
if($lstCs.count -eq 0) {throw "Synchronization Rule not found"}
#--------------------------------------------------------------------------------------------------------------------------
[xml]$xmlDoc = $lstCs[0].Hologram
if($xmlDoc.selectSingleNode("/entry/primary-objectclass").get_InnerText() -ne "SynchronizationRule")
{throw ("Object is no synchronization rule!")}
write-host "SR Name:" $xmlDoc.selectSingleNode("/entry/attr[@name='DisplayName']/value").get_InnerText()
if($xmlDoc.selectSingleNode("/entry/attr[@name='FlowType']/value").get_InnerText() -eq "0x0")
{throw "Synchronization rule is not outbound!"}
if($xmlDoc.selectNodes("//entry/attr[@name='RelationshipCriteria']").count -eq 0)
{throw "Relationship criteria not defined!"}

[xml]$relNodes = $xmlDoc.selectSingleNode("//entry/attr[@name='RelationshipCriteria']/value").get_InnerText()
[xml]$exportFlows = "" +
$xmlDoc.selectSingleNode("//entry/attr[@name='InitialFlow']").get_InnerText() +
"
"

$reqAttrs = @("dn")
foreach($curNode in $relNodes.selectNodes("conditions/condition/csAttribute"))
{$reqAttrs += $curNode.get_InnerText()}
$missingAttr = @()
foreach($attr in $reqAttrs)
{
if($exportFlows.selectNodes("/export-flows/export-flow[dest = '" + $attr + "']").count -eq 0)
{$missingAttr += $attr}
}
#--------------------------------------------------------------------------------------------------------------------------
write-host "`nInitial export flow is missing for the following attributes:"
if($missingAttr.length -eq 0) {write-host "None"}
else
{
foreach($item in $missingAttr){write-host " - $item"}
}
write-host ""
#--------------------------------------------------------------------------------------------------------------------------
trap
{
Write-Host "`nError: $($_.Exception.Message)" -foregroundcolor white -backgroundcolor darkred
Exit
}
#--------------------------------------------------------------------------------------------------------------------------

2009年8月10日月曜日

FIM関連サイトの紹介

MVPの国井さんがFIM2010の環境構築に関するblogを立ち上げていらっしゃいます。

Always on the clock

さすが色々と書籍の執筆やトレーナをしていらっしゃるだけあってわかりやすく解説されています。
(私がやらなかった日本語化やクライアントコンポーネントのセットアップに関しても解説されていますので、必見です)

また、国井さんは今月のTechEDでもFIM関連のセッションを担当されるそうですので、参加される方は聴講してみてはいかがでしょうか?

2009年7月31日金曜日

Geneva ServerのSTSとしての動作を確認

なかなか時間がとれずに手をつけられなかったGeneva(Active Directory Federation Services)ですが、ようやく触り始めました。
まずは手始め、ということでGeneva ServerのSTS(Security Token Service)の動作確認も兼ねて、STSを使うWebアプリケーションをGeneva Framework(Windows Identity Framework)を使って作ってみました。

動作のイメージはこんな感じです。













作業の流れとしては、
・Geneva Framework / Geneva Framework SDKのインストール
・Claimを使うWebアプリケーションの作成
・作成したアプリケーションが別途構築したGeneva ServerのSTSを使うように設定
・作成したアプリケーションをGeneva ServerにRelying Partyとして登録
・動作確認(STSに定義したClaimをキチンと取得できるかどうか)
となります。

早速順番に見ていきます。

■Geneva Framework / Geneva Framework SDKのインストール

まず今回用意した環境は下記の通りです。
・Windows Server 2008 EE 64bit(1台のサーバにADDS以外は入れました)
・Geneva Framework
・Geneva Framework SDK
・Visual Studio 2008 STD(.NET Framework 3.5SP1)


■Claimを使うWebアプリケーションの作成

アプリケーションの作成は下記の手順で行います。

1.Visual Studioを起動し、Webアプリケーションの新規作成













2.ソリューションエクスプローラからGeneva Frameworkのライブラリへの参照を設定します。
  対象は
  ・Microsoft.IdentityModel
  ・System.IdentityModel
  の2つです。






















3.Webページを作成します。
  取得したTokenからClaimを取り出してテーブルに内容を表示することにします。

















4.コードの作成
  Page_Loadイベントの中で取得したTokenからClaimを取り出します。

  IClaimIdentity型の変数callerを定義し、コンカレントセッションのセキュリティプリンシパル情報=取得したTokenをセットします。

  (実際のコード)
  IClaimsIdentity caller = (IClaimsPrincipal)(Thread.CurrentPrincipal)).Identities[0];

  次に、callerのメンバであるClaimsプロパティに入っているそれぞれのClaim(属性)をLINQを使って取り出して行きます。
  たとえば、ClaimTypeがNameの属性を取得したければ、caller.ClaimsからSystem.IdentityModel.Claims.ClaimType.Nameと合致するClaimを抜き出します。

  (実際のコード)
  string Name = (from c in caller.Claims where c.ClaimType == System.IdentityModel.Claims.ClaimType.Name select c.Value).Single();














■作成したアプリケーションが別途構築したGeneva ServerのSTSを使うように設定

具体的にはユーティリティを使ってアプリケーションのweb.configを設定します。

ドキュメントを見ているとソリューションエクスプローラで右クリックするとSTSの設定ができるようなことが書いてありますが、実際には出てこなかったのでGeneva Frameworkのインストールフォルダ以下のFedUtil.exeを直接実行します。
 やることは、
 ・作成したアプリケーションのWeb.configを指定
 ・STSとしてGeneva Serverのmetadataを指定
  ※https:///FederationMetadata/2007-06/FederationMetadata.xml
 の2点です。

















この後、アプリケーションをビルドして発行~IISへの登録をして、使えるようにします。


■作成したアプリケーションをGeneva ServerにRelying Partyとして登録

今度はSTS側の設定ですのでGeneva Serverの管理コンソールから作業をします。

Geneva Serverの管理コンソール















以下の手順でRPを登録します。
1.Policy → Replying Partiesを選択し、操作パネルから「Add Relying Party」をクリックする















2.ウィザードに従いRPの登録を行います
  すでにアプリケーション側は作成~設定済みなのでSelect Data Source画面では「Import relying party configuration from a local federation metadata file」を選択し作成したアプリケーションプロジェクトフォルダ配下にあるmetadataのxmlファイルを選択すてRP情報を登録します。




















3.Claimのマッピングルールを作成
  ウィザードが終了するとClaimルールエディタが起動するので、以下の通りマッピングなどを設定します。

項目設定
ルールタイプLDAP
Attribute StoreEnterprise Active Directory User Account Store(Geneva Serverが所属するドメインのAD DS)
ClaimマッピングLDAPOutgoing Claim Type
sAMAccountNameName
mailE-Mail Address
givenNameGiven Name
snSurname


  設定したら保存してエディタを終了します。

















■動作確認(STSに定義したClaimをキチンと取得できるかどうか)

ここまで来たらあとは動作テストです。以下の手順でうまく動くかを試してみます。

・ブラウザで作成/発行したテストアプリケーションサイトへアクセス
 https://localhost/WebApplication3/










・STSへリダイレクトされるのでサインイン
 認証方法としてWindows統合認証、証明書、IDとパスワードから選択出来るのでWindows統合認証を選択(もちろんIDとパスワードを入れてもOK)













・STSで認証され、元のサイトへリダイレクト
 STSから渡ってきたクレーム情報(ADDSの属性)が表示されればOKです。



















余談ですが、実際のアクセスの流れstraceでトレースしてhttpreplayで表示みると以下の通りです(細かい内容は機会があれば解説したいと思います)

IDMethodRequested URLStatus
1GEThttp://localhost/WebApplication3/default.aspx302
2GEThttp://localhost/FederationPassive/?wa=wsignin1.0&wtrealm=https%3a%2f%2flocalhost%2fWebApplication3%2f&wctx=rm%3d0%26id%3dpassive%26ru%3d%252fWebApplication3%252fdefault.aspx&wct=2009-07-30T08%3a47%3a46Z200
3POSThttp://localhost/FederationPassive/IPSelection.aspx?wa=wsignin1.0&wtrealm=https%3a%2f%2flocalhost%2fWebApplication3%2f&wctx=rm%3d0%26id%3dpassive%26ru%3d%252fWebApplication3%252fdefault.aspx&wct=2009-07-30T08%3a47%3a46Z200
4POSThttp://localhost/FederationPassive/IPSelection.aspx?wa=wsignin1.0&wtrealm=https%3a%2f%2flocalhost%2fWebApplication3%2f&wctx=rm%3d0%26id%3dpassive%26ru%3d%252fWebApplication3%252fdefault.aspx&wct=2009-07-30T08%3a47%3a46Z200
5POSThttp://localhost/FederationPassive/SignIn.aspx?wa=wsignin1.0&wtrealm=https%3a%2f%2flocalhost%2fWebApplication3%2f&wctx=rm%3d0%26id%3dpassive%26ru%3d%252fWebApplication3%252fdefault.aspx&wct=2009-07-30T08%3a47%3a46Z302
6GEThttp://localhost/FederationPassive/auth/integrated/IntegratedSignIn.aspx?wa=wsignin1.0&wtrealm=https%3a%2f%2flocalhost%2fWebApplication3%2f&wctx=rm%3d0%26id%3dpassive%26ru%3d%252fWebApplication3%252fdefault.aspx&wct=2009-07-30T08%3a47%3a46Z401
7GEThttp://localhost/FederationPassive/auth/integrated/IntegratedSignIn.aspx?wa=wsignin1.0&wtrealm=https%3a%2f%2flocalhost%2fWebApplication3%2f&wctx=rm%3d0%26id%3dpassive%26ru%3d%252fWebApplication3%252fdefault.aspx&wct=2009-07-30T08%3a47%3a46Z401
8GEThttp://localhost/FederationPassive/auth/integrated/IntegratedSignIn.aspx?wa=wsignin1.0&wtrealm=https%3a%2f%2flocalhost%2fWebApplication3%2f&wctx=rm%3d0%26id%3dpassive%26ru%3d%252fWebApplication3%252fdefault.aspx&wct=2009-07-30T08%3a47%3a46Z200
9POSThttp://localhost/WebApplication3/302
10GEThttp://localhost/WebApplication3/default.aspx200

2009年7月28日火曜日

ILM2007FP1 PowerShellコマンドレット

以下のURLからダウンロードできます。(当然ながら使うためには事前にPowerShellをインストールしておく必要があります)

・ILM2007FP1 PowerShellコマンドレット
http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=89b59938-4323-4ad2-afed-99fec4520385

・リファレンスガイド
http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=38b31e06-0342-481e-b744-9899d5b601db


インストールは以下の手順です。
■MAConfigSetup.msiの実行
ダウンロードしたMSIファイルを実行します。

■PowerShellへのスナップインの追加
カスタムコマンドレットを使うためにはインストール/スナップインの追加という流れになります。

ただ、追加したアセンブリ(ILMインストール先\UIShell\Microsoft.DirectoryServices.MetadirectoryServices.Config.dll)の厳密な名前で署名されていないので、sn.exeにVrオプションを付けて検査をスキップさせる必要があります。

・sn.exeでの検査のスキップ
C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin> sn.exe -Vr "C:\Program Files\Microsoft Identity Integration Server\UIShell\Microsoft.DirectoryServices.MetadirectoryServices.Config.dll"

Microsoft(R) .NET Framework Strong Name Utility バージョン 2.0.50727.42
Copyright (c) Microsoft Corporation. All rights reserved.

アセンブリ 'Microsoft.DirectoryServices.MetadirectoryServices.Config,31BF3856AD364E35' の確認エントリが追加されました。



次にカスタムコマンドレットのインストールを行います。インストールにはInstallUtil.exeを使用します。

・インストール
PS C:\Program Files\Microsoft Identity Integration Server\UIShell> &"$env:windir/Microsoft.NET/Framework/v2.0.50727/InstallUtil.exe" ".\Microsoft.DirectoryServices.MetadirectoryServices.Config.dll"
Microsoft(R) .NET Framework Installation utility Version 2.0.50727.1433
Copyright (C) Microsoft Corporation. All rights reserved.

トランザクションのインストールを実行中です。

インストール段階を開始しています。
C:\Program Files\Microsoft Identity Integration Server\UIShell\Microsoft.DirectoryServices.MetadirectoryServices.Config.dll アセンブリの進行状態については、ログ ファイルの内容を参照してください。
ファイルは C:\Program Files\Microsoft Identity Integration Server\UIShell\Microsoft.DirectoryServices.MetadirectoryServices.Config.InstallLog にあります。
アセンブリ 'C:\Program Files\Microsoft Identity Integration Server\UIShell\Microsoft.DirectoryServices.MetadirectoryServices.Config.dll' をインストールしています。
該当するパラメータ:
logtoconsole =
assemblypath = C:\Program Files\Microsoft Identity Integration Server\UIShell\Microsoft.DirectoryServices.MetadirectoryServices.Config.dll
logfile = C:\Program Files\Microsoft Identity Integration Server\UIShell\Microsoft.DirectoryServices.MetadirectoryServices.Config.InstallLog

インストール段階が正常に完了しました。コミット段階を開始しています。
C:\Program Files\Microsoft Identity Integration Server\UIShell\Microsoft.DirectoryServices.MetadirectoryServices.Config.dll アセンブリの進行状態については、ログ ファイルの内容を参照してください。
ファイルは C:\Program Files\Microsoft Identity Integration Server\UIShell\Microsoft.DirectoryServices.MetadirectoryServices.Config.InstallLog にあります。
アセンブリ 'C:\Program Files\Microsoft Identity Integration Server\UIShell\Microsoft.DirectoryServices.MetadirectoryServices.Config.dll' をコミットしています。
該当するパラメータ:
logtoconsole =
assemblypath = C:\Program Files\Microsoft Identity Integration Server\UIShell\Microsoft.DirectoryServices.MetadirectoryServices.Config.dll
logfile = C:\Program Files\Microsoft Identity Integration Server\UIShell\Microsoft.DirectoryServices.MetadirectoryServices.Config.InstallLog

コミット段階が正常に終了しました。


・スナップインの登録状態の確認

PS C:\Program Files\Microsoft Identity Integration Server\UIShell> Get-PSSnapin -Registered

Name : MIIS.MA.Config
PSVersion : 1.0
Description : PowerShell snap-in for configuring management agents


・スナップインを追加

PS C:\Program Files\Microsoft Identity Integration Server\UIShell> Add-PSSnapin MIIS.MA.Config
PS C:\Program Files\Microsoft Identity Integration Server\UIShell>



■利用可能なコマンドレット
実は私の環境では完全には動かなかったのですが、リファレンスガイドを見ると下記のようになっています。

コマンドレット機能引数
Import-MIISServerConfigサーバ設定のインポートを行う
(Identity Managerのfileメニューからエクスポートしたxmlファイルをインポートする)
-Path
 xmlファイルの存在するフォルダのパス
Set-MIISADMAConfigurationActive Directory MAの設定を更新する(フォレスト、クレデンシャルのみ)
このコマンドレットを使ってフォレスト設定を更新すると対象のMAはフォレスト内のすべてのドメインに対して同期を行うように設定される(MAのパーティションリストにすべてのドメインが追加される)
また同時に既存の実行プロファイルに各ドメインの情報が追加される
-Credentials
Active Directory MAユーザがドメインに接続する際に利用するパスワード(Stringではないので,Get-Credential forest\userでパスワード入力画面をポップアップさせる)

-MA Name
 対象のMA名

-Forest
 同期対象のフォレストのFQDN
Set-MIISExtMAConfigurationExtensible MA(XMA)の設定を更新する(クレデンシャルおよびConnect toプロパティのみ)-ConnectTo
 XMAのConnect toに設定する接続文字列

-Credentials
XMAユーザがドメインに接続する際に利用するパスワード(Stringではないので,Get-Credential forest\userでパスワード入力画面をポップアップさせる)

-MA Name
 対象のMA名

2009年7月16日木曜日

"Geneva"の正式名称発表

7/13にWPC(Worldwide Partner Conference)で発表されたようです。

http://blogs.technet.com/forefront/archive/2009/07/13/business-ready-security-news-at-wpc.aspx

CodeName正式名称
"Geneva" ServerActive Directory Federation Services
"Geneva" FrameworkWindows Identity Foundation
"Geneva" CardspaceWindows Cardspace



まぁあまり違和感ないと言うか順当と言うか、です。

2009年7月15日水曜日

カンターラ・イニシアティブ発足記念セミナー

昨日、オラクル青山センターで開催されたので参加してきました。

アジェンダおよび内容は以下の通り。

1.カンターラ・イニシアティブ概要説明 / NTT情報流通プラットフォーム研究所 高橋氏

 アイデンティティのベン図(The Venn of Identity)を紹介し、カンターラ・イニシアティブとしてはアイデンティティ管理に関連する3つの技術分野(SAML、OpenID、Infomation Card)の「ハーモナイズ」を目指すという話でした。
 ※ちなみにカンターラとはスワヒリ語で「橋」という意味で、語源にアラビア語の「調和」を持つとのことです。語源とよりアラビア語では3つの子音で意味をあらわすので今回のケースだと「نطر」(n t r)がベースとなっている「قنطرة(カンタラトゥン)=アラビア語でも橋の意」がそのままスワヒリ語になっているんだと思いますが。

 活動の特徴としては、技術仕様の検討は行うが、実際の策定は各団体(OIDFやLibertyなど)が行うことになる、ということでした。
 ちなみにConcordia、Liberty Alliance、Open Libertyは今後カンターラ・イニシアティブの配下にはいるようです。

2.分科会における取組事例~SAML-OpenID連携~ / NTT情報流通プラットフォーム研究所 岡本氏

 RSAカンファレンス2009で紹介したデモンストレーションが紹介されました。
 OpenIDのIdPで認証してSAML対応のサービスを利用したり、決済をする場合は追加でSAML IdPでも認証を要求して多要素認証としたり、という内容でした。

3.カンターラ・パートナーセッション
 OpenID最新動向、OpenIDファウンデーションジャパン活動 / 野村総合研究所 崎村氏

 OpenIDそのものの簡単な紹介と、OpenIDファウンデーションの活動内容(技術セミナや崎村氏自身が関与している各種仕様策定の活動)の紹介がありました。

 また、関連するニュースとしてGoogle AppsがOpenIDに対応する、という話がありました。(意図せぬ情報のリークだった様でしたが)

4.カンターラに集う技術事例(1)Liberty/SAML事例紹介
 SAML認証によるGoogleAppsの認証連携事例の紹介 / サイオステクノロジー 中田氏

 「コスト削減」という企業における命題に対してクラウドが選択されてきていますが、エンタープライズ利用に必要な「セキュリティ」と、クラウドの特徴である「どこからでも使える」の相反をどう解決するか、という点への取り組みが紹介されました。

 例えば、GMailを社内からOutlookやThunderbirdといったメールクライアントでpop/imap利用をしたいが、GoogleAppsの特徴からして自宅でも同じ設定をすればそのまま使えてしまうのでなんとかしたい、というセキュリティ上の課題を社内プロキシ経由でないとGMailが使えないようにした、という話がありました。

5.カンターラに集う技術事例(2)OpenID事例紹介
 NTTComにおけるOpenID活用の取り組み / NTTコミュニケーションズ 北村氏

 現在取り組みつつある「マスタID」のOpenID対応について紹介されました。
 以前はLiberty仕様で構築されていたものをOpenIDに対応させようとしているとのことです。

 取組みとしては、OpenID対応のIdPプロキシのようなものを構築してNTTコミュニケーションズ提供のIdP、NTTドコモのIdP、gooのIdPをユーザが選択できるような仕組みづくりや、決済などを含むアプリケーションを含めたサービス対応を考えているようです。

 参加者からの質問も出ていたのですが、例えば決済する際にgooのIDとドコモのIDを同列に信頼してよいのか?という課題への取り組みが重要になってくると思います。

6.カンターラに集う技術事例(3)Infomation Card事例紹介 / マイクロソフト 田辺氏

 SAMLやOpenIDとは少し違った点としてCardSpaceではユーザビリティを中心に取組んでいるという話が紹介されました。
 Geneva STSを使った別ドメインのSharePointサイトへのログオン/属性交換のデモも行われました。



まぁとりあえずは発足したばかり、ということでカンターラ・イニシアティブとしての具体的な取組みはこれから、ということだと思いますので、今後の動きを要ウォッチだと思います。

2009年7月7日火曜日

OpenIDとSAMLの比較

最近Project Concordiaのメーリングリストで「OpenIDとSAMLのどちらがスケーラブルでエンタープライズ環境での利用に耐えうるか?」という議論が繰り広げられていたのですが、その中で割と面白いレポートが出てきたので紹介します。(議論自体はConcordiaという場で取り上げるには場違いで好き勝手に発散していった感がありますが・・・。まぁOpenID、SAML、CardSpaceの各コミュニティが割と近くにいる日本と違って欧米ではOpenID vs SAMLという風潮があるようです)

Technical Comparison: OpenID and SAML
http://identitymeme.org/doc/draft-hodges-saml-openid-compare.html

Abstract

This document presents a technical comparison of the OpenID Authentication protocol and the Security Assertion Markup Language (SAML) Web Browser SSO Profile and the SAML framework itself. Topics addressed include design centers, terminology, specification set contents and scope, user identifier treatment, web single sign-on profiles, trust, security, identity provider discovery mechanisms, key agreement approaches, as well as message
formats and protocol bindings. An executive summary targeting various audiences, such as end-users, implementors, and deployers, is provided. We do not attempt to assign relative value between OpenID and SAML, e.g. which is "better"; rather, it attempts to present an objective technical comparison.


ざっくり言うと、OpenIDの認証プロトコルとSAMLのWebブラウザSSOプロファイルおよびSAMLのフレームワーク自体をあくまで技術的側面から比較した資料であり、どちらが優れているという優劣をつけるために資料ではない、ということです。
用語の対比や仕様の対比表があったりするので、とても判り易くまとまっていると思います。(まだざっくりと全体を眺めただけですが)