ADFSトレーニングテキスト全文公開チャレンジ(9) – Office365連携環境の構築ステップ

皆さんこんにちは。国井です。
ADFSトレーニングテキスト全文公開チャレンジの9回目はOffice 365とADFSを連携させるための具体的な方法について解説します。

■ ■ ■

スライド55

Office 365 の各サービスへのシングルサインオンを実現する場合、ADFS サーバーを利用した ID 連携の他、Azure AD ディレクトリと Active Directory の間でのプロビジョニング (ID 同期) が必要になります。Azure AD では Azure AD ディレクトリと Active Directory の間での ID 同期のためのツールとして、Azure Active Directory Connect (AAD Connect) ツールを無償で提供しており、これを利用することにより、ID 連携に必要なプロビジョニングの部分を実現します。

また、外部から Office 365 にアクセスする場合や、Outlook アプリケーションからメールボックスにアクセスするときは、Web アプリケーションプロキシ経由で ADFS サーバーにアクセスし、トークンを取得する必要がある点にも注意してください。


スライド56

ブラウザー アクセスによる Office 365 へのシングルサインオンを実現するには、以下の設定が必要になります。

① Active Directory の設定 : Office 365 に登録されたドメイン名を持つメールアドレスまたは UPN の登録
Office 365 のシングルサインオンを行うためには、Active Directory のドメイン名が Office 365 で使用するドメイン名と同じでなければなりません。もし、異なるドメイン名を Active Directory に設定している場合、代替 UPNサフィックスを設定するか、Office 365 のドメイン名と同じドメイン名を使用するメールアドレスをユーザーに登録することで対処します (メールアドレスの登録によるシングル サインオンの設定方法については「Alternate Login ID」の項で解説します)。

② ADFS サーバーの設定 : ADFS サーバーとしての設定
ADFS サーバーそのものを利用するための設定を行います。具体的には、ADFS サーバーのインストールや証明書の実装などが含まれます。

③ ADFS サーバーの設定 : Azure AD の登録
④ ADFS サーバーの設定 : フェデレーション ドメインの登録
ADFS サーバーが利用する Azure AD の登録を行います。Azure AD の登録にはフェデレーションドメインの名前を指定して行うため、フェデレーション ドメインの登録を行うことで自動的に Azure AD は登録され、その結果、ADFS サーバーに証明書利用者信頼 (RP) が自動的に設定されます。Azure AD の登録設定は PowerShell コマンドレットを通じて行います。

⑤ Office 365 の設定 : ディレクトリ同期のアクティブ化
Office 365 でシングルサインオンを行う場合、Active Directory に登録されたユーザーを Azure AD にあらかじめ同期させておく必要があります。同期の設定に先立ち、Office 365 では同期を許可する設定を行っておきます。

⑥ Active Directory の設定 : ディレクトリ同期ツールによる同期
Active Directory 内のユーザーやグループの情報を同期します。同期は Active Directory から Azure AD ディレクトリに向けて一方向に行われます。

⑦ 同期したユーザーのアクティブ化
Active Directory との間で同期したユーザーは、同期完了時点ではまだ利用可能な状態ではありません。アクティブ化の操作を通じてユーザーアカウントは初めて Office 365 で利用可能な状態となります。
社外から Office 365 にアクセスする場合、次の設定が追加で必要になります。

⑧ WAP のインストール・初期設定
社外から ADFS サーバーにアクセスし、トークンを発行するには、WAP を経由する必要があります。そのため、事前に WAP をインストールし、初期設定を済ませておきます。

⑨ DNS レコードの登録
WAP にアクセスするための URL は社内から ADFS サーバーにアクセスするときの URL と同じでなければならなりません。そこで、ADFS サーバーと同じ URL に対する IPアドレスが WAP の IPアドレスとなるように外部 DNS サーバーにレコードを登録します。
一方、社内から ADFS サーバーを経由して、Office 365 にアクセスする場合、ADFS サーバーそのものの DNS レコードのほか、利用するサービスに合わせた DNS レコードを登録する必要があります。
Outlook アプリケーションから Office 365 にアクセスする場合、社外からのアクセス方法の設定に加えて、次の設定が追加で必要になります。

⑩ 公的認証局から発行された証明書
アクティブ プロファイルでは、Office 365 から WAP に SSL 通信するため、Office 365で利用可能な証明書、つまり公的認証局から発行された証明書を WAP に実装しなければなりません。Skype for Business から Office 365 にアクセスする場合、シングルサインオンの利用の有無にかかわりなく、必要な DNS レコードを登録する必要があります。

