AD FS環境でログオンユーザ以外でOffice365にログオンする(2)

以前の投稿 で書きましたが、AD FSを利用したシングルサインオン環境だと、強制的にWindowsにログオンしているADのアカウントでOffice365にログインしてしまいます。通常はそれほど問題にならないのですが、

  • 共用で利用しているグループのアカウントが存在する
  • 他人(共用)のコンピュータから自分の権限で利用する
  • 複数のアカウントのメールボックスをOWAから同時に開く

など、限られた環境の中ではありますが、結構ニーズとしてはあるように思えます。

複数のメールボックスを開くというのは、TIPSとして「IEのInPrivateで2つめのウィンドを開き、別のID/PASSで接続する」というのが有りますが、シングルサインオン環境だと両方とも同じアカウントで開いてしまいます。

以前検討した際は、いちいちその都度ゾーンの設定をいじってやりくりする物でしたが、もう少しスマートなやり方を考えてみましたので紹介します。

準備する点は2点。通常通りADFSサーバのアドレスを「イントラネット」サイトに入れますが、ここをhttps://付きで指定すること。もう1点は前の記事で紹介したとおり、httpでもADFSに接続出来るようにすることです。

まずは通常通り一つ目のアカウントを開いてOWAに接続し、そのままInPrivateブラウズでもう一つのウィンドゥを開きます。

 

ここで、2番目に開いた方のウィンドゥで、Exchange OnlineにAD FSを利用して気合いでOWAリダイレクトするで紹介したurlをhttp://に変更したアドレスに接続を試みます。

http://sts.example.com/adfs/ls/?wa=wsignin1.0&wtrealm=urn:federation:MicrosoftOnline&wctx=wa%3Dwsignin1.0%26wreply%3Dhttps:%252F%252Foutlook.com%252Fowa%252F%253Fexsvurl%253D1

すると、上手いことID/PASSの入力画面がポップアップしてくれますので、ここから開きたいユーザのアカウント情報を入力します。

これで、無事testuser oneさんと阿部 太郎さんの2つのOWAを開くことができました。

広告

ADFSをSSLオフロード環境で利用する

AD FSですが、MSの提供しているAD FS 2.0 Capacity Planning Spreadsheetなどを参考にサイジングしてみると、比較的とCPU食わなそうに見えるのですが、実際に動作を見てみると意外に新規トランザクション数が伸びない印象を受けます。

ということで、少しでも負荷を軽減できるようにSSLのオフロード(LBでSSLを終端)をするときの処理を考えてみます。本当はiRulesまで作ろうかと思ったのですが、まだ需要が無かったのでとりあえずサーバ側のみで。

Office365のようなパッシブフェデレーションの場合、https://sts.example.com/adfs/ls…などにリダイレクトされます。AD FSサーバのIISを見てみると同じフォルダツリーの中に入っているので、そのままでも動くかなと思い、とりあえず以前の投稿で書いた無理矢理SSO用のurlをhttps⇒httpに変更してアクセスを試みます。

403エラーが表示されます。何となくIISの設定のみで行けそうなので、サーバマネージャのIISを開き、ADFSの実態で有る/adfs/lsの[SSL設定]を開いて確認してみると、[SSLが必要]にチェックボックスが入っています。

このチェックを外して再度アクセスを試みると、無事アクセスできました。

あと、SSLオフロードをする際は、代理で接続に来るLBなりの仕様に応じて(おそらく対応してないでしょうが)IIS側でWindows認証の拡張保護を無効化する必要があるかもしれません。(この辺を参考に)

Exchange Onlineでのメール転送

Office365で利用されているExchange Onlineは、いくつかの方法で着信したメールを他のアドレスに転送をすることができます。

大きく分けて、転送を設定出来るポイントは4つ有ります。

  1. Forefront Online Protection for Exchangeのポリシールール
  2. Exchange Onlineのトランスポートルール
  3. Exchange Onlineのメール転送
  4. Exchange Onlineの受信トレイルール

今回は、これらの4つをいくつかのポイントに焦点を合わせて比較してみたいと思います。

