Windows Server 2012によるADFS構築

Windows Server 2012が発売された当初は、PowerShellモジュールが対応していなかった為に、レジストリをいじらないとOffice365へのシングルサインオンの設定ができなかったのですが、最近モジュールがバージョンアップされて、インストールできるようになったとのことで、早速試してみました。

今回は、検証環境としてこんな環境を作ってみたいと思います。(Office365は新しいバージョンのEnterpriseを利用しています。)
20130401_01

Office365のシングルサインオンの構成自体は、慣れていればかなり簡単に構成できるようになっていますが、少し事前の準備が必要な部分などが多いので、まずはその部分からいくつか説明します。

【準備①.ディレクトリ同期のアクティブ化】
Office 365管理センターの [ユーザーとグループ] – [シングルサインオン][管理]を開き、Active Directory同期の[アクティブ化]を選択します。これは、最大24時間かかると画面にも表示されますが、経験上も処理の完了までに数時間は掛かりますので、インストールの前日までに実施してアクティブ化しておくことをお勧めします。
20130331_54

【準備②.公的SSL証明書の発行】
ほとんどのケースにおいて、ADFSで利用する証明書は外部の公的機関の証明するSSL証明書が必要となります。(Go DaddyやComodoなどの安価な物でもOKです。) SSLの証明書の発行にはお金のやりとりや証明書類のやりとりなどで時間が掛かる場合があるので、早めに申請しておきます。

IISからであれば、[サーバー証明書]を開き[証明書要求の作成]からCSRを作成し、証明書が発行されたら[証明書要求の完了]をした後に秘密鍵と共に.pfxファイルに[エクスポート]しておきましょう。このファイルはAD FSならびにAD FS Proxy両方のサーバーで利用します。
20130331_55 20130331_56 20130331_57 20130331_58 20130331_59

【準備③.ADFSサービスアカウントの作成】
Active Directory内に、ADFSのサービス用アカウントを作成します。AD FSサービスはこのアカウントで実行されますが、パスワードの有効期限が切れた場合は動作できなくなりますので、[パスワードを無期限にする]を選択する必要があります。

AD FSサービスのインストール用のアカウントとして利用しないのであれば、特にドメインの管理権限は必要ありません。
20130331_07

【準備④.代替UPNサフィックスの設定(オプション)】
既存のActive Directoryが、インターネットから解決できないドメイン(例えばcontoso.local)で構成されている場合は、代替UPNサフィックスを作成して、ユーザーのUPN名を username@contoso.local から username@contoso.com に変更します。

Active Directoryドメインと信頼関係でプロパティを開き、[代わりのUPNサフィックス]の欄に自身で所有しているドメイン名を入力します。比較的ユーザー数が少ない場合などは、Active DirectoryユーザーとコンピューターからOffice365で利用するユーザーを選択した後、プロパティの[アカウント][UPNサフィックス]から代替UPNサフィックスに変更することができます。今後、新しくユーザーを作成する場合、プルダウンの中から代替UPNサフィックスが選択できるようになっているので、そちらを選択するようにします。
20130331_09 20130331_10 20130331_11

【準備⑤.ADFSサービス名の内部DNSへのレコードの作成】
ADFSサービス名は、内部DNSと外部DNSで異なるIPアドレスとして解決される必要があります。
(内部DNS…AD FSサーバー群、外部DNS…AD FS Proxyサーバー群)

内部のDNS(通常はActive DirectoryのDNS)において、代替UPNサフィックスのゾーンが存在しない場合は、それを追加します。contoso.com全体としてゾーンを作成しても良いですし、AD FSのサービス名(sts.contoso.com)のみのゾーンを作成しても構いません。今回は、AD FSサービス名のゾーンを作成して進めます。

ゾーンの準備ができたら、AD FSサービス名のAレコードを作成します。通常は、AD FSファームで利用する仮想IPを指定しますが、今回は検証環境で1台しかないので同じIPアドレスを指定します。

※なお、MXレコードやAutodiscoverのCNAMEレコードなど、Office365のドメインの情報で追加するように表示された物は外部DNSのみではなく内部DNSにも忘れずに書くようにして下さい。(内部DNSにゾーンが存在しない場合は外部DNSで解決されるので問題ありません)
20130331_12 20130331_13

