Office365にAD FSを利用して何とかシングルサインオンしてみる

Office365は、ADFSを利用すると、シングルサインオンにログインができます。

というのも、通常はログイン画面でログオンIDを手動で入力して、出てくるリンクをクリックするという手間が発生するからです。(ログオンIDは前回入力した値が保存できるので、毎回毎回入れなくても大丈夫ですが)

最初にポータル画面にアクセスすると、まず以下のような画面になります。Microsoft Online Service IDの欄に、AD FSで設定した普段利用しているActive Directoryのログイン名(user@domain形式)を入力します。

入力が終わると下のパスワード入力欄がグレーアウトし、新たに現れる「xxxxxにサインインする」というリンクをクリックすることにより、(4回くらいのリダイレクトを経て)Office365にログインされます。

これは、Office365のログインサイトは各ユーザ共通であり、ここのフォームでパスワードも入れて入力するアドレス(クラウドID)か、パスワードはOffice365側では持っておらずAD FSサーバにリダイレクトして認証処理を行うアドレスか(フェデレーションID)が最初の時点では判断が付かないからというのが原因です。

ここの@以下の値(realm)をポータル側でチェックして、フェデレーションドメインだった場合はリンクを出す処理をしています。

リンクをクリックした後のアクセスの流れですが、かなり端折って話をすると①Office365 ⇒ ②AD FS ⇒ ③Office365の順にアクセスをすることになります。が、前の記事にも書きましたが、ここで入力したメールアドレスは②の認証では実は利用されていません。

よって、①でログインIDを入力してサインインするをクリックするという工程は、実は省略しても良いのでは?と邪推してしまいます。という訳で早速実験してみましょう。「xxxxxにサインインする」のリンクをクリックして飛ぶurlを取得します。

https://sts.example.com/adfs/ls/cbcxt=out&vv=&username=hoge@example.com&mkt=&…

どうやら、入力したユーザ名や戻り先のサイトの情報を一緒に付けて送ってきているようです。urlエンコードしているみたいですが、%2526などのように二重でurlエンコードされている物も有りそうです。

とりあえずこれをデコードしつつ整理します。その後、1つ1つ省略してアクセスできるかどうかを試してみました。

結構省略できそうです。結果的に、以下のurlに社内のポータルサイトからリンクを張ってアクセスすることにより、シングルサインオン環境が実現できました。(無理無理感は有りますが…)

https://sts.example.com/adfs/ls/?wa=wsignin1.0&wtrealm=urn:federation:MicrosoftOnline&wctx=wreply%3Dhttps:%252F%252Fportal.microsoftonline.com

※AD FSサーバのアドレス(上記の例だとsts.example.com)がイントラネットサイトとして認識されている必要がありますので、必要に応じてIEのゾーンの設定をする必要があります。

※手元の環境だと、これを使ってログインした後にOWAを表示させると画面表示が崩れるという事象が発生することがありましたが、その場合は「Office デスクトップ アプリケーションのセットアップと構成」を実行することにより正常な状態に戻りました。

AD FS環境でログオンユーザ以外でログオン(非SSO)を行う

AD FS環境だと、ポータルではログインIDを入れるのみでパスワードは入力せず、そのままイントラネットのAD FSサーバにリダイレクトされ、そこで認証されてOffice365へのアクセスが行われます。

これはこれで便利な機能なのですが、運用上、他のアカウントでOffice365へのアクセスを実施する必要が出てくる場合が有ります。例えば、外部受付用の共有アカウントでの作業や、退職者のバックアップ作業などの場合です。

testuseroneというアカウントでWindowsにログインしていて、shared-userというアカウントでOffice365に接続しようとするシチュエーションを考えます。まず、ポータルで、普通にログインをしようとしてみます。

あれ…testuseroneのアカウントのままログオンされてしまいました。

どうやら、AD FS側ではOffice365ポータルで入力したユーザアカウントの値は特に検証せず、Active Directoryにログオン出来るかどうかのみを判断してOffice365側にチケットを発行しているようです。

