Office 製品の Office 365 モダン認証フローと認証キャッシュについて
こんにちは。 SharePoint サポートの森 健吾 (kenmori) です。
Office 2016 になり、Office 製品の Office 365 に対する認証形式が標準でOffice 2013 の既定の認証形式であるレガシー認証 (Microsoft Online サインイン アシスタント) から、モダン認証 (ADAL : Active Directory Authentication Library) に変更されました。※ () 内は内部コンポーネント
Office の認証に関して問題が発生した際に、一般的な認証フローや各種用語および対処策 (キャッシュの削除) などを把握しておくことは、早期問題解決において重要です。
本投稿では、最初に Office 製品の Office 365 に対するモダン認証のフローを説明した上で、各種キャッシュを説明していきます。
なお、細かい説明をを飛ばしてキャッシュの削除方法を確認したいという方は、3. 認証キャッシュ 以降の内容から読み始めてください。
問題が発生した際に切り分けのためすべてのキャッシュを削除することが有効なトラブル シューティング ステップとなります。
1. モダン認証を使用するメリット
モダン認証では、認証プロセスの中に ADAL を使用した OAuth を組み込んだ認証となっています。
その背景に、近年、クラウドでリリースされる新機能はモダン認証のみに対応した形で開発されております。
例えば、以下の機能を使用するためには ADAL が必須になると言われています。
・多要素認証 (MFA : Multi-Factor Authentication : 証明書認証, Phone 認証 etc.)
・Intune 連携 (MAM : Mobile Application Management / MDM : Mobile Device Management) - モバイル アプリの場合
その他、ADAL を使用することで以下のようなメリットがあります。
・OAuth トークン ( JWT トークン) を複数の Office アプリケーションで共有できるため、Outlook、Skype for Business、その他各種 Office アプリケーションのいずれかで取得したトークンを再利用して、各アプリケーションの認証プロセスを短縮できる。
ただし、現時点では実装上、ほとんどのアプリケーションにおいて別のトークンとして管理しているため、このメリットを享受していないように思われます。
・ユーザー名、パスワードによる認証処理を抑制できるため、クライアント端末におけるネットワーク盗聴からアカウント情報を守ることができる。
・JWT トークンは特定の用途のアプリケーションに対するアクセス許可であり、万が一漏えいしても別の用途に使用できないため、被害を最小限に抑えることができる。
・JWT トークンはパスワード変更時に再発行の必要がないため、パスワード ポリシーによる運用影響を受けにくい (ただし JWT トークン有効期限切れ時に影響が出ることもある)。
ただし、特にオンプレミス サーバーに対して旧来使用していた認証基盤が正常動作しないなどの状況に陥った場合は、やむを得ず EnableADAL を OFF (0) にする状況が生じる可能性も考えられます。
モダン認証に関する使用方法や、有効化・無効化の切り替え (EnableADAL レジストリ値) などについては、下記のサイトをご確認ください。
タイトル : Office 2013 クライアント アプリと Office 2016 クライアント アプリでの先進認証のしくみ
アドレス : https://support.office.com/ja-jp/article/e4c45989-4b1a-462e-a81b-2a13191cf517
2. モダン認証の処理概要
次にモダン認証の簡単な説明をいたします。
レガシー認証では、サインイン アシスタントが独自の UI を表示していましたが、Office のモダン認証 (Outlook や Skype を除く) では上記の通りブラウザーを使用した認証画面 (エクスペリエンス上は同一) を使用する実装となります。
上記ステップ 1. から 4. が一般的に OAuth と呼ばれるステップです。Office 365 APIで開発経験のある方は、ここまでの内部フローにはなじみがあると思います。
このプロセスにて特筆すべきキャッシュについて記載します。
・入力された資格情報に紐づくキャッシュ情報が A) Office 資格情報としてレジストリに保存されます。
・OAuth 認証で取得した JWT トークンは、この後、クライアント PC 上の B) 資格情報マネージャーに保存されます。
Office クライアント アプリケーション再起動時には、ユーザー名・パスワードではなく、B) にて保存されたトークンを送信するところから認証処理が開始します。
Office のモダン認証では、ADAL 認証で取得したトークンをそのまま使用してサービス アクセスするのではなく、この後 OAuth ネイティブ クライアント認証として C) SPOIDCRL Cookie を取得する点に注意が必要です。
補足
モダン認証下における、フェデレーション認証時の動作は以下です。上図において 1. 2. の動作が少し複雑になるだけですので、変更部分だけをピックアップします。
3. 認証キャッシュ
ここまでで、Office 製品の Office 365 に対する認証のフローを紹介してきました。その過程で生じるいくつかの認証情報のキャッシュについて少し詳細に説明します。
トラブル シューティングにおいては、これらのキャッシュ情報をすべて削除することで、問題の切り分けを行うことができます。
A) Office 資格情報キャッシュ
使用条件 : Office 2013 以降
レガシー認証およびモダン認証
説明 :
Office クライアント アプリケーションがユーザー名とパスワードに関連づく資格情報を保存します。 このキャッシュは、特にレガシー認証で活躍します。入力された資格情報に紐づくため、パスワードが変更されるとこのキャッシュではログインできなくなります。
この情報をもとに、アプリケーションの次回起動時にユーザーが資格情報を入力することなく、自動的にログインできるようにした機構です。
特にパスワード変更したにも関わらず反映されておらず、認証エラーが繰り返し発生する場合はこのキャッシュを疑います。
削除方法 :
1) Word, Excel, PowerPoint など UI のある Office 製品のいずれかを起動します。
2) 画面右上メニューから、[アカウントの切り替え] をクリックします。
3) [サインアウト] - [サインアウト] をクリックします。
4) 上記手順を実施の上で、さらに以下のレジストリ キー配下を削除することで確実に削除できます。
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\15.0\Common\Identity\Identities
B) OAuth トークン (JWT トークン、アクセス トークン )
使用条件 : 以下のいずれか
・Office 2016
・Office 2013 (レジストリ EnableADAL = 1)
説明 :
モダン認証では、JWT トークンを保存して自動認証します。このトークンは資格情報マネージャーに格納されます。
モダン認証では、アプリケーションの次回起動時には、このトークンを使用して認証 Cookie を取得します。
削除方法 :
- コントロール パネルより [ユーザー アカウント] - [資格情報マネージャー] を起動します。(または control keymgr.dll コマンドを実行します。)
- MicrosoftOfficexx_Data:ADAL:<GUID> の資格情報を削除します。
参考情報
本セッションで発行されたアクセス トークンの有効期限に関する情報について記載させていただきます。
タイトル : Office 365 のセッション タイムアウト
アドレス : https://support.office.com/ja-jp/article/37a5c116-5b07-4f70-8333-5b86fd2c3c40?ui=ja-JP&rs=ja-JP&ad=JP
先進認証では、アクセス トークンと更新トークンを使用して、Azure Active Directory を使用する Office 365 リソースへのアクセス権を付与します。
更新トークンは 14 日間有効で、継続して使用されていれば最長で 90 日間有効にすることができます。 90 日経過すると、ユーザーは再認証を求められます。
更新トークンは、次のような複数のイベントにより無効になる可能性があります。
・更新トークンが発行されてからユーザーのパスワードが変更された。
・管理者は、ユーザーがアクセスしようとするリソースへのアクセスを制限する、条件付きのアクセス ポリシーを適用できる。
C) Cookie (SPOIDCRL)
使用条件 :
Office 製品共通
説明 :
Cookie は、 SharePoint Online と OneDrive for Business にデータ アクセスする際に送信される Cookie (例SPOIDCRL, FedAuth) です。
モダン認証で生成される SPOIDCRL Cookie はメモリ内保持されるためプロセス再起動により自動消滅しますが、特にブラウザー認証の際に "サインインしたままにする" などを実施し、永続化 Cookie を保持している場合、WebDAV MiniRedir を経由した Office 製品からのアクセスがある場合は、影響を受けることになります。
そのため、切り分けのためにここでキャッシュ削除の手順を記載しておきます。
削除方法 :
Internet Explorer のキャッシュを完全に削除します。
- Internet Explorer を起動し、[ツール] - [インターネット オプション] をクリックします。
- "閲覧の履歴" にて [削除] をクリックします。
- クッキーと Web サイト データは必須、あとはできる限りすべての情報をチェックして削除します。
- Internet Explorer と Office アプリケーションを再起動します。
Office は Internet Explorer と共通のコンポーネントを使用して外部データ アクセスを行います。そのため、IE のキャッシュや Cookie、設定を共有する動作となります。
今回の投稿は以上です。
Comments
- Anonymous
April 17, 2017
本記事について、大変参考になりました。パスワード更新後、outlookやofficeの挙動がおかしくなることがあり、困っていました。もしお分かりになればですが、上記に記載の「参考情報:本セッションで発行されたアクセス トークンの有効期限に関する情報について記載させていただきます。」の部分について、キャッシュの削除をせずとも再度、更新後の資格情報の入力を要求されるのはどのタイミングにありますでしょうか?参考情報のページに「アクセス トークンは、認証が成功した後に提供される JSON Web トークンで、1 時間有効です」とありますが、最大1時間待っていれば、再度資格情報が要求される?と思ってい良いでしょうか?素人質問ですいません。- Anonymous
May 10, 2017
ご質問ありがとうございます。アクセス トークンの期限が切れ、再度資格情報を必要とするタイミングとして、一般的には本投稿の参考情報欄の下部に抜粋させていただきました更新トークンの有効期限や、その他の例外イベントの条件が適用される形となります。
- Anonymous