2010年12月26日日曜日
ACSでWindowsLiveIDを使う場合に割と普通にはまるポイント
2010年12月21日火曜日
【祝】日本語化!クレーム ベース ID およびアクセス コントロールのガイド
2010年12月15日水曜日
カンターラ・イニシアティブ技術セミナー2010に参加してきました(12/19更新)
2010年12月9日木曜日
[ADFS2.0] SAML 2.0ベースのWebSSOシステムとの連携
Using AD FS 2.0 for interoperable SAML 2.0-based federated Web Single Sign-On
[直リンクです]※元のダウンロードページがわからなかったので。。。
http://download.microsoft.com/documents/France/Interop/2010/Using_ADFS2_0_For_Interoperable_SAML_2_0-Based_Federated_SSO.docx
これまで個別のWebSSO製品とのフェデレーションのSTEP-BY-STEPガイドはリリースされてきましたが、根本的にAD FS2.0ろSAMLの相互運用性について書いたドキュメントはGenevaの時代を含めなかった様に記憶しています。
[参考:これまでリリースされた各種WebSSO製品とのフェデレーションガイド]
・CA Federation Manager
http://www.microsoft.com/downloads/en/details.aspx?displaylang=en&FamilyID=fef76ca4-5677-4356-afb1-196d8f92dc79
・Oracle Identity Federation
http://www.microsoft.com/downloads/en/details.aspx?displaylang=en&FamilyID=46bd1cc0-cbe1-4426-875d-428b25b65f1a
・Shibboleth 2 / InCommon Federation (製品じゃないけど)
http://technet.microsoft.com/en-us/library/gg317734(WS.10).aspx
※他にもGenevaの時代にNovell Access ManagerやSun OpenSSOとの相互運用性のホワイトペーパーはありました。
http://www.microsoft.com/downloads/en/details.aspx?displaylang=en&FamilyID=9eb1f3c7-84da-40eb-b9aa-44724c98e026
そんな状況を踏まえてこのホワイトペーパーでは以下を目的にしています。
-------------------------------------------------------------------------
--------------------------------------------------------------------------For that purposes, beyond a short depiction of AD FS 2.0 to introduce key
concepts for the rest of the paper, it gives an understanding of:
・ What the SAML 2.0 standard is all about,
・ What its support makes possible,
・ The common "gotchas" that may be encountered along with AD FS 2.0.
So that federation projects involving AD FS 2.0 in this context can be more easily
completed, and consequently enabling customers to realize the full
interoperability potential of AD FS 2.0.
要は、SAML 2.0とは何であるか?、何が出来るのか?、AD FS 2.0を使うときに引っかかるポイントはなんなのか?を理解するためのもの、ということです。
これからAD FS2.0やSAMLに取り組む人にはかなり役に立ちそうです。
以下に目次を紹介しておきます。
1 INTRODUCTION
1.1 OBJECTIVES OF THIS PAPER
1.2 ORGANIZATION OF THIS PAPER
1.3 ABOUT THE AUDIENCE
1.4 TERMINOLOGY USED IN THIS PAPER
1.5 ABOUT THE LIVE DEMO AT THE MTC PARIS
2 AN UNDERSTANDING OF THE SAML 2.0 STANDARD
2.1 A SUITE OF SPECIFICATIONS
2.2 SAML 2.0 ASSERTIONS
2.3 SAML 2.0 PROTOCOLS
2.4 SAML 2.0 BINDINGS
2.5 SAML 2.0 PROFILES
2.6 SAML 2.0 OPERATIONAL MODES
3 A BRIEF OVERVIEW OF ACTIVE DIRECTORY FEDERATION SERVICES (AD FS) 2.0
3.1 A PASSIVE/ACTIVE SECURITY TOKEN SERVICE (STS)
3.2 FEDERATION IN HETEROGENEOUS ENVIRONMENTS
3.3 AD FS 2.0 AND THE BUSINESS READY SECURITY
4 THE ELEVEN INTEROPERABILITY "GOTCHAS" YOU SHOULD BE AWARE OF
4.1 ENCRYPTION
4.2 SIGNING
4.3 CRL CHECKING
4.4 METADATA HANDLING
4.5 NAME ID FORMATS
4.6 PERSISTENT & TRANSIENT NAME IDS
4.7 SHARING ATTRIBUTES WITH SAML 2.0 SPS
4.8 HTTP ARTIFACT BINDING
4.9 PRE-FORMATTED HYPERLINKS
4.10 SSO FROM SAML 2.0 IDPS TO WIF RELYING PARTY APPLICATIONS
4.11 IDP DISCOVERY
APPENDIX A. AD FS 2.0 CUSTOMIZED FILES
2010年12月1日水曜日
「AD FS 2.0 デザインガイド」の日本語版
今日も以下のURLで「AD FS 2.0 デザインガイド」の日本語版が公開されています。
http://technet.microsoft.com/ja-jp/library/gg308546.aspx
コンテンツは以下の構成となっています。
・AD FS 2.0 を展開する前に重要な概念について理解する
・AD FS 2.0 の展開目的を特定する
・展開目的を AD FS 2.0 設計にマップする
・展開を計画する
・フェデレーション サーバー の配置を計画する
・フェデレーション サーバー プロキシの配置を計画する
・付録 A: AD FS 2.0 の要件を確認する
私もAD FS 2.0(当時はGenevaでしたが)を触り始めたころは英語版のマニュアルと格闘していたのですが、その後このデザインガイドの英語版やEuginio Paceさんの「A Guide to Claim-Based Identity and Access Control」やVittorio Bertocciさんの「Understanding Windows CardSpace」を参考にして小難しい概念を理解しようとしていた思い出があります。
なかなか特殊な分野なのか日本語での書籍は商業的にも難しいのかも知れませんが、このように日本語のオンラインドキュメントが出てきたことで初めの一歩のハードルは下がってきたのかも知れません。
(一部製品のメニューの日本語名とは異なる用語が使われてしまっているので混乱はあるかも知れませんが・・・。元々のメニューの日本語がわかりにくすぎる、という説もw)
2010年11月24日水曜日
Office365のアイデンティティ管理
マイクロソフトが提供するSaaSであるBPOSが次期リリースよりOffice365という名称になるのはある程度周知の事実かと思います。
提供されるサービス自体ももちろん色々とエンハンスされていますが、ここではアイデンティティ管理に関する機能に着目してみます。(ネタ元は殆どTechEd Europeです)
■Office365におけるアイデンティティ管理
まず、Office365のエディションとそのアイデンティティ管理に関する特徴を見てみます。
参考サイト:http://office365.microsoft.com/en-US/office365-beta.aspx
Office365のエディションとして提供されるのは大きく分けると
・Office365 for small business
・Office365 for enterprises
・Office365 for education
の3種類です。
また、アイデンティティ管理については以下の3つのパターンが存在します。
1.MS OnlineIDのみ
2.MS OnlineID + DirSync
3.Federated ID + DirSync
■フェデレーションの構成
基本的には、AD FS2.0とOffice365側にあるFederation Provider(Microsoft Federation Gateway / MFG)を使ってOffice365上のアイデンティティ情報とオンプレミス(Active Directory)のアイデンティティのひも付けを行う(フェデレーション)という考え方です。
この際Office365側のアイデンティティストアとオンプレミスのアイデンティティストア(Active Directory)の情報の同期を行うのがDirSyncというツール、というわけです。
また、フェデレーションについてはブラウザを使う場合はPassiveプロファイルが使えますが、Outlook等のリッチクライアントを使う場合はActiveプロファイルでのアクセス(自らがIdPのエンドポイントをあらかじめ知っている必要がある)を行うため、初回のみService Connectorというツールのインストールが必要になります。
関連するコンポーネントをまとめると以下のようになります。
コンポーネント | 役割 |
AD FS2.0 / MFG | フェデレーションを行う |
DirSync | オンプレミスのアイデンティティストアとオンライン(Office365)のアイデンティティストアの情報を同期する |
Service Connector | リッチクライアント(Outlook等)へのActive SSO設定を行う |
ちなみにMFGは現段階ではSAML2.0をサポートしていないので、オンプレミスのフェデレーションサーバにAD FS2.0以外を持ってくる場合は注意が必要です。(AD FS2.0以外を使う構成がサポートされるかどうかはわかりませんが)
ちなみにBPOSにおいては各クライアントにサインインツールをインストールして擬似的なシングルサインオンを実現していましたが、Office365においては非推奨となっています。(継続的に使えるのかどうかは不明です)
仕組み自体はBPOSのころと変わりませんが、このツールのバージョンもVersion 2に上がっており、例えば大きいところではセキュリティグループの同期などもサポートしています。
ちなみにこのツールはILM2007をベースとして構成されているツールなのですが、今後はこのような独立したツールとしてではなく、FIM2010用の管理エージェントとしても提供される見込みです。そうなるとある程度カスタマイズの余地も出てきますし64bit環境メリットもフルに活用することが可能になると思われます。
いずれにしてもbeta版の一般公開はしばらく先の様なので、実際の動きについては継続的に情報を収集していく必要がありそうです。
とりあえずbeta利用の応募は先のサイトからも可能なので、応募はしてみました。待ち行列に入っているようですが・・・
2010年11月9日火曜日
TechEd Europe 2010 の Identity系セッション
さすがに日本での開催とは規模が違い、多くのIdentity関連のセッションが用意されています。
少しピックアップしてみました。これからセッション資料やビデオなども公開されるようなので公開されたら見て紹介してみたいと思います。
Office365のAD FS2.0を使ったフェデレーションなんかは今後日本でもニーズが出てきそうなので要チェックかと思います。
ARC303 - Architecting Claims-Aware Applications (with the Windows Identity Foundation and Active Directory Federation Services)
Claims, Tokens and (possibly) Federation are the new ways to model authentication, access control and personalization for distributed applications. The possibilities for these technologies are vast, but there are some well-established patterns to fit typical security scenarios. These include guidelines for the usage of claims, identity providers, resource security token services, federation gateways and multi-tenancy. This talk walks you through common application architectures and illustrates how to use the Windows Identity Foundation (WIF) and Active Directory Federation Services (ADFS) to tap into the power of claims-based security
COS302 - Office 365: Identity and Access Solutions
This session provides a preview of the identity and access solutions in the next generation of the Business Productivity Online Standard Suite (Office 365). The session will focus on how authentication works for both web apps and rich client apps, how to enable single sign-on (SSO) using corporate AD credentials and AD FS 2.0 to Office 365 services, and the different SSO deployment options for Office 365 services.
OFS308 - Deploying Microsoft SharePoint Server 2010 with Claims Authentication
This session will walk you step-by-step through the process of configuring a SharePoint web application to use SAML claims and ADFS v2. It will cover some basic usage scenarios, and describe specifically how they impact sites using SAML claims and how to implement common changes in a SAML claims environment. The session will also include some basic troubleshooting steps to help you understand why users may not be able to log on to a SAML claims site
SIA203-IS - Interactive Discussion on Identity Futures with Microsoft Program Managers
What does Identity mean to you? Do you want to influence the future of Microsoft's Identity offerings? This highly interactive, discussion-based session provides a unique opportunity to share real-world requirements and understand how your priorities align with those of other TechEd attendees. Members of Microsoft's Identity and Access product team will be on hand to absorb your feedback first-hand, and to guide participants through a fast-paced discussion covering a wide range of topics
SIA301-IS - Under the Hood: What Really Happens During Critical Active Directory Operations
Come and discuss critical Active Directory-Operations. Are you fully aware what “critical” operations in AD really do? In this interactive session we will talk about those operations, understanding what they are doing and how to distinguish whether operations are critical to your environment or not. Ulf has been working in the field for more than 13 years, and has a lot of notes and examples to share. We will talk about how to approach challenges, and study scenarios that show how other companies managed the associated risks and prepared for rollbacks. We have some common scenarios for everyone but please bring your own questions as well, as we want this talk to be as interactive as possible
SIA303-LNC - Common Identity Across On-premises, Private and Public Cloud
See how Forefront Identity Manager is used to provide self-service delegated management of on-premises and private cloud datacenter resources. You will learn how Forefront Identity Manager, Active Directory Federation Services and Windows Identity Foundation are being integrated to provision users and provide access to application services in the cloud (Azure and BPOS), and also how to configure FIM to ensure that quality identity data is available to these applications, and how users can perform self-service claims management
SIA305 - Windows Identity Foundation and Windows Azure for Developers
Claims-based identity provides an open and interoperable approach to identity and access control that can be applied consistently, both on-premises and in the cloud. Come to this session to learn about how Windows Identity Foundation can be used to secure your Web Roles hosted in Windows Azure, how you can take advantage of existing on-premises identities, and how to make the best of features in our cloud offering, such as certificate management and staged environments. This is an ideal session for developers
SIA306 - A Dozen Years AD - Discuss Previous and Future Design Decisions
Active Directory has evolved over the years, along with security recommendations and best practices. But has our corporate design changed that much? Is it required? What should we change, and what should we retain? Ulf B. Simon-Weidner is a long standing, internationally recognized expert in Active Directory, and in this session he will discuss Active Directory Designs of the past, present and future
SIA311 - Deploying and Managing Forefront Identity Manager 2010
Forefront Identity Manager 2010 is a powerful product that includes many features across multiple platforms. Deploying and managing FIM requires broad domain knowledge in technologies like Active Directory, SharePoint, Exchange, SQL, Windows Communication Foundation, Workflow Foundation and ILM 2007. This session covers the basic approaches, “tips and tricks”, and common problems faced by customers. It includes best practices for managing and deploying FIM, based on the knowledge and experience of the product team and work done with Microsoft IT. This is the session for attendees who plan to deploy, configure or administer FIM
SIA313 - Cloud Security: The Practical Meaning of Security, Identity and Access Revealed!
The CLOUD is coming. But let’s face it, you must have asked yourself if it possible to hack the claims? How can we prevent this? One thing is sure: moving from on-premises applications to the cloud is like moving from a home generator to the electricity grid. We put our trust in the external identity providers, but are we really sure that all of the security issues have been addressed? We focus on the application in the cloud, but is this really the application that we need to protect? New solutions bring new possible attack vectors, and not only from the outside! Come and see what can happen when the users, or even the administrators, become the bad guys.During this intensive and extremely practical session, presenters will guide you through the threats and challenges related to the industry standard- based services delivered by ADFS v2. Only real-life scenarios! Many practical demos!
SIA316 - Exploring the Possibilities of Forefront Identity Manager 2010: Meeting Business Requirements Through Customization
Forefront Identity Manager 2010 provides a sophisticated platform for enforcing policy in an organization. Often it is necessary to extend FIM to enable some business policies, and this is your opportunity to learn about techniques for extending FIM to meet your specific business requirements. This session introduces the recommended patterns for creating custom web service clients and workflow activities, and includes code examples for each that accomplish common scenarios, such as group management and authorization workflows. The session is designed for developers who are already familiar with FIM, and plan to extend FIM.
SIA318 - Windows Identity Foundation in the Real World
Are you wondering how customers are adopting Windows Identity Foundation (WIF) in the real world? What challenges do they face? What solutions are they implementing? This session presents a series of best practices collected, and lessons learned, during the implementation of large WIF solutions in the real world. We have included a series of practical demonstrations that illustrate how to address important aspects of WIF-based solutions, such as monitoring, scalability, testing, and claim and record management, among many others. Additionally, we will present three case studies that demonstrate how customers are leveraging these solutions to facilitate the implementation of WIF in the enterprise.
SIA320 - Impact of Cloning and Virtualization on Active Directory Domain Services
Customers are looking to further virtualize their environments: file servers, web servers, DNS servers and even their domain controllers. It is clear that virtualization provides many benefits in areas such as deployment, disaster-recovery and lowering TCO. However, while virtualization offers many powerful capabilities and greatly simplifies repetitive tasks, it is a technology that must be handled with care when used in conjunction with Active Directory. In this session we will review fundamental concepts within Active Directory and the impact of cloning & virtualization upon domain controllers, domain members and Windows in general. We will also discuss how to best leverage virtualization, and how to both mitigate problems and to avoid occurrences in the first place.
SIA321 - Explore Secure Collaboration Using Identity Federation in Forefront UAG Service Pack 1
Supercharge your federation solution with Forefront UAG SP1! Learn how UAG can simplify migration to a claims-aware environment, enabling secure, seamless access to all your applications. We will cover what is new in UAG SP1 and look at secure collaboration scenarios and federation via AD FS 2.0. We will demonstrate federation with legacy applications, by translating claims to Kerberos, and enforcing authorization at the edge level
SIA402 - Active Directory Federation Services - How do they really work?
Secure applications must be able to “trust” the identity of users who are accessing the resources. It is simple to establish that trust when Active Directory Windows authentication is used. And if the application needs further identity information about the user in order to qualify its response, the additional properties can be read from the Active Directory. When the application resides outside your realm, maybe in the Cloud or within a partner organization, how do we establish trust? This is where Active Directory Federation Services (ADFS) provides a method of linking trust between disparate parties. One organization authenticates the user and creates an industry standard token that contains the Identity of the user in the form of claims. The receiving organization accepts the user’s identity and responds with the appropriate resources because of the established trust. Come to this deep dive, demo rich session and learn how to setup and leverage the true power of ADFS v2
SIA403 - How to (un)Destroy your Active Directory
As a consultant with 10 years of experience in troubleshooting ADDS and as MVP for Directory Services, I prepared an ADDS with the top 10 errors - all at the same time. During this session we will fix it step-by-step, while explaining the reason why this happened and how it can be avoided next time
2010年11月8日月曜日
PDC2010でのアイデンティティ関連セッション
2010年10月28日木曜日
IDaaSに関して考えてみる
クラウドの潮流の中でXaaSというキーワードで「何でもサービス化」というのが流行って?いますが、アイデンティティをサービス提供する形態として「IDaaS」というのもしばしば耳にする様になってきました。
・セキュリティトークンサービス(STS)
認証機能
セキュリティトークンの発行、変換機能
・アイデンティティストア
アイデンティティ情報の保持
ライフサイクル管理機能(セルフサービスポータル等)
といった機能が提供されることになります。
また、場合によっては他のクラウドサービスへのプロビジョニングを行ったりすることもあり得ると考えられます。
■IDaaSのメリット
IDaaSのメリットとして主に以下の事項が挙げられます。
サービスプロバイダにとって
・認証機能やアイデンティティ管理機を自前で開発しなくてよい
・アイデンティティ情報などのセンシティブな情報を自前で保持しなくてよい
利用者/利用企業にとって
・(サービスが対応していれば)複数のサービスで横断的に利用できる認証基盤となり、シングルサインオンが出来る
・複数のサービスと個別に信頼関係を結ぶ必要がなくなる(フェデレーション・ゲートウェイとしての利用)
・STSのトークン変換機能を使うことで自前(オンプレミス)のIdPを使うことができる(クラウド上にアイデンティティ情報をおく必要が必ずしもなくなる)
現在のプレイヤーとしては、GoogleやYahoo!、Windows LiveIDなどOpenIDプロバイダとしてサービスを提供しているものや、FacebookやTwitterなどOAuth対応という形で一部の認証や認可の機能をサービスプロバイダに提供しているものなどが挙げられます。
ただ、先述のクラウド・オンプレミス連携を行う上で重要となるフェデレーション・ゲートウェイ機能を提供しているサービスはまだ少なく、PingIdentityや対応するサービスが限定的ですがマイクロソフト(Microsoft Federation Gateway)くらいがメジャーどころだと思います。
これはIDaaSに限りませんがGoogleやAmazonの様に自前でサービスを提供するためにシステムを開発するプロバイダやマイクロソフトの様に元々製品を持っていたものをベースにサービスを提供するプロバイダと違って、OSS以外の既製品を組み合わせてサービス化していくのは採算的に中々厳しいと思われます。
(AmazonやGoogleの実装を元としてEucalyptusやHadoopが出てきていますが、あくまでリファレンス実装ですし、AmazonやGoogle自身が販売してるモノではありません。仮に彼らが自身のサービスに使っているツールを製品として販売したら相当な価格になるんじゃないかと思います)
例えばIDaaSを立ち上げるのに、市販のシングルサインオン系の製品を使ってしまうと、それらの殆どはユーザ数でライセンス課金なので、1ユーザあたり数千円~数万円の値付けをしないと採算が合わないでしょうが、ユーザが単なる認証機能にそれだけの金額を払うことはないでしょう。(Novell製品で米VerizonなどはIDaaSをやっているといいますから、それなりにベンダの値引きがあるんでしょうが・・・)
となると、自前でIdPを実装するかWSO2やOpenSSO/OpenAMなどのOSSをベースとして独自のサービスを実装するという覚悟が必要になるのかも知れません。
また、価格面以外にも認証や認可などセキュリティの根幹を担う機能を外部に委託する事になるので、ユーザからも提携するサービスプロバイダからも信頼される必要があります。ユーザに対してはOpenID CXやID-WSFの様に利用者自身の責任において属性の公開範囲等をコントロールする様な仕組みもありますし、この辺りになるともっと公的な機関との連携が必要になると思いますがKantara/LibertyのIdentity Assurance Framework(IAF)やGSA(米国調達庁)とICAMの例の様に第3者による認定制度の様な仕組みも必要になってくるでしょう。
このように色々とハードルが高い世界ではありますが、出来れば日本でもPingIdentityの様にIDaaSプロバイダが出てくると面白いと思っています。
2010年10月20日水曜日
AD FS2.0 のデモをする時のひと工夫
ただ、シングルサインオンのデモって非常に地味なんですよね。
ターゲットのアプリケーションにアクセスして、一瞬AD FS2.0へリダイレクトされて統合Windows認証でそのまま元のページへトークンをPOST、ログイン完了という流れにどうしてもなってしまうので、本当にAD FS2.0を使っているかどうかが全然見ている人には伝わりません。
私もデモをする時に同じ悩み?を持ち、ブラウザの統合Windows認証をオフにしたり、インターネットオプションの「ローカル イントラネット」からAD FS2.0のサーバやドメインを削除したりしましたが、ベーシック認証が走ってしまったりしてやはりあんまりうまくありませんでした。
とにかくデモ映えするには明示的にAD FS2.0のログインページにIDとパスワードを入力する、というステップがあった方が良いと思ったので、デフォルトでフォーム認証を使うようにしてみました。
手順は若干強引ですが、AD FS2.0も単なるWIF(Windows Identity Foundation)を使ったASP.NETアプリケーションである、という点に着目してログインページのweb.configファイルを直接編集します。
デフォルトインストールだと「C:\inetpub\adfs\ls\web.config」が編集対象となります。
編集箇所は59行目から始まるmicrosoft.identityServer.webセクションのlocalAuthenticationTypesです。
デフォルトだと
<add name="Integrated" page="auth/integrated/" />
<add name="Forms" page="FormsSignIn.aspx" />
という順番でまずIntegratedつまり統合Windows認証が使われるようになっていますが、これを
<add name="Forms" page="FormsSignIn.aspx" />
<add name="Integrated" page="auth/integrated/" />
という形でFormsつまりフォーム認証を優先する形に行を入れ替えてみます。
■編集の結果
<microsoft.identityServer.web>
<localAuthenticationTypes>
<add name="Forms" page="FormsSignIn.aspx" />
<add name="Integrated" page="auth/integrated/" />
<add name="TlsClient" page="auth/sslclient/" />
<add name="Basic" page="auth/basic/" />
</localAuthenticationTypes>
これでファイルを上書き保存するとフォーム認証が優先されるのでAD FS2.0の認証ページにリダイレクトされた際にIDとパスワードを入力するフォーム認証画面が表示されます。
※web.configのバックアップは忘れずに!
これで少しはイメージのしやすいデモが出来ると思います。
2010年10月1日金曜日
FIM2010 トラブルシューティング/トレースの有効化
http://blogs.technet.com/b/aho/archive/2010/09/29/troubleshooting-fimservice-fimportal-password-reset-client.aspx
かなり詳細にトレースが出来るので、トラブルが発生した際はこの方法でトレースしてみるのもありかもしれません。
方法は簡単で、各サービスの構成ファイルの中のコメントアウトされている部分を有効にしてサービスを再起動するだけです。
***注意点***
・トレースを出力する設定を行うと動作がとっても重たくなります。
・一部構成ファイルを手動で書き換えるので、環境のバックアップを取得しておくことをおすすめします。
・XMLのタグを表記上全角にしていますが、実際は半角です。
では、FIM Service / Portalを例に実際にやってみます。
編集の対象となるファイルはデフォルトインストールパスでは、
C:\Program Files\Microsoft Forefront Identity Manager\2010\Service
以下の
Microsoft.ResourceManagement.Service.exe.xml
です。
・まずはログ出力レベルを変更します。
41行目のswitchValueをErrorからVerboseに変更します。
<source name="Microsoft.ResourceManagement" switchvalue="Error">
↓
<source name="Microsoft.ResourceManagement" switchvalue="Verbose">
・svclogファイルにdiagメッセージを出力する設定を行います。
52行目~56行目のコメントアウトを外します。
<add name="DiagnosticListener">
<filter type="">
</add>
・diagリスナーがファイルへ情報を出力する設定を行います。
64行目~69行目のコメントアウトを外します。
<add name="DiagnosticListener" type="System.Diagnostics.XmlWriterTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" initializedata="fimDiagnostics.svclog" traceoutputoptions="LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId, Callstack">
<filter type="">
</add>
・ログの自動フラッシュを設定します。
※必須ではありません。この設定を行うとリアルタイムにログファイルに出力されますがパフォーマンスが低下します。
77行目のコメントアウトを外します。
<trace autoflush="true">
構成ファイルを保存し、サービス(Forefront Identity Manager Service)を再起動すれば先ほどのフォルダの中に
fimDiagnostics.svclog
というファイルが出来ます。
しばらくポータルの操作などを行うと、ファイルの中にプロセスのトレース等の情報が書き込まれます。
先に紹介したAnthony Hoさんのblogエントリには他にもPassword Resetのトレース方法などの情報も載っていますので、トラブルの時は参照してください。
2010年9月24日金曜日
FIM2010 Google Appsへのプロビジョニング その2
今回は実際の動作およびソースコードを紹介します。
■試す
では、早速動作を確認してみます。
今回は以下のような構成です。
CSVファイルから名前、姓、名を読み取り、Active DirectoryおよびGoogle Apps上にアカウントを作成します。
ポイントは、Google AppsのログオンID+ドメイン名をActive Directoryのメールアドレス属性にセットすることです。もちろんAD FS2.0の属性マッピングで同様の設定を行うことも可能ですが、ここではFIM2010側で実施しました。
この設定を行うことにより、AD FS2.0は属性ストアであるActive Directoryのメールアドレス属性から取得した値をSAMLのNameIdentifier属性としてGoogle Appsへ渡してシングル・サインオンが成立します。
実際にCSVにユーザ情報を記載して、以下の手順で実行プロファイルを実行します。
CSV MA
Import
Synchronization
AD MA
Synchronization
Export
GoogleApps MA
Synchronization
Export
実行後、Google Appsの管理画面を見ると確かにユーザが作成されていることがわかります。
尚、Google Appsへのプロビジョニングを行う上で何点か注意点があります。(Google Appsの仕様)
・購入ユーザ数を超えてユーザを作成することはできない
当たり前ですが、サービスを契約しているユーザ数以上はプロビジョニングできません。無理やりプロビジョニングしようとするとDomainUserLimitExceededという例外が発生します。
・削除したユーザと同じユーザ名のユーザは削除後5日間は作成できない
ユーザの再作成を5日以内に実行するとUserDeletedRecentlyという例外が発生します。今回作成したMAには入れていませんが、削除ではなくサスペンドという対応にした方が良いかもしれません。(ユーザ数の増加になるので課金が増えますが)
また、プロビジョニングとは直接関係ありませんが実環境で使うためには以下の点にも留意が必要です。
Google Appsなどのクラウド上のサービスは性質上インターネットに接続できる環境であれば直接ログオンしようと思えばログオンできてしまいます。
ただ、実際に企業から使おうと思うと自宅PCから制限なくアクセスさせてしまうのは避けたいところなので、一般的に以下のような手段をとります。
・特定のネットワークからしかサービスに接続できなくする(サービス側が対応している必要あり)
・認証システムを社内に配置し、そのシステムにアクセスできるネットワークに接続できないと認証が出来ずサービスが利用できなくする
今回の場合、認証システムを外だしするという形をとりますが、Google Appsの場合例えばGmailに直接接続する場合は外部認証システムに強制リダイレクトする、という形が取れますが、管理コンソール(http://www.google.com/a/yourdomain.com/)経由のアクセスだとGoogle Apps自身が持っている認証システムでの認証となるので、パスワードさえ合致すればインターネットからでも接続できてしまいます。
これを防ぐために非常にアナログな手段ですがGoogle Appsへプロビジョニングを行う際に設定するユーザのパスワードはランダム文字列にし、且つ定期的に自動変更されるような仕組みを作ります。
■今回のソースコード
最後に今回作成したMAのソースコードを張り付けておきます。(sourceforge.netからダウンロードできるものと同じです)
メインモジュール
using System; |
---|
ライブラリモジュール(エラー処理など)
using System; |
---|
2010年9月23日木曜日
FIMの本、WIFの本
まずはFIMの本です。先日も紹介した本ですが、MVPのDavid Lundellさんの作です。
FIM Best Practices Volume 1: Introduction, Architecture And Installation Of Forefront Identity Manager 2010
オンデマンド印刷の形で販売されているので一般書店やAmazonには流通しないと思いますので、ここで購入する形になります。
オーダーしてから2週間程度で届きました。
もちろん日本語なら青本も必携ですが。
次にWIF本です。
こちらはMicrosoftのVittorio Bertocciさんの作でAmazon.co.jpでも購入できます。
目次を見るとWIFそのものの動きに関する章からASP.NETでのプログラマ向けの章、Windows AzureやWCFへの組み込みの話まで非常に有用な内容が目白押しです。
ちなみに9月初旬に発売されているのですが、まだ手元には届いていません。。。
2010年9月11日土曜日
FIM2010 Google Appsへのプロビジョニング その1
もちろん元々用意されているMAでもある程度のシステムはカバーしているのですが、カスタムのMAを作成して対応していないシステムとの同期をさせることもできます。
その時に使うのが、
Extensible Connectivity(XMA)
です。
今回はこの仕組みを使ってGoogle Appsへのユーザの作成・更新・削除を行うMAを作ってみたいと思います。
別のエントリでも述べているようにAD FS2.0を使ってGoogle AppsへのログインをActive Directoryの認証で行う、という方法もありますので、その方法と合わせるとGoogle Apps上のユーザのライフサイクル管理と認証を完全に管理することができます。
まず、必要となる環境ですがGoogle Apps上のユーザを外部から管理するためにはGoogle AppsのProvisioning APIを使う必要があります。
その場合、
Google Apps Premium Edition
Google Apps Education Editionon
のどちらかが必要になりますので予め契約をしておく必要があります。(Premium Editionには30日間の試用期間あり)
※ちなみに1ユーザから契約ができますが、1ユーザだけではユーザの追加ができないので、最低2ユーザは契約しておく必要があります。
購入(もしくは試用)が出来たらGoogle Appsの管理コンソールより、ユーザーとグループ -> 設定 メニューで[Provisioning APIを有効にする]にチェックを入れます。
これでGoogle Apps側の準備は完了です。
私はVisual Studio 2010 Ultimate Editionを使っていますが、FIMのExtension ProjectはVisual Studio 2008がデフォルトなので当然2008でも構いません。
.NET環境からGoogleのProvisioning APIを利用するためのクラスライブラリがGoogleから提供されているので、以下のURLからダウンロードしセットアップしておきます。
URL
http://code.google.com/p/google-gdata/downloads/list
モジュール
Google Data API Setup (1.6.0.0).msi
まとめ(準備)
・Google Apps Premium or Education Editionの契約(2ユーザ以上)
・Visual Studio 2008 / 2010
・Google Data APIライブラリのインストール
※もちろんFIMも必要です(笑)
■カスタムMAの作成
早速カスタムMAを作成するのですが、まずはFIM Synchronization ServiceのコンソールでMAを作成します。先にMAを作成することでFIMがあらかじめ用意しているカスタムMAのプロジェクトテンプレートを使うことができるようになります。
以下の通り、MAを作成します。(デフォルトから変更する部分のみ)
ページ | 項目 | 値 |
---|---|---|
Create Management Agent | Management agent for | Extensible Connectivity |
Name | Google Apps | |
Configure Connection Information | Specify the interfaces supported by this management agent | Export |
Spscify the export mode supported by this management agent | Call-based | |
Connected data source extension name | GoogleApps__Extension.dll | |
Connec To | Google Appsの契約ドメイン名 | |
User | Google Appsの管理者ユーザ名(emailアドレス) | |
Password | Google Appsの管理者パスワード | |
Select Template Input File | Template Input File | 任意※ |
File format | Delimited | |
Delimited Text Format | Use first row for header names | チェック |
Text qualifier | <none> | |
Configure Attributes | Set Anchor | name |
Configure Join and Projection Rule | Join Rule for person | name <direct> accountName |
Projection / Metaverse object type | person | |
Configure Attibute Flow | Datasource <- Metaverse | givenName <export> givenName |
sn <export> sn | ||
userPassword <export/Advanced> Constant[P@ssw0rd] |
※テンプレートファイルは以下の文字列を保存したテキストファイルをあらかじめ用意しておきます。(MAの作成以後は使用しません)
Name,givenName,sn,userPassword
※Join / Projection / Attribute FlowはCodeless Provisioningを使う場合は不要です。
MAが作成できたらMAを右クリックし[Create Extension Projects]をクリックします。
プログラム言語は任意ですがここではC#を選んでいます。また、私は開発環境を別のPCに作っていたのでLaunch in VS.Net IDEのチェックを外しています。
いよいよカスタムMAの中身のロジックを実装していきます。
出来上がったプロジェクトファイルをVisual Studioで開くとあらかじめ定義されたテンプレートが出来ているので、各メソッドを実装していきます。
その前に今回はGoogle AppsのProvisioning APIを使うので先にダウンロードしたライブラリへの参照設定を行います。
必要なのは、
・Google.GData.Apps.dll
・Google.GData.Client.dll
・Google.GData.Extensions.dll
への参照です。
using Google.GData.Apps;
using Google.GData.Client;
using Google.GData.Extensions;
いよいよロジックの実装ですが、あらかじめ用意されているメソッドの中で今回必要となるのは以下のメソッドです。
メソッド名 | 役割 |
---|---|
BeginExport | Export開始時に呼び出される |
ExportEntry | Export時に呼び出される(実際のExportロジック) |
EndExport | Export終了時に呼び出される |
また、Google Appsに接続するためにAppsServiceというオブジェクトを使うので変数の宣言をしておきます。
namespace Miis_CallExport { public class MACallExport : IMAExtensibleFileImport, IMAExtensibleCallExport { AppsService service; ← ここ |
次にBeginExportの実装です。ここでは先ほど宣言したAppsServiceのオブジェクトを生成します。
BeginExportメソッドの引数の中のconnectTo,user,passwordは先ほどMAを作成したときに設定したものがわたってきますので、それらをそのまま使ってGoogel Appsへ接続します。
service = new AppsService(connectTo, user, password); |
次に実際のExport時に呼び出されるExportEntryメソッドです。
ここでは引数としてわたってくるmodificationTypeを見て処理が分かれます。
modificationType | 処理 |
---|---|
Add | エントリの追加 |
Replace | エントリの更新 |
Delete | エントリの削除 |
まずはエントリの追加(modificationType=Add)の時ですが、Google Apps Provisioning APIでCreateUserというメソッドを利用します。
引数には同じくExportEntryメソッドの引数としてわたってくるcsentryの各属性値を渡します。
service.CreateUser( csentry["Name"].Value.ToString(), ← 名前(ログインID) csentry["givenName"].Value.ToString(), ← 名(First Name) csentry["sn"].Value.ToString(), ← 姓(Family Name) csentry["userPassword"].Value.ToString() ← パスワード ); |
次はエントリの更新(modificationType=Replace)です。ここではUpdateUserメソッドを使います。
// ユーザの属性をセットする UserEntry user = service.RetrieveUser(csentry["Name"].Value.ToString()); user.Name.FamilyName = csentry["sn"].Value.ToString(); user.Name.GivenName = csentry["givenName"].Value.ToString(); user.Login.Password = csentry["userPassword"].Value.ToString(); // ユーザを更新する service.UpdateUser(user); |
最後にエントリの削除(modificationType=Delete)です。ここではDeleteUserメソッドを使います。
service.DeleteUser(csentry["Name"].Value.ToString()); |
これらをswitch分で振り分けて各処理を実行させます。
switch (modificationType) { case ModificationType.Add: // エントリの作成 break; case ModificationType.Replace: // エントリの更新 break; case ModificationType.Delete: // エントリの削除 break; } |
尚、EndExportメソッドでは他にオブジェクトを生成した場合はオブジェクトの廃棄を行います。(今回は特に何も書きませんが)
長くなってしまいましたので、詳細なコードの解説、実際の使い方は次回解説をしたいと思います。
※コードはsourceforge.netにアップロードしてあるので解説不要の方はどうぞ。
http://sourceforge.net/projects/fim2010mas/
2010年9月1日水曜日
@IT記事:Windowsで構築する、クラウド・サービスと社内システムのSSO
中心としてアイデンティティ管理関連の記事を連載中です。
それなりにページビューもあるそうなので、皆様興味やニーズはあるんでしょうね。
先ほど何気にGoogleで「クラウド SSO」と検索したらその記事とこのblogが上位に来ていました。
某社のプレス発表も見えてますが。。
ちなみに現段階で公開されている記事の内容とURLは以下の通りです。
第1回 クラウド・コンピューティングとアイデンティティ管理の概要
http://www.atmarkit.co.jp/fwin2k/operation/adsf2sso01/adsf2sso01_01.html
1.クラウド・コンピューティングの基礎と課題
2.クラウドでのセキュリティ対策とアイデンティティ管理の役割
3.クラウドがアイデンティティ管理システムにもたらす変化
第2回 クラウド・コンピューティング時代の認証技術
http://www.atmarkit.co.jp/fwin2k/operation/adfs2sso02/adfs2sso02_01.html
1.アイデンティティ連携(フェデレーション)の要素技術
2.マイクロソフトのアイデンティティに関するビジョン
3.アイデンティティ・メタシステムの実装
第3回はまだ公開されていませんが、「クラウドサービスの活用例」として実際人AD FS2.0を使って各種クラウド・サービスとのシングル・サインオンを実装する手順を紹介する予定です。
対象サービスとして、
・Google Apps( GMail )
・Windows Live
・Salesforce.com CRM
・Windows Azure上にデプロイしたWIFを使ったASP.NETアプリケーション
・force.com
良ければ見てやってください。
2010年8月30日月曜日
[Silverlight+WIF+ADFS2.0] TechEd Japan 2010 BoF-09の資料公開など
今回は単なる聴講だけではなく、BoF (Birds of Feather) とLT (Lightning Talk) にも軽く参加させてもらいました。
LTはいずれマイクロソフトのサイトで資料公開されると思いますが、BoFについては資料は公開されないそうなので、こちらで公開しておきます。Silverlight Squareの@hr_saoさんとのコラボです。
内容を簡単に紹介しておくと、SilverlightアプリケーションからWIFを使って外部システム(ADFS2.0等)で認証を行うには、という話です。
利用シーンとして企業間のアプリケーション共有を想定しており、
・アプリケーションオーナーとなる企業から利用者となる企業のID管理をしたくない
(これまではアプリケーションオーナーが全利用者のIDを管理していたが、本当は他の企業のユーザの管理はしたくない・・・)
→WIF+ADFS、ADFSのIdP連携
・利用者はブラウザ特有のオペレーションではなく、もっとリッチなインターフェイスでアプリケーションを使いたい
→Silverlightアプリケーションを使う(デモではインブラウザーを見せましたが、本当はブラウザ外実行をお見せしたかったです。今回は時間切れです。。。)
というシナリオでデモをしました。
詳細はスライドを見ていただければと思いますが、実際に環境を作る際に苦労したのはSilverlightから直接WIFを呼ぶことができないため、WCFのサービスでWIFをラッピングする仕掛けを作って、Silverlightからはそのサービスを呼び出す形にする必要があった点です。
まぁWIFの実装を含め細かい話はこの本にちょっと期待してます。
次にLTですが、資料は公開される見通しですが実はあんまり資料をベースに話をしていないので、ざっくり内容を。
テーマは「Azure上のアプリケーションへのシングルサインオン」ということでWindows Azure上にデプロイしたWIFを使ったアプリケーションとGoogle Apps (GMail)のSSOのデモと、逆にAppFabric Access Control Service (新しい方)を使ってWindows Azure上にデプロイしたWIFアプリケーションからGoogleの認証システムを使う、という2つのデモを紹介しました。
一つ目のデモはできればPCを使わずに、と思っていたのでDell StreakというAndroid OSで動く端末を使いたかったのですが、プロジェクターへの投影の関係で事前に撮影したムービーを紹介しました。
[ムービー]
一応資料も。
こちら(LT)では@tatsuakisakaiさん特別賞?として、「Windows Azureアプリケーション開発入門」をいただきました。
何にせよ非常に充実した3日間でした。
オンラインでは知っている人に初めてオフラインでお会い出来たりしましたし。
あと、BoFのセッションでもお話ししましたが今後はブラウザ外実行しているSilverlightの認証についても試してみたいので、本Blogでも情報のアップデートをしていきたいと思います。