次のページから個々の項目について、具体的な設定を確認します。

Azure Active Directory Connect による Office 365 SSO 環境の構築
マイクロソフトでは、2015 年 6 月に Azure Active Directory Connect (AAD Connect) と呼ばれるツールを新しく提供しました。AAD Connect は Office 365のシングルサインオン環境を構築するために必要な設定を自動的に行うものです。本ページで解説した手順のうち、②,③,④,⑥,⑧の手順をウィザードを通じて実行することができます。


スライド57

Azure AD では、既定で登録されドメイン名 (.onmicrosoft.com の形式のドメイン名) とは別にオリジナルのドメイン名を設定できます。Azure AD でドメイン名を設定すると、Azure AD のユーザー名も「ユーザー名@ドメイン名」の形式で設定できるため、組織で普段使用しているメールアドレスとユーザーサインイン名を同じにできるメリットがあります。

Azure AD で新しくドメイン名を登録する場合、Office 365 管理センターまたは Azure 管理ポータル画面から設定できます。ドメイン登録はインターネットにおけるドメイン名を所有している組織だけが登録できるよう、ドメイン登録を行う際に、DNS サーバーへの TXT レコードの登録が求められます。そのため、Azure AD の管理者は、自身のドメインの DNS サーバーへのアクセスができること、そして DNS サーバーへのレコード登録の方法を事前に確認してください。

Office 365 管理者アカウントのアドレス
シングルサインオンの設定はドメインの単位で行います。そのため、新しく作成したドメイン名をシングルサインオンできるように構成すると、そのドメイン名を持つユーザーはシングルサインオンを強制されます。Office 365 の契約時に作成される管理者アカウント (全体管理者) はシングルサインオン ユーザーとして構成できますが、ADFS サーバーなどのシングルサインオン環境にトラブルが発生すると、全体管理者もサインインできなくなります。そのため、最初の全体管理者アカウントのアドレスには、オリジナルのドメイン名を設定せず、既定で設定される onmicrosoft.com ドメインを利用することをお勧めします。


スライド58

Active Directory のユーザーアカウントを利用して Office 365 のサインインを行う場合、Active Directory ユーザーのユーザー プリンシパル名 (UPN) と、Office 365 に登録されたユーザー名 (メールアドレス) は同一のものでなければなりません。UPN は Active Directory ドメイン名に基づいて決定されるため、ドメイン名に .local のようなインターネットでは利用できない名前を設定していると、UPN と Office 365 のユーザー名は同一にはなりません。

この問題を解決するために、Active Directory では代替 UPNサフィックスを利用します。代替 UPN サフィックスを利用すると、本来のドメイン名の代わりとなるドメイン名を設定できるため、Office 365 と同一の名前を設定できるようになります。

例えば、example.local ドメインに yamada ユーザーが存在する場合、このユーザーの UPN は yamada@example.local となります。しかし、Office 365 で example.com ドメインを利用する場合、yamada ユーザーのユーザー名は yamada@example.com となり、Active Directory の UPN とは異なるものになります。ここで、代替 UPN サフィックスで example.com を設定しておくと、yamada ユーザーの UPN を yamada@example.local から yamada@example.com に変更できるようになります。この結果、yamada ユーザーのユーザー名は Active Directory と Office 365 で同一の名前となります。

サインインアカウントと SMTP アドレス
Office 365 では、管理ポータルからユーザーを作成した場合、作成したユーザー名 (サインイン アカウント) がそのまま Exchange Online のSMTP アドレスになりますが、ディレクトリ同期によって作成されたユーザーの場合、onmicrosoft.com ドメインのアドレスがプライマリ SMTP アドレスとなり、ディレクトリ同期によって作成するユーザーのアドレスはプライマリ SMTP アドレスにはなりません。そのため、同期ユーザーのアドレスをプライマリ SMTP アドレスに明示的に指定する場合、メールアドレス (mail) 属性に UPNと同じアドレスを設定するか、proxyaddresses 属性に「SMTP:<UPN>」(SMTP は大文字)と入力し、設定します。


スライド59

