シングル サインオン (SSO) のエラー メッセージのトラブルシューティング
この記事では、Office アドインのシングル サインオン (SSO) に関する問題のトラブルシューティング方法と、SSO が有効なアドインによって特別な条件やエラーを確実に処理する方法について説明します。
注:
現在、シングル サインオン API は Word、Excel、Outlook, および PowerPoint でサポートされています。 シングル サインオン API の現在のサポート状態に関する詳細は、「IdentityAPI の要件セット」を参照してください。 Outlook アドインを使用している場合は、Microsoft 365 テナントの先進認証を有効にしてください。 これを行う方法については、「Exchange Onlineで Outlook の先進認証を有効または無効にする」を参照してください。
デバッグ ツール
開発時は、アドインの Web サービスからの HTTP 要求および応答を傍受して表示することができるツールを使用することを強くお勧めします。 最も人気のあるもののいくつかは次のとおりです。
getAccessToken からのエラーの原因と処理
このセクションで説明するエラー処理の例については、次を参照してください。
13000
getAccessToken API は、アドインまたは Office バージョンではサポートされていません。
- この Office のバージョンは、SSO をサポートしていません。 必要なバージョンは、任意の月次チャネルの Microsoft 365 サブスクリプションです。
- アドインのマニフェストに適切な WebApplicationInfo セクションがありません。
アドインがこのエラーに対応するには、ユーザー認証の代替システムにフォールバックする必要があります。 詳細については、「要件とベスト プラクティス」を参照してください。
13001
ユーザーが Office にサインインしていません。 ほとんどのシナリオでは、AuthOptions
パラメーターでオプション allowSignInPrompt: true
を渡して、このエラーが表示されないようにすることをお勧めします。
ただし、例外がある場合があります。 たとえば、ユーザーがすでに Office にログインしている場合にのみ、ユーザーがログインしていることが必要な機能とともにアドインが開くようにするとします。 ユーザーがログインしていない場合は、ユーザーがサインインしている必要のない別の機能セットを使用してアドインを開きます。 この場合、アドインが起動する際に実行されるロジックでは、allowSignInPrompt: true
を含めずに getAccessToken
が呼び出されます。 別の機能のセットを表示するようにアドインに指示するためのフラグとして、13001エラーを使用します。
別の方法として、13001 に対応するために、ユーザー認証の代替システムにフォールバックすることもできます。 これにより、ユーザーを Office ではなく AAD にサインインさせられます。
このエラーは通常、Office on the webでは発生しません。 ユーザーの Cookie の有効期限が切れた場合、Office on the webはエラー 13006 を返します。 ただし、ユーザーが拡張追跡保護をオンにして Firefox からOutlook on the webにアクセスすると、エラー 13001 が発生します。
13002
ユーザーが、同意ダイアログの [キャンセル] を選択するなどして、サインインまたは同意を中止しました。
- アドインがユーザーのサインイン (または同意) の必要がない機能を提供している場合、コードはこのエラーをキャッチし、アドインが継続して実行するようにしなければなりません。
- 同意済みのサインインしているユーザーがアドインで必要な場合は、コードは [サインイン] ボタンを表示させる必要があります。
13003
ユーザーの種類がサポートされていません。 ユーザーは、有効な Microsoft アカウントまたはMicrosoft 365 Educationまたは職場アカウントを使用して Office にサインインしていません。 このエラーは、Office がオンプレミス ドメイン アカウントで実行されている場合に発生する可能性があります。 コードでは、ユーザー認証の代替システムにフォールバックする必要があります。 Outlook では、このエラーは、Exchange Onlineでユーザーのテナントに対して先進認証が無効になっている場合にも発生する可能性があります。 詳細については、「要件とベスト プラクティス」を参照してください。
13004
無効なリソースです。 (このエラーは、開発中にのみ表示する必要があります)。アドイン マニフェストが正しく構成されていません。 マニフェストを更新してください。 詳細については、「Office アドインのマニフェストを検証する」を参照してください。 最も一般的な問題は、 <Resource> 要素 ( <WebApplicationInfo> 要素内) に、アドインのドメインと一致しないドメインがあるということです。 Resource 値のプロトコル部分は "https" ではなく "api" である必要があります。ドメイン名の他のすべての部分は (ポートがある場合はそれも含めて)、アドインと同じである必要があります。
13005
無効な許可です。 このエラーは、通常、Office がアドインの Web サービスに対して事前に承認されていないことを意味します。 詳細については、「サービス アプリケーションを作成する」および「シングル サインオン (SSO) を使用する Office アドインをMicrosoft ID プラットフォームに登録する」を参照してください。 このエラーは、ユーザーが自分の profile
に対するアクセス許可をサービス アプリケーションに与えていない場合、または同意を取り消した場合にも発生する可能性があります。 コードでは、ユーザー認証の代替システムにフォールバックする必要があります。
開発中の場合、別の原因として、アドインを使用する Internet Explorer およびユーザーが自己署名証明書を使用していることが考えられます。 (アドインで使用されているブラウザーまたは Web ビューを特定するには、「 Office アドインで使用されるブラウザーと Webview コントロール」を参照してください)。
13006
クライアント エラーです。 このエラーは Office on the web でのみ確認されています。 コードでは、サイン アウトし、次に Office のブラウザー セッションを再起動することをユーザーに促す必要があります。
13007
Office アプリケーションは、アドインの Web サービスへのアクセス トークンを取得できませんでした。
- 開発中にこのエラーが発生する場合は、アドインの登録とアドイン マニフェストで
profile
のアクセス許可および (MSAL.NET を使用している場合は)openid
のアクセス許可が指定されていることを確認してください。 詳細については、「シングル サインオン (SSO) を使用する Office アドインをMicrosoft ID プラットフォームに登録する」を参照してください。 - 運用環境では、アカウントの不一致によってこのエラーが発生する可能性があります。 たとえば、職場または学校アカウントが想定されていたときに、ユーザーが個人用 Microsoft アカウント (MSA) でサインインしようとするとします。 このような場合、コードは別のユーザー認証システムにフォールバックする必要があります。 アカウントの種類の詳細については、「シングルテナント アプリとマルチテナント アプリの ID とアカウントの種類」を参照してください。
13008
ユーザーは、前回の getAccessToken
の呼び出しが完了する前に getAccessToken
を呼び出す操作をトリガーしました。 このエラーは Office on the web でのみ確認されています。 コードでは、ユーザーに前の操作が完了した後に操作を繰り返すよう要求する必要があります。
13010
ユーザーは、Microsoft Edge 上の Office でアドインを実行しています。 ユーザーの Microsoft 365 ドメインと login.microsoftonline.com
ドメインは、ブラウザー設定の別のセキュリティ ゾーンにあります。 このエラーは Office on the web でのみ確認されています。 このエラーが返された場合、ユーザーには、これについて説明するエラーとゾーンの構成を変更する方法に関するページへのリンクが表示されています。 アドインがユーザーのサインインを必要としない機能を提供している場合、コードでは、このエラーをキャッチして、アドインの実行を続行する必要があります。
13012
考えられる原因はいくつかあります。
- アドインは、
getAccessToken
API をサポートしていないプラットフォーム上で実行されています。 たとえば、iPad ではサポートされていません。 「Identity API 要件セット」も参照してください。 - Office ドキュメントは、[開く] ドロップダウン メニューの [Teams で編集] オプションを使用して、Teams チャネルの [ファイル] タブから開かれました。
getAccessToken
このシナリオでは、API はサポートされていません。 -
getAccessToken
への呼び出しでforMSGraphAccess
オプションが渡され、ユーザーが AppSource からアドインを取得しました。 このシナリオでは、アドインが必要とする Microsoft Graph スコープ (権限) について、テナント管理者はアドインに同意していません。 Office では、ユーザーに求めることができるのは AADprofile
スコープへの同意のみであるため、allowConsentPrompt
を使用してgetAccessToken
を取り消しても問題は解決できません。
コードでは、ユーザー認証の代替システムにフォールバックする必要があります。
開発中は、アドインは Outlook でサイドロードされ、getAccessToken
への呼び出しで forMSGraphAccess
オプションが渡されます。
13013
は getAccessToken
短時間で何度も呼び出されたため、Office は最新の呼び出しを調整しました。 これは通常、 メソッドの呼び出しの無限ループによって発生します。 メソッドを呼び出すシナリオが推奨されます。 ただし、コードではカウンター変数またはフラグ変数を使用して、メソッドが繰り返し呼び出されないようにする必要があります。 同じ "再試行" コード パスが再度実行されている場合、コードは別のユーザー認証システムにフォールバックする必要があります。 コード例については、変数が retryGetAccessToken
HomeES6.js または ssoAuthES6.js でどのように使用されるかを参照してください。
50001
このエラー (固有ではない getAccessToken
) は、ブラウザーが office.js ファイルの古いコピーをキャッシュしたことを示している可能性があります。 開発中は、ブラウザーのキャッシュをクリアします。 もう 1 つの可能性は、Office のバージョンが SSO をサポートするのに十分な最近のバージョンではないということです。 Windows では、最小バージョンはバージョン 1911 (ビルド 12215.20006) です。 Mac では、バージョン 16.32 (19102902) です。
運用環境のアドインの場合、アドインがこのエラーに対応するには、ユーザー認証の代替システムにフォールバックする必要があります。 詳細については、「要件とベスト プラクティス」を参照してください。
Azure Active Directory からのサーバー側のエラー
このセクションで説明するエラー処理の例については、次を参照してください。
条件付きアクセスおよび多要素認証のエラー
AAD と Microsoft 365 の ID の特定の構成では、ユーザーの Microsoft 365 テナントがアクセスしない場合でも、Microsoft Graph でアクセスできる一部のリソースで多要素認証 (MFA) が必要になる可能性があります。 AAD は、MFA で保護されたリソースへのトークンの要求を、代理フロー経由で受け取ると、アドインの Web サービスに claims
プロパティを含む JSON メッセージを返します。 claims プロパティには、さらに必要となる認証要素の情報が含まれています。
コードは、この claims
プロパティについてテストする必要があります。 アドインのアーキテクチャによっては、クライアント側でテストすることができます。または、サーバー側でテストし、クライアントにリレーすることができます。 SSO アドインの認証は Office によって処理されるため、この情報がクライアントで必要になります。この情報をサーバー側からリレーする場合、クライアントへのメッセージは、エラー (500 Server Error
や 401 Unauthorized
など) または成功応答の本文 (200 OK
など) のいずれかになります。 どちらの場合でも、アドインの Web API に対する、コードによるクライアント側の AJAX 呼び出しのコールバック (失敗または成功) が、この応答をテストする必要があります。
アーキテクチャに関係なく、要求の値が AAD から送信された場合は、コードを呼び出 getAccessToken
して、 パラメーターに オプション authChallenge: CLAIMS-STRING-HERE
を options
渡す必要があります。 AAD はこの文字列を見ると、ユーザーに追加の要素を求め、代わりにフローで受け入れられる新しいアクセス トークンを返します。
同意なしエラー
AAD に、ユーザー (またはテナント管理者) がアドインに (Microsoft Graph リソースに対して) 同意した記録がない場合、AAD はエラー メッセージを Web サービスに送信します。 コードは、 (403 Forbidden
応答の本文などで) クライアントに指示する必要があります。
管理者のみが同意できる Microsoft Graph のスコープがアドインで必要な場合は、コードはエラーをスローする必要があります。 唯一必要なスコープに対して同意できるのがユーザーである場合は、コードはユーザー認証の代替システムにフォールバックする必要があります。
無効または見つからないスコープ (アクセス許可) のエラー
この種類のエラーが表示されるのは、開発中のみである必要があります。
- サーバー側のコードでは、
403 Forbidden
応答をクライアントに送り、そのエラーのログをコンソールで作成するか、ログに記録する必要があります。 - アドイン マニフェストの範囲セクションで、必要なすべてのアクセス許可が指定されていることを確認してください。 また、アドインの Web サービスの登録で同じアクセス許可が指定されていることを確認してください。 スペルミスもチェックしてください。 詳細については、「シングル サインオン (SSO) を使用する Office アドインをMicrosoft ID プラットフォームに登録する」を参照してください。
Microsoft Graph のアクセス トークンの対象ユーザーエラーが無効です
サーバー側のコードは、403 Forbidden
応答をクライアントに送って、ユーザーにわかりやすいメッセージを提示しなければなりません。場合によっては、エラーについて、コンソールでログを作成するか、ログに記録する必要もあります。
Office Add-ins