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の入力画面がポップアップしてきて、指定のアカウントでログインができるようになります。
う~ん、でもあまり美しくない。上手いやり方は無いものだろうか…