前のページでも解説したように、Office 365 でシングル サインオンを実行するときには、オンプレミスにADFS サーバーを配置する必要があります。Office 365 における ADFS サーバーは、CP としてのみ動作するため、連携して動作する証明書利用者信頼 (RP) を別途指定しなければなりません。Office 365 のための証明書利用者信頼の設定は、「Windows PowerShell 用 Windows Azure Active Directory モジュール」というツールを使って行う必要があります。

Windows PowerShell 用 Windows Azure Active Directory モジュールは、Office 365 のサイトからダウンロードすることができます。モジュールをインストールするときは、同じく Office 365 のサイトからダウンロード・インストール可能なディレクトリ同期ツール、もしくはマイクロソフト Web サイトからダウンロード・インストール可能な 「Microsoft Online Services サインイン アシスタント」ツールをインストールしておく必要があります。

Windows PowerShell 用 Windows Azure Active Directory モジュールをインストールしたコンピューターには、デスクトップにショートカットが作成されるので、このショートカットから Windows PowerShell を実行します。次のコマンドレットを実行することで、自動的に証明書利用者信頼の設定が施されます。

■Azure AD への接続のためのコマンドレット

$Cred = Get-Credential
Connect-MsolService -Credential $cred

■シングルサインオンのために使用する ADFS サーバーの指定

Set-ADFSContext -Computer <ADFSサーバー名>

■シングルサインオンのために使用するドメイン名の指定

Convert-MsolDomainToFederated -DomainName <ドメイン名>

Convert-MsolDomainToFederated コマンドレットを実行すると、Office 365 で使用するドメイン名のうち、シングルサインオンに使用するドメイン名を定義することができます。なお、Convert-MsolDomainToFederated コマンドレットで定義可能なドメイン名は事前に Azure AD に登録されたドメインだけです。ドメイン所有者の確認が完了すると、Office 365 の管理者コンソールに表示されるドメイン名一覧でその旨確認できます。

複数の Active Directory ドメインをフェデレーション ドメインとして利用する
フェデレーション ドメインの登録は Convert-MsolDomainToFederated コマンドレットを利用して行うことをここまでで学習しました。このとき、複数の Active Directory ドメインで、複数の代替 UPN サフィックスを利用して同期を行い、複数のフェデレーション ドメインとして ID 連携を行う場合、それぞれのコマンドレットの実行時に、-supportmultipledomain オプションを付けて実行します。


スライド60

Office 365 では、ADFS サーバーで発行されたトークンをもとに、Azure AD に登録されているユーザーとのマッピングを行います。そのため、Active Directory ユーザーの情報は Azure AD にコピー (同期) させる必要があります。ユーザー情報の同期には、Office 365のサイトからダウンロード・インストール可能なディレクトリ同期ツールを利用します。

ディレクトリ同期ツールは、64 ビット版のセットアッププログラムだけが提供されており、ドメインコントローラーを含む、任意の 64 ビット版Windows Server OS にインストールすることができます。ディレクトリ同期ツールをインストールすると、初回起動時に Active Directory のドメイン管理者と Azure AD の管理者アカウントの資格情報の提示を求められます。入力した資格情報はディレクトリ同期ツールの中で保存され、2 回目以降のディレクトリ同期のために使われます。

ディレクトリ同期ツールを実行すると、Active Directory ドメインに保存されているユーザー情報が Azure AD に同期されます。同期は (現時点では) Active Directory から Azure AD に対して一方向に行われるため、ディレクトリ同期ツールで同期されたユーザーの情報は Office 365 から変更することができません。

また、ディレクトリ同期ツールではアカウントの同期を行いますが、Azure AD に同期されたユーザーに対する Office 365のライセンスの関連付けは行いません。そのため、ディレクトリ同期の完了後、必要に応じて同期ユーザーへのライセンス割り当てを Office 365 管理ポータルなどから行ってください

SQL Server を利用してディレクトリ同期ツールをインストール
ディレクトリ同期ツールはデータベースとして SQL Server Express を利用します。SQL Server Express の最大データベース サイズは 2GB であり、ディレクトリ同期ツールで扱う ID の数として 50000 アカウントが上限とされています。そのため、50000 アカウントを超えて同期を行う必要がある場合、SQL Server Express ではなく、SQL Server を利用して同期を行うようにインストールする必要があります。AAD Connect からインストールする際に既存の SQL Server を利用してディレクトリ同期ツールをインストールするように選択できます。


スライド61