普通に解決しようとするなら、AD FSのクレーム発行ルールを変更して…ということになるのだとは思うのですが、まだ勉強不足なので、今回は他のやり方を考えてみます。

  • まず、FirefoxでのOffice365へのシングルサインオン で紹介したとおり、Firefoxはデフォルトではログイン情報をWebサイトに飛ばしませんので、共用アカウントでのログオンにはFirefoxを利用してID/PASS入力で入る。
  • または、IEもゾーンが「イントラネットサイト」に無い限りログイン情報を飛ばさないので、これを起動前に明示的に他「例:信頼済みサイト」に変更してあげて、終了後必要に応じて戻す
Option Explicit
Dim WSHShell
Set WSHShell = CreateObject("WScript.Shell")
WSHShell.RegWrite "HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionInternet SettingsZoneMapDomainsexample.comstshttps", 2, "REG_DWORD"

これで、一応ID/PASSの入力画面がポップアップしてきて、指定のアカウントでログインができるようになります。

う~ん、でもあまり美しくない。上手いやり方は無いものだろうか…

Chrome on Win7のSSOをAD FS側の設定で実現する

FirefoxでのOffice365へのシングルサインオンの記事では、各クライアントサイドのセキュリティ設定の緩和によって、シングルサインオンの機能を実現しました。ただ、この手法は全クライアントにレジストリの変更を強いることになるので、あまりスマートな実装ではございません。

今回、サーバサイドの設定変更でシングルサインオンが出来ないか試してみたいと思います。

Continue reading

FirefoxでのOffice365へのシングルサインオン

 Office365の リリースノート にも記載がありますが、Windows7もしくは「認証に対する保護の強化」をインストールしたXP,Vistaにおいて、FirefoxやChromeでAD FS環境でのシングルサインオンを実施しようとするには少し設定変更が必要になります。(7/2追記修正)

試しにアクセスをしようとしてみると、

Continue reading

ADFS環境下のOffice365のDRについて

3/11の震災をきっかけにして、DR対策の一環としてOffice365を検討されている方も多いかと思います。確かにOffice365自体はアジア圏の2地域(シンガポールと香港)にサーバが有り、地域的には十分な冗長性が確保されているのではと思います。

ただ、アクセス制御などの目的でAD FSを入れる構成とした場合、Office365へのインターネットアクセスの他に、いくつか接続性を確保する必要が出てくるポイントがあります。

Continue reading

AD FS(AD FS Proxy)で利用するSSL証明書

AD FS Proxyの役割 でも書きましたが、現時点でOffice365を利用する場合、以下の条件の場合は第三者機関の発行するSSL証明書が必要になります。

  • 外部(インターネット)からOffice365を利用したい場合
  • MAPI/IMAP/POP3/ActiveSyncのメールクライアント(要はOWA以外)を利用したい場合

Continue reading

IDフェデレーション時のブラウザの設定

Microsoftでもようやく KB:2530713 で紹介されておりますが、現時点でOffice365のフェデレーション環境を利用するには、以下の通りゾーンの設定を各クライアントのブラウザに設定する必要があります。これをしない場合、ID/Passwordの入力を求めるポップアップが出たり、他のブラウザを開いているとOffice365からサインアウトできないなどの事象が発生することがあります。

Continue reading

Office365導入準備の為のUPN一括変更

Office365 Deployment Readiness Toolの紹介でも書きましたが、Office365でIDフェデレーション環境を構築する場合、UPN名がインターネットから解決できる自社の保有するドメインである必要があります。

このため、example.localなどのUPN名でActive Directoryを構築済みである場合、ローカルのUPN名を変更する必要があります。また、NTドメインからアップグレードして、そのままのユーザ(UPN名が設定されていないユーザ)なども、ドメイン名ユーザ名の形式のNTログイン名の他、UPN名を設定する必要があります。

Continue reading

AD FS Proxyのアクセス制御

AD FS Proxyの役割で書きましたが、AD FS Proxyは外部のクライアントからのアクセスの他に、Office365(Exchange Online)からのアクセスもあります。

デフォルトだと特に何も制限無くanyで開いているので、AD FS ProxyでIP制限を掛けてみたいと思います。

Continue reading