Windows Server 2012 R2によるADFS構築

MVPの国井さんから無言のプレッシャーを頂いたので、以前の投稿「Windows Server 2012によるADFS構築」のWindows Server 2012 R2をきちんと紹介したいと思います。

Workplace Joinをはじめ、Windows Server 2012 R2のADFSではいくつかの新機能が実装されていますが、インストールの手順としては大きく変更は有りませんが、大まかに言うと下の4点です。

  1. SSL証明書は事前にインポートしなくても良くなりました
  2. ADFSのサービスアカウントは事前に作成しなくても良くなりました
  3. サービスアカウント作成に必要なKDSルートキーの作成が前提条件になります
  4. ADFSの画面で表示される「フェデレーションサービスの表示名」を設定できるようになりました

環境としては前回と同じく以下の通りです。
20130928_01

事前準備として、KDSルートキーを作成します。(即時で利用可能なよう、DCが複製を待つためウェイト時間の10時間を引いた10時間前の時刻を指定して作成します。)

Add-KdsRootKey –EffectiveTime ((get-date).addhours(-10))

※事前に作成しなかった場合、サービス構成ウィザード中で以下のエラーが出ます。
20130928_02

最初に、ADFSサービスの役割をインストールします。後で必要になるので、機能の追加で.NET Framework 3.5 Featuresも選択しておくと良いでしょう。
20130923-014705 20130923-014711 20130923-014714 20130923-014722 20130923-014734 20130923-014741 20130923-014745 20130923-014750 20130923-015114

続いて、Active Directoryフェデレーションサービス構成ウィザードを実行します。Domain Adminsの権限を持つアカウントを指定して、SSL証明書の指定、サービス名の指定ならびにサービスアカウントの指定(新規作成も可能)をウィザード中で実施します。
20130923-015613 20130923-015808 20130923-015813 20130923-015901 20130923-020254 20130923-020300 20130923-020309 20130923-020328 20130923-020355 20130923-020632

これが完了すると、AD側にADFSのサービスアカウントが作成されます。(SamAccountNameには上記で入力した物の末尾に$が付くようです)
20130930_01

前回はここで先にADFSを設定しましたが、一度サインインアシスタントをアンインストールするという手順が入り少し面倒なので、今回は先にディレクトリ同期のセットアップを終わらせてしまいたいと思います。

ディレクトリ同期ツールのインストールは、基本的に何のパラメータも無く実行できます。終了後にそのまま構成ウィザードの実行に移ります。
20130923-022139 20130923-022147 20130923-022151 20130923-023830 20130923-023834

構成ウィザードでは、Office365の全体管理者アカウントとActive DirectoryフォレストのEnterprise Adminsのアカウントの情報を入力します。ADFS用なのでパスワード同期はオフにしておくことにします。
20130923-023843 20130923-023902 20130923-023939 20130923-023944 20130923-024011 20130923-024047 20130923-024051 20130923-024056

最後に、Windows PowerShell用Windows Azure Active Directoryモジュールをセットアップします。
20130923-024111 20130923-024118 20130923-024122 20130923-024126 20130923-024133

インストールしたPowerShellモジュールを開き、Connect-MsolServiceでOffice365に接続した後にConvert-MsolDomainToFederatedでADFSを有効化します。
20130331_46

これでWindows Server 2012 R2によるADFS環境の構築が完了しました。ログアウト時に一瞬ADFSサービス名の入ったログアウト画面が表示されるなどの細かい点以外は特に今までと変わらずシングルサインオンすることが可能です。
20130924-000503 20130924-000443 20130924-000451 20130924-000459

ADFS環境でOWAからログアウトできない

新しいOffice365になって、ADFSまわりで微妙に挙動が変わった部分があるのでそちらを紹介させて頂きます。

内容は、OWAのバニティURLからログインした場合にOWAからログアウトできないという物です。具体的にどういうことかというと、ADFSの場合は、通常

【ログイン】
20130924-000503 20130924-000443 20130924-000451

【ログアウト】
20130924-000455 20130924-000459 20130924-000503