ブラウザーから Office 365 サイトにアクセスし、シングル サインオンを行う場合、Active Directory における認証結果 (Kerberos チケット) をもとに (つまり Windows 統合認証を利用して) ユーザーのトークンを発行します。そのため、Kerberos チケットをブラウザーの操作によって自動的に Office 365 サイトに送信し、認証が行えるようにする必要があります。

Kerberos チケットを利用して、自動的にサインインが行えるようにするには、Internet Explorer の [ローカル イントラネット] から ADFS サーバーのエンドポイント URL (https://<フェデレーション サービス名>/adfs/ls/) を登録する必要があります。

サインインユーザーとは異なるユーザーで Office 365 にサインインする
トラブルシューティングなどの目的で Windows にサインインしたユーザーとは異なるユーザーで Office 365 にサインインする場合、ブラウザーのローカルイントラネットの設定を行わないでください。ローカルイントラネットの設定を行わない場合、Office 365にサインインするタイミングで認証ダイアログが表示されるので、そこで現在サインインしているユーザーとは異なるユーザーでサインインすることができます。

Internet Explorer 以外のブラウザーから Office 365 にサインインする
Internet Explorer 以外のブラウザーを利用してサインインする場合、あらかじめ ADFS サーバーでシングルサインオンを許可するよう、設定する必要があります。ADFSサーバーでの SSO 許可設定は、ブラウザー種類とバージョンの単位で行う必要があり、PowerShell の以下のコマンドレットを実行し、登録します。

■Firefox や Google Chrome (Mozilla/5.0) を SSO 用ブラウザーとして登録

$old=(Get-AdfsProperties).WIASupportedUserAgents
$new=$old+”Mozilla/5.0″
Set-ADFSProperties -WIASupportedUserAgents $new


スライド62

外出先から Office 365 にアクセスする場合や Outlook アプリケーションから Office 365にアクセスする場合、ADFS サーバーの代わりに WAP にアクセスしてシングルサインオン プロセスを開始します。そのため、これらのアクセス方法をサポートする場合には、事前に WAP をインストールしておく必要があります。

WAP 経由でのトークン発行プロセスは、ADFS サーバーにアクセスするときと同じ証明書を利用する必要があります。そのため、WAP をインストールする前に ADFSサーバーに実装した SSL 証明書と同じ証明書を WAP に実装してください。

なお、WAP では外部に公開する証明書利用者信頼を明示的に指定する必要がありますが、Azure AD の証明書利用者信頼を公開する場合、その設定は不要です。WAPのインストールが完了すれば、自動的に ADFS サーバーへのトークンの発行要求は転送されるように動作します。


スライド63

Office 365 では、ブラウザーからアクセスする場合、Outlook からアクセスする場合、Skype for Businessからアクセスする場合と、様々なシングル サインオン方法があります。そのため、どのようなアプリケーションからアクセスを行うかによって、必要となる DNS レコードも異なります。ここでは、それぞれのケースにおいて必要な DNS レコードについて確認します。

■社内からブラウザーでアクセスする場合
ADFS サーバーにアクセスするためのレコード (A レコード) が社内 DNS サーバーに作られていれば、シングルサインオンが実現します。なお、NLB などによって ADFS サーバーを複数台立てて運用しているときには、負荷分散用 IP アドレスを Aレコードに登録してください。

■社内から Skype for Business (SfB) でアクセスする場合
社内からリッチクライアント プロファイルでアクセスする場合も基本的にパッシブプロファイルと同じです。ただし、SfB Online 関連のレコードは社内の DNS サーバーで名前解決するため、社内の DNS サーバーに SfB Online 関連のレコードも一緒に登録してください。

■社外からSkype for Business またはブラウザーでアクセスする場合
社外からアクセスする場合、WAP のアドレスを外部 DNS サーバーに A レコードとして登録します。また、SfB を利用している場合は SfB Online 関連レコードも外部 DNS サーバーに登録してください。

■Outlook でアクセスする場合
Outlook からシングルサインオンを実行する場合、WAP のアドレスを社内 DNS サーバーと外部 DNS サーバーに それぞれ A レコードとして登録します。また、Exchange Online 関連レコードも、それぞれの DNS サーバーに登録してください。

編集後記

Advent Calendar風に12月25日までゆっくりと公開していこうと思ったのですが、分量が多すぎて、ここまでは年内に公開が終わらなさそうです。そのため、今日は少しボリュームを増やしてみました。読みにくいなどの意見があれば、分割して公開しますので、ご意見などお寄せください。