【準備⑥.必要なコンポーネントのダウンロード】
シングルサインオン環境の構築に必要なモジュールは、全て事前にダウンロードが可能です。インストールをスムーズに行うためにも、事前にダウンロードして準備しておくのがよろしいかと思われます。サインインアシスタント以外は、Office 365管理センターの [ユーザーとグループ] – [シングルサインオン][管理]のページからダウンロード可能です。

  1. Microsoft Online Servicesサインインアシスタント(msolidcli_64bit.msi)
  2. Windows PowerShell用Windows Azure Actitive Directoryモジュール(AdministrationConfig-JA.msi)
  3. ディレクトリ同期ツール(dirsync-ja.exe)

これで、準備は完了です。

それでは、いよいよAD FSのセットアップに入っていきたいと思います。まずは、w15adfsをActive Directoryドメイン(w15jp.local)に所属させます。
20130331_06

そして、AD FSをインストールします。Windows Server 2008 R2などと違い、Windows Server 2012では標準でAD FSが役割として入っておりますので、[役割と機能の追加]から[Active Directoryフェデレーションサービス]を追加します。選択した際に、他に必要なモジュールも合わせて選択されます。
20130331_14 20130331_15 20130331_16 20130331_17 20130331_18 20130331_19

また、PowerShellモジュールのインストールに.NET Framework 3.5が必要なので、機能の欄で[.NET Framework 3.5 Features]を追加します。

この際、.NET Framerork 3.5の機能は、初期インストールされた際にデフォルトだとハードディスクにコピーされてきていないので、OSのインストールメディアをマウントし、そのパスを[代替ソースパスの設定]から指定します。(指定しないとインターネットからダウンロードして設定する形となりますので、環境にもよりますが時間がかかります。)
20130331_20 20130331_20-2 20130331_21 20130331_22 20130331_23 20130331_24 20130331_25 20130331_26 20130331_27

AD FSの構成の前に、事前準備の段階で用意しておいたSSL証明書を、IISマネージャーの[サーバー証明書]を開いてインポートしておきます。
20130331_35
20130331_36 20130331_37

引き続き、AD FSの初期設定を行います。AD FSファームの構築にはActive DirectoryへのSPNの設定権限が必要なので、ドメイン管理権限を持つアカウントでAD FSサーバーにログオンし、[管理ツール][AD FSの管理]を開き、[AD FSフェデレーションサーバーの構成ウィザード]を実行します。

今回は1台目のサーバーなので、[新しいフェデレーションサービスを作成する][●新しいフェデレーションサーバーファーム]を選択します。

また、AD FSサービス名の指定では前の工程でインポートしたSSL証明書を選択し、AD FSサーバーファームのサービスアカウント名/パスワードも事前に作成しておいた物を指定します。
20130331_38 20130331_39 20130331_40 20130331_41 20130331_42 20130331_43 20130331_44

画面上では必要な構成が未完了ですと表示されますが、AD FSのOffice 365とのフェデレーション設定は、AD FS管理コンソールではなくPowerShellから実施するのでこの画面は一旦閉じます。
20130331_45

PowerShellからの設定を行うため、Microsoft Online Servicesサインインアシスタントをインストールします。
20130331_28 20130331_29

続いて、Windows PowerShell用Windows Azure Actitive Directoryモジュールをインストールします。これも、特にパラメーターなどはなくインストールできます。
20130331_30 20130331_31 20130331_32 20130331_33 20130331_34

今回は、以前投稿した独自ドメインの追加手順で使ったドメインを用いてそのままシングルサインオンを構成しますので、Convert-MsolDomainToFederatedコマンドレットを利用して行います。AD FSサーバー上からWindows PowerShell用Windows Azure Active Directoryモジュールを起動し、以下のコマンドを入力します。

$LiveCred = Get-Credential
Connect-MsolService -Credential $LiveCred
Convert-MsolFederatedDomainToFederated -DomainName w15jp.info

1行目のコマンドの際にID/PASSの入力を求められますので、Office365の全体管理者のID/PASSを指定します。Successfully Updated ‘w15jp.info’ domain.などと表示されれば処理は完了です。
20130331_46

これで、AD FSのセットアップは完了です。

引き続き、ディレクトリ同期のセットアップに移ります。今回は、AD FSと同一サーバー上にディレクトリ同期ツールをインストールしますので、ディレクトリ同期のセットアップエラーのエントリーで記載したとおり、事前にMicrosoft Online Servicesサインインアシスタントをアンインストールしてからインストールを実行します。

ディレクトリ同期ツールのインストーラーを管理者として実行します。
20130331_47 20130331_48 20130331_49 20130331_50 20130331_51