①FOPE Policy ②Transport ③MailForward ④Inbox-Rule
設定可能な人 管理者 管理者(代理設定)
ユーザー
ジャーナルアーカイブ 対象外 対象
受信トレイに残さず転送 可能 不可
Envelope From書き換え 無し 有り
転送系ヘッダ付与 無し 有り(※1) 有り(※2) 有り(※3)
表示名への書き換え 無し 有り(※4)
受信トレイルールの影響 受けない 有り(※5)
※1: X-OriginatorOrg、X-MS-Exchange-Transport-Rules-Loop
※2: X-OriginatorOrg、X-MS-Exchange-Inbox-Rules-Loop
※3: X-OriginatorOrg、X-MS-Exchange-Inbox-Rules-Loop、Recent-From
※4: Exchangeが自動的に行う変更username@example.com⇒山田太郎<username@example.com>など
※5: ルールの順序により、転送より優先度が高いルールの方が先に処理される

以上のことから、通常は3をベースに条件に応じて使い分けるのが良いかと思われます。

  1. Exchangeに影響無しにメールを転送したい場合
  2. 管理者が保全などの目的で(特定条件を満たす)メールを転送する場合
  3. ユーザ自身が(また、管理者が代理で)携帯などに転送を設定する場合
  4. ユーザが特定の条件に合うメールのみ、条件付き転送を行う場合

設定方法といくつかの注意点をメモ書き程度に

①Forefront Online Protection for Exchangeのメニューから【ポリシールール】でBCCで配信ルールを作成する。

②Exchangeコントロールパネル(組織の管理)の【メールの制御】-【ルール】から新規作成を行う。

③Exchangeコントロールパネルを開き、【アカウント】-【接続されているアカウント】から【電子メールの転送先】を設定する

④Exchangeコントロールパネルを開き、【電子メールの整理】-【受信トレイのルール】でリダイレクトのルールを作成する

  • プランEではなく、プランPの場合はFOPEの管理メニューにアクセス出来ないので①の方式は利用不可
  • Exchange Onlineのみでメール監査を行う場合、①~③でメールボックスに配送せず転送した場合は、対象外となる
  • ①②の「リダイレクト」は④のリダイレクトとは意味が異なり、メールボックスには配送されない。④のリダイレクトを行う場合は「Bccで送信」を利用する。

OWAにシングルサインオンする(その2)

以前 Exchange OnlineにAD FSを利用して気合いでOWAリダイレクトする の記事でOWAへのシングルサインオンを紹介しましたが、より簡単な方法を見つけましたので紹介します。

やり方は簡単で、ブラウザを立ち上げて https://outlook.com/owa/%5Bドメイン名%5D にアクセスするだけです。
または、https://www.outlook.com/[ドメイン名] でも良いらしいです。

ADFSサーバのアドレスがイントラネットサイトに入っていないといけないという条件などは他のシングルサインオンと変わりませんが、これにより自動的にそのドメインがフェデレーションドメインとして構成されていれば、ADFSにリダイレクトされて認証され、最終的にOWAの画面が開きます。

と、これだけだと少しつまらないので、ついでにFidder2で通信のシーケンスを追ってみましょう。

Fiddler2 を使用して Office 365 Id フェデレーション ログオン処理をトレースする方法を参考にしつつ、Fidder2をインストールし、セットアップします。HTTPSの中身を見る場合、ADFSサーバ側のIISの設定変更(拡張保護を使用しないようにする)が必要です。

Fidder2を立ち上げ、Decrypt HTTPS trafficにチェックを入れてアクセスを試行してみます。

outlook.com ⇒ login.microsoftonline.com ⇒ [AD FSサーバ] ⇒ login.microsoftonline.com ⇒ outlook.com ⇒ pod51xxx.outlook.com ⇒sinprdxxxx(or hknprdxxxx).outlook.comの流れてリダイレクトされ、無事シングルサインオン出来ていることが確認できました。

もちろん、ログイン後にホームを押すとOffice365のポータルにも行けますし、そこからチームサイト(SharePoint Online)にもSSOできます。