こんな感じで画面が推移してそれぞれシングルサインオン、サインアウトして最初のサインインの画面に戻るというフローになります。(ちなみにサインアウト画面が出るのはWindows Server 2012 R2のADFSの場合のみです) 各アプリケーションのサインアウト画面からは、アプリケーション毎に少し違っていて、SharePoint Onlineからの場合はサインアウト後専用の画面で止まります。

OWA
20130924-002356 20130924-000459 20130924-000503

SharePoint Online
20130924-002018 20130924-000459 20130924-002027

ただし、新しいOffice365へのアップグレード後、「OWAに直接バニティURLを利用して入った場合、OWAからサインアウトできない」という事象が発生しました。このバニティURLというのは、例えば https://outlook.com/owa/contoso.com のようなURLで、ポータルのサインイン画面でのID入力を飛ばしてOWAに入れるURLです。これを利用していた環境でサインアウトをしようとすると、

20130924-000700 20130924-000459

一旦はサインアウトされるのですが、なぜか再度数回リダイレクトを繰り返した後に元の画面に戻ってきてしまいます。
20130924-000710 20130924-000712

以前一度だけあった事象は、「SharePoint Onlineで*.sharepoint.comを信頼済みサイトに入れていない場合にリダイレクト処理の関係でサインアウトが上手くいかない」というのは有りましたが、今回はちゃんと設定してあります。う~ん、謎な挙動です。

とりあえずFiddlerでポータルから入った場合とバニティURLから入った場合の挙動をトレースしてみます。
20130924-003935

一箇所怪しいところを見つけました。

ポータルから:    https://sts.w15jp.info/adfs/ls/?nossl=1&wreply=https://login.microsoftonline.com/login.srf%3Flc%3D1041%26ct%3D1379942681%26rver%3D6.1.6206.0%26id%3D260563%26wa%3Dwsignoutcleanup1.0%26nossl%3D1%26wreply%3Dhttps:%252F%252Foutlook.com:443%252Fowa%252F%253Fexch%253D1&wa=wsignout1.0
バニティURLから: https://sts.w15jp.info/adfs/ls/?nossl=1&wreply=https://login.microsoftonline.com/login.srf%3Flc%3D1041%26ct%3D1379924091%26rver%3D6.1.6206.0%26id%3D260563%26wa%3Dwsignoutcleanup1.0%26nossl%3D1%26wreply%3Dhttps:%252F%252Fpod51054.outlook.com:443%252Fowa%252F%253Fexch%253D1&wa=wsignout1.0

ポータルから入った場合はサインアウトした後に戻るURLの更にリダイレクト先がoutlook.comになっているのに対して、バニティURLから入った場合はそのメールボックスが収容されているpod51054.outlook.comになっています。

この差が最終的にリダイレクトされた後にポータルに飛ぶか、再度SSOの画面に飛ぶかの判定に繋がっているようです。(ちなみにバージョンアップ前のOffice365の場合はsixprd0210.outlook.comなどの実際にMBXサーバがあるところのFQDNでした。この場合もサインアウト後の戻り先はポータル) 最初は無理矢理web.configに

<RewriterConfig>
   <Rules>
      <RewriterRule>
         <LookFor>~/adfs/ls/?nossl=1&wreply=https://login.microsoftonline.com/login.srf%3Flc%3D(d{4})%26ct%3D(d{10})%26rver%3D6.1.(d{4}).(d)%26id%3D(d{6})%26wa%3Dwsignoutcleanup1.0%26nossl%3D1%26wreply%3Dhttps:%252F%252Fpod51054.outlook.com:443%252Fowa%252F%253Fexch%253D1&wa=wsignout1.0</LookFor>
         <SendTo>~/adfs/ls/?nossl=1&wreply=https://login.microsoftonline.com/login.srf%3Flc%3D(d{4})%26ct%3D(d{10})%26rver%3D6.1.(d{4}).(d)%26id%3D(d{6})%26wa%3Dwsignoutcleanup1.0%26nossl%3D1%26wreply%3Dhttps:%252F%252Foutlook.com:443%252Fowa%252F%253Fexch%253D1&wa=wsignout1.0</SendTo>
      </RewriterRule>
   </Rules>
</RewriterConfig>

とかのrewriteルールを無理矢理書いて対応しようかと考えたのですが、そもそもWindows Server 2012 R2からはADFSがIISを利用していないのでweb.configが利用できません。