引き続き、Windows Azure Active Directory同期ツールの構成ウィザードに移ります。事前準備のディレクトリ同期のアクティブ化が完了していることを確認し、Windows Azure Active Directory管理者の資格情報にはOffice365の全体管理者アカウントを、Active Directoryの資格情報にはEnterprise Adminsの権限のアカウントを指定します。
20130331_52 20130331_53
20130331_61 20130331_62 20130331_63 20130331_64 20130331_65

これで、AD FSを利用してOffice365にシングルサインオンする環境が整いました。

早速動作を確かめてみたいと思います。ディレクトリ同期されたアカウントにはOffice 365のライセンスが割り当てられていませんので、Office 365管理センターから[同期済みユーザーのアクティブ化]を行い、ライセンスを割り当てます。
20130331_66 20130331_67 20130331_68 20130331_69

また、クライアント側でも1つ設定を行う必要があります。ブラウザから現在のログオン情報をAD FSサーバーに渡せるように、[インターネットオプション][セキュリティ]から、[ローカルイントラネット]ADFSサービスのアドレスを追加します。また、[信頼済みサイト]に*.microsoftonline.com、*.outlook.com、*.sharepoint.com、*.lync.comも追加しておきます。
20130331_70

そして、Office365のサインイン画面から自分のActive Directoryのアドレスを入れると、Office365にシングルサインオンができます。
20130331_71 20130331_72 20130331_73

ちなみに、2回目以降はクリックだけでシングルサインオンできるようになります。
20130331_74

13 thoughts on “Windows Server 2012によるADFS構築

  1. Pingback: 新しいOffice365のサインインページが始まりました | Office365 | Office365Room

  2. Pingback: Windows Server 2012によるADFS Proxy構築 | 日々徒然

  3. Pingback: Windows Server 2012 R2を使ってiOSだけがOffice365にアクセスできるようにする(1) | Always on the clock

  4. Pingback: Windows Server 2012 R2を使ってiOSだけがOffice365にアクセスできるようにする(2) | Always on the clock

  5. Pingback: Windows Server 2012 R2によるADFS構築 | 日々徒然

  6. Pingback: 【ADFS+Office365】 UPNを使わないでシングルサインオン | Always on the clock

  7. はじめまして。古賀と申します。
    本サイトを参考にさせていただいています。
    今回、ADFSの設定を変更することとなり、しっておられましたらご教示頂けると幸いです。

    現在、aaa.localドメインとbbb.localドメインの2つのドメインがあります。
    ADFSは、aaa.localドメインに所属し別のシステムと連携しているのですが、本当はbbb.localドメインとADFSにて別システムと連携したかったらしく、aaa.localドメインは廃止しbbb.localドメインと別システムをADFSを用いて連携したいと言われた次第です。
    この場合、単純にADFSの所属しているドメインをaaa.localからbbb.localに変更するだけで良いものなのでしょうか。
    構築自体は別の業者が行っており、私もADFSの構築は未経験のため、どうすれば良いのか悩んでいます。
    わかるようでしたら、わかる範囲で結構ですので、ご教示頂けると幸いです。

    よろしくお願いします。

    • aaa.localとbbb.localは別々のフォレストということでよろしいでしょうか?
      その場合、aaa.local上で動作するADFSとbbb.local上で動作するADFSは設定も動作も別々にされております。
      このため、bbb.localにおいて新規で別のシステムと連携するためのADFSをセットアップし、必要に応じてaaa.local側のアンインストールを実施されるという形になると思います。

      • 返信ありがとうございます。

        bbb.local上では、現在ADFSは動いてないです。
        aaa.localのADDSサーバとbbb.localのADDSサーバとaaa.localに所属しているADFSサーバの3台です。
        今回の変更はADFSサーバをaaa.localからbbb.localに変更したいだけですが、その場合もADDSは、一旦削除して追加及びセットアップしないとダメでしょうか。
        単純にADFSサーバのドメインを変更するだけではダメなのでしょうか。
        今一、ADFSがどのようのものか理解できてなく、とんちんかんな質問となっていましたらもうしわけありませんが、よろしくお願いします。

        • ADFSは単体で動いているのではなく、インストールされたActive Directoryドメイン(今回の場合はaaa.local)と密に連携するように設定されており、AD側にもその固有の設定情報が保存されています。
          この為、単にコンピュータの所属するドメインを変更するだけでは移行はできません。

          • 返信が遅れて申し訳ありません。
            やはりそうですか。
            わかりました。
            再構築でやってみます。
            ありがとうございました。

  8. Pingback: 新しいOffice365のサインインページが始まりました | Office365Room

  9. Pingback: 【ADFS+Office365】 UPNを使わないでシングルサインオン | Always on the clock

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です