Uncategorized

Azure AD (Entra ID) と Active Directory (ADFS) の Federation の手順

開発者にとっての Azure Active Directory (Microsoft Entra ID)

こんにちは。

ここでは、Azure Active Directory (Azure AD) を企業内の Active Directory と Federation させる手順をメモします。(ハンズオンで使用します)
この設定をおこなうと、企業内の Active Directory で認証をおこなって、Azure AD 上の Application (Office 365, Google Apps, Salesforce, etc) に SignIn できます。(企業内から接続する場合は、Windows 統合認証でログイン画面を表示せずに SignIn できます。)

今回は Azure AD の観点で記載しますが、Office 365 を Active Directory と Federation させる場合も似た手順です。

準備

あらかじめ、Active Directory (AD), Active Directory Federation Services (AD FS), Web Application Proxy をセットアップしておきましょう。(今回、これらは既に用意されているものとします。)
なお、すぐに試したい方は、「Azure VM に Active Directory (および ADFS) をセットアップする」に Azure 上に構築する手順を記載しましたので、この方法でセットアップしてみてください。
なお、後述する Azure AD Connect を使って AD FS と Web Application Proxy のインストールも可能です。(今回はあらかじめインストール済の環境を使用します。)

つぎに、連携 (Federation) 対象の Windows のドメインで、同期で使用する Active Directory の読み込み権限と書き込み権限を持つドメイン ユーザーを作成します。今回は、Domain Admins 権限の tsmatsuzsyncuser を作成したと仮定します。

使用する Azure AD の Directory 内にも、あらかじめ全体管理者 (Global Administrator) のユーザーを作成しておきます。管理権限を持つ Microsoft Account は使用できないため、必ず、別途管理者を追加してください。今回は admin@aaddemo01.onmicrosoft.com と仮定します。
なお、このユーザーは、初期セットアップで使用するもので、普段の同期の際には、Azure AD 上に自動で追加された同期用のユーザーが使われます。

今回使用する同期サーバーを準備 (新規作成) します。
Azure を使用する場合は、「Azure VM に Active Directory (および ADFS) をセットアップする」と同じ方法で、AD FS などで使用している Viratul Network (VNET) と同じサブネットに入れて Windows Server を新規作成します。
なお、このマシン (同期サーバー) には .NET Framework、Microsoft PowerShell, SQL Server などが必要ですが、これらは後述する Azure AD Connect で自動セットアップできるのでそのままで結構です。

作成後、この同期用のマシンを AD (および、AD FS) と同じドメインに参加させます。

後述の Azure AD Connect では、AD FS の構成の際に PowerShell Remoting を使って構成します。
このため、接続先の AD FS のサーバーと、上記の同期サーバーの双方で、管理者権限で PowerShell を起動して、下記のコマンドを入力しておきます。

Enable-PSRemoting -force

念のため、下記コマンドを実行して、同期サーバーから AD FS のサーバーに対して PowerShell Remoting が実行できるか確認してみてください。(なお、今回のように、双方のマシンが同一ドメインに参加している場合、ドメインに登録されているマシン名を使って接続してください。FQDN などを使うと、SPN が登録されていないため、エラーとなります。)
下記で、tsmatsuz-adfs は AD FS のインストールされたマシン名、tsmatsuzuser01 は Domain ユーザーと仮定します。(皆さんの環境に応じて、適切な値を設定してください。)

Enter-PSSession -ComputerName tsmatsuz-adfs -Credential tsmatsuzuser01

Custom Domain の追加

Azure Portal で Azure AD の管理画面を表示して [Domains] (ドメイン) タブをクリックし、[Add a custom domain] (カスタムドメインの追加) をクリックしてカスタム ドメインの追記をおこないます。