SRで上げても再度ログインしてしまうのは新バージョンからの仕様と言われてしまったので手詰まりかと思ったのですが、ある時ふとOutlookのプロファイルを見たところ、バニティURLが https://outlook.office365.com/owa/contoso.com に変わっていることに気がつきました。(今まではpod510xx.outlook.com/owa/contoso.com)

というわけで、この新しいバニティURLからサインインして、サインアウトを試してみると…おぉ、できました! よく見ると、サインイン後のOWAのURLもpod51054.outlook.comではなくoutlook.office365.comになっています。

20130924-010348 20130924-010428

20130924-010433 20130924-000459 20130924-000503

という訳で、アップグレードに伴って古いバニティURLを利用されている方でサインアウトの問題がでている方は、 https://outlook.office365.com/owa/contoso.com に変更してみて解消するかどうかお試し頂く事をお勧めさせて頂きます。

アップグレード無事完了!

本日予定されていたアップグレードはトラブルも無く無事完了しました!

20130917_01

さて、これで色々また実環境で試せます。

そういえば、気づかなかったのですがプランPでのSharePointがhttpsに変更されましたかね?今まではhttpだったので、ファイル等を転送するのもちょっと躊躇われるところが有ったのですが、これで安心ですね♪

ようやくサービスアップグレード

以前、一回予定されたアップグレードがキャンセルされてから何の音沙汰も無かった私の個人用のSmall Businessのテナントですが、ようやく明日にアップグレードされるようです。

20130917

プランPでトランスポートルールもFOPEルールも無いシンプルなテナントなので失敗することは無い…かな?

Office365勉強会#6に登壇しました

既に先月の話になってしまいましたが、目代さんの主催されているOffice365勉強会の第6回目に登壇させて頂きました。

当日利用したスライドは こちら で公開をさせて頂いておりますが、Office365が出てからの2年間で出てきた新機能や仕様変更の内容をベースに従来から言われていた「ADの有無」「企業の規模」ではない切り口から①クラウドID ②クラウドID+ディレクトリ同期 ③フェデレーションID+ディレクトリ同期の使い分けについて発表させて頂きました。

無題

私としては、クラウド側が随時進化していっているので利用者側のこういったノウハウも随時変化していくものだと考えております。また機会があれば紹介をさせて頂きたいと思います。

ディレクトリ同期最大オブジェクト数の増加

Office 365 Directory Sync Quota Automated Increase to 300,000 Users にて、ディレクトリ同期のオブジェクト上限の引き上げについての発表がありましたので紹介します。

この値は、ディレクトリ同期ツールを導入する際に、Office365に同期できるオブジェクトの制限値(※注)になります。

ユーザー・グループ・連絡先の合計の上限が当初2万だった物が、全テナント5万に引き上げられましたが、今回これが【最初は5万オブジェクトだが、初回の独自ドメイン追加時に30万に変更される】という仕様に変更になりました。

注)過去の記事で調べた限りでは、同期するオブジェクトの上限では無くOffice365側で作成したオブジェクトの数も含む値でした

大学などで利用する場合や、中堅~大企業な環境で利用する場合もこれでほとんどの場合問題ないようになりそうですね。なお、既存のテナントの場合は5万オブジェクトのままであり、また、独自ドメインを利用しない場合などは従来通りSRを上げての対応となるようです。

ちなみに、このSRを上げるには結構面倒な申請が必要です。本当にそれだけのオブジェクト数を必要としているのかを書類に記入して、場合によってはADでのコマンドの実行結果などをエビデンスに添付して申請します。

第6回 Office365勉強会に登壇します

8/31に開催されるOffice365勉強会に登壇させて頂く事になりました。

今回話すテーマとしては、ここ半年で出てきたディレクトリ同期によるパスワード同期や、二要素認証、Windows Server 2012 R2での新しいADFSなどの新しい技術要素を踏まえた上で、今、企業でOffice365を利用する際のIDやパスワード管理はどうするのが良いのかについて少し話したいと思います。

名称:第6回 Office365勉強会
日時:2013/8/31 13:00~18:00
場所:品川グランドセントラルタワー 31F セミナールームA
詳細:http://www.office365room.com/o365-meeting/o365meeting-6/

登録は こちら から。

土曜日の午後ですが、お時間の許す方は是非ご参加頂ければと思います。

Office365のADFSでの最近の変更点

Office365のアクセス制御の実装方式としまして、一番一般的なのはADFSを利用したクレームルールによるアクセス制御になります。クレームにはExchangeにアクセスしてくるクライアントのIPやプロトコルなどの情報がOffice365側で付与されて伝送されてきますので、それとユーザーの所属するグループなどの情報を合わせてアクセス制御を実装します。

ここ1~2年の間で、(非常に細かいことですが)少しここの仕組みでOffice365側で変更になった部分があるので紹介します。

まず、従来のアクセス方式について説明します。Office365のExchange Onlineは、メールボックスがシンガポールか香港のどちらかがプライマリとして設定されています。また、ユーザーがアクセスするCASサーバはどちらのデータセンタも同じURLでのアクセスとなるため、1/2の確立で自分のメールボックスが無いCASにアクセスされます。

この際、Outlook(Outlook Anywhere)やActiveSyncなど、HTTPSによる通信でリダイレクトがサポートされているプロトコルについては、メールボックスがこのサイトに無い旨クライアント側に通知され、メールボックスの存在するサイト(下の図で言えばシンガポール)のCASサーバにリダイレクトされます。

この結果、ADFS(ADFS Proxy経由)に渡されてくる送信元IPは、元のグローバルIP:Aが渡されてきます。

20130723_01

次に、POPやIMAPなど、プロトコル的に「リダイレクト」の処理がサポートされていない場合です。この場合、CASサーバは適切なサイトへの接続(下の図で言うと香港→シンガポール)を「Proxy」処理します。

これが行われると、ADFSには送信元IPとしてグローバルIP:AならびにグローバルIP:Cの両方が渡されます。

20130723_02

この原理により、POP/IMAPのプロトコルをADFSで送信元IP制限を掛ける場合、Exchange OnlineのIP帯についても許可IPリストに入れておく必要がありました。

変更点

①クライアントのIPアドレスとしてIPv6がサポートされました。

Exchange Onlineの接続ポイントとしてIPv6がサポートされました。合わせて、クライアントのIPv6アドレスについても問題なくADFSサーバ側に情報として渡されるようになりました。
20130527_02

ADFSのクレームルールでは、文字列の正規表現でのマッチングで判定をします。「IPv6でもアクセスできるように許可する」「既存の許可ルールが、別のIPv6アドレスにマッチングしないようにする」などの確認が必要になります。

②MicrosoftデータセンタのIP帯のアドレスがマスクされてADFS側に渡されなくなりました。

これは、上記POP/IMAPアクセスの際に従来「グローバルIP:AならびにグローバルIP:C」が渡されてきた物から香港DCのIP帯であるCの方がマスクされて「グローバルIP:A」のみADFSに渡されてくる形になります。

http://community.office365.com/ja-jp/wikis/sso/927.aspx にも、以下のように記載があります。

・クライアント IP アドレスおよび要求を渡した各プロキシのアドレスを示す複数の IP アドレスは、
コンマで区切って指定されます。
・Exchange Online インフラストラクチャに関連する IP アドレスは一覧に表示されません。

これにより、ADFSのクレームルールを作成する場合に、プロトコルの挙動(リダイレクトかProxyか)の差について作成者は意識せずに作れるようになりました。

ただし、現時点で1つ問題点というか、制限事項が確認されています。このマスクされるIPアドレスについては別途Microsoft側で定められているようなのですが、それにシンガポールDC、香港DCなど【同一DCで動作しているWindows AzureサービスのIP帯】も一部含まれているようです。

この為、Windows Azure上で展開されているExchange Online対応のサービスについて、適切なIPアドレスが渡されてこない可能性があります。IntuneのクライアントアクセスのIPアドレス帯については未確認ですが、同じ原理でいけば可能性はあると思います。

いずれIPアドレスのリストなどが精査されて直ることを期待してますが、動作原理を知っているのといないのでは有事の際に対応にも差が出るかと思いますので、細かいことですがここでご紹介させて頂きました。

なお、この記事は一部検証結果に基づいた個人的な推察を交えて記載しておりますので、もし事実に反することや、既に解消されたということが書かれていた場合は訂正させて頂きますので、連絡を頂ければと思います。