つぎに、Domain Registrar (レジストラー) に指定された DNS レコードを設定して、Domain の所有を検証 (Verify) します。
この方法は PowerShell を使う方法などいくつかありますが、例えば、Office 365 のポータル (https://portal.office.com) に Azure AD の全体管理者でログインをおこなうと、Domain の Verify が可能ですので、指示された TXT レコード、MX レコードをレジストラーに設定して検証 (Verify) をおこなってください。(Office 365 のライセンスは不要です。)

Azure AD Connect のインストールと構成

上記で準備した同期用のマシン (Windows Server) に Microsoft Azure Active Directory Connect (以降、Azure AD Connect) のインストールと構成をおこなうため、同期用のサーバーに権限を持つドメイン ユーザーでログインします。(今回は、上記で作成した tsmatsuzsyncuser でログインします。このユーザーに、このマシンの管理者権限を設定しておく必要がありますが、今回は Domain Admins 権限のユーザーのため追加の設定は不要です。)

まず、ダウンロード センターなどから Azure AD Connect をダウンロードして、同期サーバーにインストールします。インストールが完了すると Azure AD Connect の構成画面が起動するので、以降、ウィザードに従って進めます。

まず最初に、簡易設定 (Express Settings) かカスタマイズ (Customize) のいずれかを選択します。
Password Sync (ハッシュを使ったパスワード同期) の場合は、簡易設定 (Express Settings) を使うことで簡単にセットアップできますが、今回は Federation による SSO (シングル・サインオン) 環境を構築するため、[Customize] ボタンを押します。

SQL Server などインストール済のコンポーネントや設定があって、それを使う場合は、下記でチェックを付けます。(チェックを付けない場合は、Azure AD Connect でインストールや既定の設定がおこなわれます。)
今回は、上記で作成した tsmatsuzsyncuser を service account として設定し、他はチェックを付けずに既定のままインストール (セットアップ) します。

つぎに表示される画面で、今回は [Federation with AD FS] を選択します。

つぎに表示される画面で、上記で準備した Azure AD の全体管理者のアカウント (今回の場合、admin@aaddemo01.onmicrosoft.com) の Credential を入力します。

つぎに表示される画面で、連携元の Directory (Forest) の情報と、その情報にアクセスするための Credential (今回は上記の Domain Admins 権限を持った tsmatsuzsyncuser) を入力して [Add Directory] をクリックします。
接続先の Directory (Forest) が下部に追加されるので、先に進みます。(このように、Directory を複数指定可能です。今回は 1 つだけ設定します。)

以降の下記の画面は、すべて既定の設定のまま先に進みます。
これらの設定によって、属性による同期ユーザーのフィルター、ユーザーのマッピング方法の変更、Password Writeback (Azure AD 側のパスワード変更を AD 側に書き戻す機能) など、細かな構成 (カスタマイズ) が可能です。

つぎの画面では、AD FS、Web Application Proxy などのインストールが可能ですが、上述の通り、今回は、既にこれらはインストール (構成) 済のため、下図で [Use an existing Windows Server 2012 R2 AD FS farm] を選択します。

なお、この際、使用する AD FS の Server Name と Credential (AD FS の管理権限を持つ Credential) を入力しますが、AD FS の構成 (Relying Party の登録など) では PowerShell Remoting を使って接続するため、同一ドメインの場合には、必ず、ドメインに登録されているサーバー名を入力してください。(FQDN など別のサーバー名を使用すると、ドメインの SPN が登録されていないため Remoting のエラーが発生します。)

つぎの画面で、Domain Admins 権限を持つ AD ドメインのユーザーの Credential を入力します。

つぎの画面で、AD FS の Service Account の Credential を入力します。

つぎの画面で、フェデレーション対象となるオンプレ側の AD ドメインを選択します。

さいごに下記の画面が表示されるので、[Install] ボタンを押して構成を開始します。(AD FS、Azure AD、同期サービスの構成が開始されます。完了まで、しばらく時間がかかります。)

完了すると、下図の通り表示されるので [Verify] ボタンを押します。

イントラ経由の AD FS 接続の確認と、Web Application Proxy 経由の Extranet Configuration の確認がおこなわれ、問題なければ終了します。

設定内容の確認

同期サーバーにログインしてセットアップ内容を確認してみましょう。
なお、セットアップ完了後、同期サーバーに ADSyncAdmins という Windows のグループが作成されていますが、Synchronization Service を管理するには、このグループのユーザーである必要があるので、このグループのユーザーでマシンにログインしてください。

まず、同期の設定を確認するには、PowerShell を管理者権限で起動して、Get-ADSyncScheduler コマンドを実行します。設定されている同期の周期、次回の同期時間などの基本情報が表示されます。(「Delta」は「差分」を意味します。)

Get-ADSyncSchedulerAllowedSyncCycleInterval: 00:30:00CurrentlyEffectiveSyncCycleInterval : 00:30:00CustomizedSyncCycleInterval :NextSyncCyclePolicyType : DeltaNextSyncCycleStartTimeInUTC : 6/13/2015 4:21:20 AMPurgeRunHistoryInterval : 7.00:00:00SyncCycleEnabled: TrueMaintenanceEnabled  : TrueStagingModeEnabled  : False

手動 (manual) で同期 (sync) を強制したい場合は、Start-ADSyncSyncCycle コマンドを使用します。

Start-ADSyncSyncCycle -PolicyType Delta

同期サーバー側の同期結果 (Result) を確認するには、Event Viewer などで「Directory Synchronization」の Source に絞って確認できます。(同期のエラーが出ていないか確認してみてください。)

また、Azure AD 側で同期の状況を確認するには、[Directory Integration] タブを選択します。(下図)
下図で「never run」となっていた場合は、まだ同期されていないという意味です。

正しく同期されている場合、Azure AD で [Users] タブを選択すると、下図の通り、AD のユーザーが同期 (コピー) されているのがわかります。
このように、既定の設定のままだとシステムアカウントも含めてすべて同期されるので、現実の運用では Filtering などを使って設定をおこなうと良いでしょう。

また、AD FS のサーバー (Windows) にログインして AD FS Management Console を開き、[Relying Party Trusts] (証明書利用者信頼) を確認すると、Azure AD (Office 365 Identity Platform) が Replying Party (RP) として AD FS に登録されています。

同期のさまざまな設定 (使用している Credential、Filtering など) をあとから変更する際には、同期サーバー上にインストールされた Azure AD Connect を起動して再設定できます。

動作の確認

さいごに、SSO (シングル・サインオン) と Federation の動作を確認してみましょう。

例えば、「Azure AD を使った API (Service) 連携の Client 開発 (OAuth 2.0)」で記載されている方法で、Azure AD への Application 登録と Permission 設定をおこなって、以下の URL にアクセスしてみてください。

https://login.microsoftonline.com/common/oauth2/authorize?response_type=code&client_id={client id}&resource={resource uri}&redirect_uri={redirect url}

例えば、以下のような感じです。

https://login.microsoftonline.com/common/oauth2/authorize?response_type=code&client_id=52bee189-4cb8-4382-987e-32e59e4c0d46&resource=https%3a%2f%2flocalhost%2ftest1&redirect_uri=https%3a%2f%2flocalhost%2ftest2

上記の URL にアクセスすると、まず、普通に Azure AD のログイン画面に Redirect されます。(下図)
このログイン画面で、ユーザー ID に連携 (Federation) している Custom Domain (今回の場合、tsmatsuz.com) の User ID を入力して Tab キーを押します。

すると、下図の通り、AD FS のログイン画面に Redirect されるので、ここにドメインのユーザー ID とパスワードを入力します。

ドメインのログイン確認に成功すると、Application の URL に code が付与されて戻ってきます。上記の例の場合、下記のような URL に戻されます。

https://localhost/test2?code=...

この Federation では、Application -> Azure AD (ログイン画面の表示) -> AD FS (ログイン画面の表示と確認) -> Azure AD (確認) -> Application の順番で遷移 (Redirect, HTTP POST など) します。AD FS で確認が完了すると、その結果が Token (または Assertion) として Azure AD に渡されます。(AD FS からは、Azure AD が Application として見えています。) Azure AD 側ではこの Token を受け取って検証し、問題なければ Application (上記の例の場合、https://localhost/test2) に結果を返します。

===============

ご参考 : PowerShell と Azure AD Sync Tool (DirSync) による構成

以下、Azure AD Connect を使わず、PowerShell を使って Federation をおこない、Azure Active Diretory Sync Tool (Azure AD 同期ツール, Azure AD Sync, DirSync) を使って同期させる方法を記載します。
なお、ここで紹介する DirSync は、今後 廃止予定であり、DirSync で構成した内容を Azure AD Connect へ Upgrade できます。(ここでは、Upgrade 方法は解説しません。)

まず、Azure AD と AD FS の相互で、WS-Federation による Federation をおこなうための信頼関係を PowerShell を使って設定します。
具体的には、ADFS 側への Relying Party (証明書利用者信頼) の登録や、Azure AD 側へのドメイン、ADFS 登録などがおこなわれます。(デジタル署名付きのメタデータなどを交換します。)
なお、内部で PowerShell Remoting を使って ADFS 側の設定を書き換えるので、あらかじめそのための設定をおこなってください。(設定の詳細は省略します。直接、ADFS Server のマシン上で実行しても構いません。)

まず、「Azure Active Directory とは (事前準備)」で解説した Microsoft Azure Active Directory PowerShell Module をインストールした環境 (マシン) で、PowerShell を使って以下のコマンドを入力し、Azure AD にログインします。(この際、Azure AD 上の全体管理者のアカウントでログインしてください。Azure サブスクリプションで使用している Microsoft Account は不可です。)

import-module MSOnlineimport-module MSOnlineExtended$cr = Get-Credential(Prompted. Please login using Global Administrator ...)Connect-MsolService -Credential $cr

今回、インターネット上の Web Application Proxy (AD FS Proxy) のエンドポイントを sts.tsmatsuz.com と仮定します。(上述であらかじめ準備したサーバーです。)
まず、下記のコマンドを実行して、Azure AD 側に、この ADFS Server を設定します。

Set-MsolAdfscontext -Computer sts.tsmatsuz.com

補足 : ADFS Server 上で実行した場合 (かつ、AD が同じマシンにインストールされている場合)、Invalid Credential のエラーになるようですが、無視して先に進んで OK です。(下記参照)
http://community.office365.com/en-us/f/613/t/243053.aspx

つぎに、以下のコマンドを入力し、上記の設定に基づいて信頼関係を設定します。(今回は tsmatsuz.com ドメインと Federation させています。)
この際、初回の実行では下記の Waring が表示されるので、この Waring に従って、ドメイン レジストラ (Domain Registrar) に TXT レコードと MX レコードを登録します。(下記の XXX には適当な数字が設定されています。)

New-MsolFederatedDomain -DomainName tsmatsuz.comWARNING: Verify tsmatsuz.com domain ownership by adding a DNS TXT record with a text value of MS=msXXXXXXXX or a DNS MX record targeting msXXXXXXXX.msv1.invalid with a priority of 32767 at your domain registrar.

レジストラへの登録をおこなったら、再度、同じコマンドを実行します。
今度はドメインの検証 (Verify) がおこなわれ、Azure AD 側のドメイン等の構成と、ADFS Server 側の Relying Party (証明書利用者信頼) の登録が完了します。

New-MsolFederatedDomain -DomainName tsmatsuz.com

以降では、Azure Active Diretory Sync Tool (Azure AD 同期ツール, Azure AD Sync, DirSync) を使って、User などの同期を構成します。

まず、構成前の準備として、Azure Portal で対象の Azure AD の Directory を表示し、[Directory Integration] (ディレクトリー統合) のタブを選択し、下図の [Activated] を選択して保存します。

Windows Server Active Directory (Domain Services) のドメイン内のマシン (新規に同期用のサーバーを立てても OK) に同期ツールをインストールしますが、.NET Framework 3.5.1 と 4.5 が必要なので、あらかじめ、Server Manager の [Add Roles and Features] (役割と機能の追加) でこれらをインストールしておいてください。

準備ができたら、Azure Active Directory Sync tool (64 bit) をダウンロードしてインストールします。

補足 : Microsoft Online Services Sign-in Assistant が既にインストールされている場合には、いったんアンインストールしてから、DirSync をインストールしなおしてください。(Azure Active Directory Sync tool がインストールします。)

補足 : Azure Active Directory Sync tool では、インストール ユーザーが FIMSyncAdmins グループに属している必要があり、インストールによりこのグループを付与します。もし、権限エラーで失敗したら、マシンを再起動するなどして、この Permission を反映してから、再度、インストールしなおしてください。

インストールが完了したら、Azure Active Directory Sync tool (DisSync) の構成ウィザードを起動します。
このウィザードで、Sync をおこなう Azure AD 側の全体管理者 (Global Administrator) の ID・パスワードや、Server Active Directory 側のユーザー・パスワードを設定します。Server Active Directory 側のユーザーは、ドメインの管理者で構いません。(このユーザーで同期サービスが実行されるのではなく、同期サービス用のアカウントを新規作成する際に使用する一時的なユーザーです。ドメインの Domain Admins, Enterprise Admins グループの権限が必要です。)

補足 : 今回は、パスワード同期による Federation ではなく、AD FS を使用した WS-Federation のプロトコルによる Federation を構成しています。
このため、ウィザードの途中で表示される [Password Synchronization] のチェックは外してください。(Password Synchronization は、AD FS を使わず、パスワード ハッシュも含むユーザー情報を Azure AD にコピーして Federation する方法です。)

===============

 

※ 変更履歴

2016/06  今後の DirSync 廃止 (Deprecate) に伴い、DirSync から Azure AD Connect を使用した手順に変更

 

Categories: Uncategorized

Tagged as: , , ,

3 replies»

Leave a Reply