最初の管理者がExchange管理センターに入れない

Office365にサインアップを行う際、最初に作成されるアカウントは(その時点で)唯一の全体管理者として作成されます。

通常は、このアカウントを利用して色々Exchange OnlineやSharePoint Onlineの設定を行うことができるのですが、テナントによっては希に以下の様な事象になり、Exchangeの管理ができなくなることがあります。

①管理者メニューのExchangeを開くと、組織では無く個人のExchangeの設定が出てしまう。
20130721_01

②Office365管理センターのサービス設定からExchange関係の設定をしようとすると403アクセス拒否のエラーが出る
20130721_02 20130721_03

どういうメカニズムで発生しているのか、少し中を見てみたいと思います。まず、新しい全体管理者のアカウント(今回はadmin02という名前)を作成します。この新規で作成したユーザーはExchangeの管理画面(Exchange管理センター)に接続できるので、接続後に[アクセス許可][管理者の役割]を見てみます。

TenantAdmins_xxxxxという名前のグループがありますが、ここに通常は全体管理者のユーザーがコピーされてきます。このグループがOrganization Managementのメンバーなので、全体管理者がExchangeの管理権限を持つという仕組みです。ここで、メンバーがadmin02という新規で作ったユーザーしかいないことが分かります。
20130721_04

よって、この事象は恐らく全体管理者のメンバー情報がOffice365ポータルからExchangeにコピーされる際に、タイミングや不可の問題等で欠落してしまったと推測されます。また、最初のユーザーでのみ発生することから、テナントのプロビジョニングの問題と考えられます。

よって、最初のユーザーから一回全体管理者の管理権限を外し、再度付け直すことによって解決を試みます。
20130721_05

反映までに若干時間が掛かりましたが、これでTenantAdmins_xxxxxのメンバーに最初の管理者が追加されました。後は、必要に応じて一時的に作成した全体管理者アカウントを削除するなりすれば問題なく利用できます。
20130721_06

Office365バージョンアップで実行されるコマンドと注意点

先月より本格的に日本でも開始されたOffice365のバージョンアップですが、その裏側でどんなことが行われているかについて少し調べてみたいと思います。

ご存じの通り、Exchangeは管理者のコマンド(参照以外)実施は「管理者監査ログ」を見ることにより調べることができますので、早速バージョンアップしたテナントの管理者監査ログを取り寄せてみます。

管理者監査ログは、Exchange管理センターの[コンプライアンス管理][監査]のメニューから[管理者監査ログのエクスポート]を選択します。アップグレードを含む適切な期間と、結果を受領するメールボックスを選択して[エクスポートを]選択します。通常、数時間待つとメールで管理者監査ログが届きます。

20130720_01
20130720_02

管理者監査ログは、XMLファイルの形式です。1つ1つのイベントは、<Event Caller=…>で始まり、</Event>で終わります。

アップグレードが実施された時間帯を元に探すと、”NT AUTHORITYSYSTEM (Microsoft.Exchange.ServiceHost)”からの命令で実施されている一連のコマンドが表示されます。ほとんどが、Set-MailboxPlan、Set-CASMailboxPlanなどのユーザーに開放されていないコマンドレットやInstall-GlobalSettingsContainer、Install-DataClassificationConfigなどのアップグレード用に作成されたであろう特別なコマンドレットになっています。

ここで、以前の投稿で紹介したアップグレードコマンドの実行により一部の設定がデフォルト値に戻ってしまうという現象が再現していないかについて検証してみたいと思います。以前の物はマイナーバージョンアップによる物で、その後の更新によりこちらは設定が保持されるようになりました。が、今回は残念ながら以前紹介した3つのパラメータ

Set-RemoteDomain AutoForwardEnabled True
AutoReplyEnabled True
Set-OrganizationConfig MailTipsLargeAudienceThreshold 25

については元に戻ってしまうようです。
20130720_03

また、当然と言えば当然なのですが、このタイミングでSet-OwaMailboxPolicyでPublicFoldersEnabledがTrueになってたりなどもしてます。

Exchangeをお分かりの方で、何かUpgrade後に挙動がおかしいと思った場合には管理者監査ログを調べられるのも良いかもしれませんね。