シングル サインオン (SSO) のエラー メッセージのトラブルシューティング (プレビュー)Troubleshoot error messages for single sign-on (SSO) (preview)

この記事では、Office アドインのシングル サインオン (SSO) に関する問題のトラブルシューティング方法と、SSO が有効なアドインによって特別な条件やエラーを確実に処理する方法について説明します。This article provides some guidance about how to troubleshoot problems with single sign-on (SSO) in Office Add-ins, and how to make your SSO-enabled add-in robustly handle special conditions or errors.

注意

現在、シングル サインオン API は Word、Excel、Outlook、PowerPoint のプレビューでサポートされています。The Single Sign-on API is currently supported in preview for Word, Excel, Outlook, and PowerPoint. シングル サインオン API の現在のサポート状態に関する詳細は、「IdentityAPI の要件セット」https://docs.microsoft.com/javascript/office/requirement-sets/identity-api-requirement-sets)をご覧ください。For more information about where the Single Sign-on API is currently supported, see https://docs.microsoft.com/javascript/office/requirement-sets/identity-api-requirement-sets). SSO を使用するには、アドインの HTML 起動ページの https://appsforoffice.microsoft.com/lib/beta/hosted/office.js からベータ版 Office の JavaScript ライブラリを読み込む必要があります。To use SSO, you must load the beta version of the Office JavaScript Library from https://appsforoffice.microsoft.com/lib/beta/hosted/office.js in the startup HTML page of the add-in. Outlook アドインで作業している場合は、Office 365 テナントの先進認証が有効になっていることを確認してください。If you are working with an Outlook add-in, be sure to enable Modern Authentication for the Office 365 tenancy. この方法の詳細については、「Exchange Online: テナントの先進認証を有効にする方法」を参照してください。For information about how to do this, see Exchange Online: How to enable your tenant for modern authentication.

デバッグツールDebugging tools

開発時は、アドインの Web サービスからの HTTP 要求および応答を傍受して表示することができるツールを使用することを強くお勧めします。最も一般的なものは、次の 2 つです。We strongly recommend that you use a tool that can intercept and display the HTTP Requests from, and Responses to, your add-in's web service when you are developing. Two of the most popular are:

サービス API を開発する際には、次のツールを試してみることもできます。When developing your service API, you may also want to try:

getAccessTokenAsync からのエラーの原因と処理Causes and handling of errors from getAccessTokenAsync

このセクションで説明するエラー処理の例については、次を参照してください。For examples of the error handling described in this section, see:

注意

このセクションでの提案に加えて、Outlook アドインには、どのような 13nnn エラーにも応答する追加の機能があります。Besides the suggestions made in this section, an Outlook add-in has an additional way to respond to any 13nnn error. 詳細については、「 シナリオ: Outlook アドインでサービスにシングル サインオンを実装する」 および「AtachmentDemo サンプル アドイン」を参照してください。For more details, see Scenario: Implement single sign-on to your service in an Outlook Add-in.

13000Default: 13000

getAccessTokenAsync API は、このアドインまたは Office バージョンではサポートされていません。The getAccessTokenAsync API is not supported by the add-in or the Office version.

  • このバージョンの Office は、SSO をサポートしていません。所要のバージョンは Office 2016 バージョン 1710、ビルド 8629.nnnn 以降 (「クイック実行」と呼ばれることもある Office 365 のサブスクリプション バージョン) です。このバージョンを入手するには、Office Insider への参加が必要になることがあります。詳細については、「Office Insider」を参照してください。The version of Office does not support SSO. The required version is Office 2016, Version 1710, build 8629.nnnn or later (the Office 365 subscription version, sometimes called “Click to Run”). You might need to be an Office Insider to get this version. For more information, see Be an Office Insider.
  • アドインのマニフェストに適切な WebApplicationInfo セクションがありません。The add-in manifest is missing the proper WebApplicationInfo section.

1300113001

ユーザーは Office にサインインしていません。The user is not signed into Office. コードでは、getAccessTokenAsync メソッドを再度呼び出して、options パラメーターでオプション forceAddAccount: true を渡す必要があります。Your code should recall the getAccessTokenAsync method and pass the option forceAddAccount: true in the options parameter. しかし、これを一回以上実行しないでください。But don't do this more than once. ユーザーがサインインしないと決定した可能性があります。The user may have decided not to sign-in.

Office Online では、このエラーが発生することはありません。This error is never seen in Office Online. ユーザーの Cookie が失効している場合、Office Online はエラー 13006 を返します。If the user's cookie expires, Office Online returns error 13006.

1300213002

ユーザーはサインインまたは同意を中止しました。(コンセント ダイアログで Cancel を選択した場合など)The user aborted sign in or consent; for example, by choosing Cancel on the consent dialog.

  • アドインがユーザーのサインイン (または同意) の必要がない機能を提供している場合、コードはこのエラーをキャッチし、アドインが継続して実行するようにしなければなりません。If your add-in provides functions that don't require the user to be signed in (or to have granted consent), then your code should catch this error and allow the add-in to stay running.
  • アドインで、同意を得たサインイン ユーザーが必要な場合、コードはユーザーに操作を繰り返すよう 1 度だけ要求する必要があります。If the add-in requires a signed-in user who has granted consent, your code should ask the user to repeat the operation, but not more than once.

1300313003

ユーザーの種類がサポートされていません。User Type not supported. ユーザーは、有効な Microsoft アカウント、職場または学校のアカウントで Office にサインインしていません。The user isn't signed into Office with a valid Microsoft Account or Work or School account. このエラーは、Office がオンプレミス ドメイン アカウントで実行されている場合に発生する可能性があります。This may happen if Office runs with an on-premises domain account, for example. コードは、ユーザーに Office にサインインするよう要求する必要があります。Your code should ask the user to sign in to Office.

1300413004

無効なリソースです。Invalid Resource. アドイン マニフェストは、正しく構成されていません。The add-in manifest hasn’t been configured correctly. マニフェストを更新してください。Update the manifest. 詳細は、「マニフェストの問題を検証し、トラブルシューティングする」を参照してください。For more information, see Validate and troubleshoot issues with your manifest. 最も一般的な問題は、 Resource 要素( WebApplicationInfo 要素の中にあるもの)に、アドインのドメインと一致しないドメインがあることです。The most commmon problem is that the Resource element (in the WebApplicationInfo element) has a domain that does not match the domain of the add-in. リソース値のプロトコルの部分は、"https" ではなく "api" である必要がありますが、ドメイン名 (もしあれば、ポートを含む) の他のすべての部分は、アドインの場合と同じにする必要があります。Although the protocol part of the Resource value should be "api" not "https"; all other parts of the domain name (including port, if any) should be the same as for the add-in.

1300513005

無効な許可です。Invalid Grant. このエラーは、通常、Office がアドインの Web サービスに対して事前に承認されていないことを意味します。This usually means that Office has not been pre-authorized to the add-in's web service. 詳細については、「サービス アプリケーションを作成する」、および「Azure AD V2.0 エンドポイントにアドインを登録する」(ASP.NET) または「Azure AD V2.0 エンドポイントにアドインを登録する」(Node JS) を参照してください。For more information, see Create the service application and Register the add-in with Azure AD v2.0 endpoint (ASP.NET) or Register the add-in with Azure AD v2.0 endpoint (Node JS). このエラーは、ユーザーが profile にサービス アプリケーションのアクセス許可を与えていない場合にも発生する可能性があります。This also may happen if the user has not granted your service application permissions to his or her profile.

1300613006

クライアント エラー。コードでは、ユーザーにサインアウトしてから Office を再起動するように指示するか、Office Online セッションを再開する必要があります。Client Error. Your code should suggest that the user sign out and restart Office, or restart the Office Online session.

1300713007

Office ホストは、アドインの Web サービスへのアクセス トークンを取得できませんでした。The Office host was unable to get an access token to the add-in's web service.

  • 開発中にこのエラーが発生した場合は、アドインの登録とアドインマニフェストが、 openid および profile のアクセス許可を指定していることを確認してください。If this error occurs during development, be sure that your add-in registration and add-in manifest specify the openid and profile permissions. 詳細については、「Azure AD V2.0 エンドポイントにアドインを登録する」(ASP.NET) または「Azure AD V2.0 エンドポイントにアドインを登録する」(Node JS)、および「アドインを構成する」(ASP.NET) または「アドインを構成する」(Node JS) を参照してください。For more information, see Register the add-in with Azure AD v2.0 endpoint (ASP.NET) or Register the add-in with Azure AD v2.0 endpoint (Node JS), and Configure the add-in (ASP.NET) or Configure the add-in (Node JS).
  • 運用環境では、このエラーの原因となることがいくつかあります。In production, there are several things that can cause this error. 以下はその中のいくつかの例です。Some of them are:

    • ユーザーは、事前に同意し、のちにその同意を取り消しました。The user has revoked consent, after previously granting it. コードは getAccessTokenAsync オプション付きのメソッド forceConsent: true を再び呼び出す必要があります。しかし、1 度のみです。Your code should recall the getAccessTokenAsync method with the option forceConsent: true, but no more than once.
    • ユーザーは、Microsoft Account (MSA) ID を持っています。The user is has an Microsoft Account (MSA) identity. 職場または学校のアカウントで、他の13nnnエラーの1つが発生する状況によっては、MSAを使用した場合に13007が発生することがあります。Some situations that would cause one of the other 13nnn errors with a Work or School account, will cause a 13007 when a MSA is used.

    これらすべてのケースについて、すでに forceConsent オプションを試行した場合には、ユーザーがのちに操作を再試行することをコードで示唆することができます。For all of these cases, if you have already tried the forceConsent option once, then your code could suggest that the user retry the operation later.

1300813008

ユーザーは、前回の getAccessTokenAsync の呼び出しが完了する前に getAccessTokenAsync を呼び出す操作をトリガーしました。The user triggered an operation that calls getAccessTokenAsync before a previous call of getAccessTokenAsync completed. コードでは、ユーザーに前の操作が完了した後に操作を繰り返すよう、要求する必要があります。Your code should ask the user to repeat the operation after the previous operation has completed.

1300913009

アドインは、オプション forceConsent: true を指定して getAccessTokenAsync メソッドを呼び出しましたが、アドインのマニフェストが強制的な同意をサポートしていない種類のカタログに展開されています。The add-in called the getAccessTokenAsync method with the option forceConsent: true, but the add-in's manifest is deployed to a type of catalog that does not support forcing consent. コードでは、getAccessTokenAsync メソッドを再度呼び出して、options パラメーターでオプション forceConsent: false を渡す必要があります。Your code should recall the getAccessTokenAsync method and pass the option forceConsent: false in the options parameter. ただし、forceConsent: true を指定した getAccessTokenAsync の呼び出し自体が、forceConsent: false を指定した getAccessTokenAsync の失敗した呼び出しに対する自動的な応答の可能性があるため、コードでは、forceConsent: false を指定した getAccessTokenAsync が既に呼び出されているかどうかを追跡記録する必要があります。However, the call of getAccessTokenAsync with forceConsent: true might itself have been an automatic response to a failed call of getAccessTokenAsync with forceConsent: false, so your code should keep track of whether getAccessTokenAsync with forceConsent: false has already been called. 既に呼び出されていた場合、コードでは、ユーザーに Office からサインアウトして、再度サインインするように求める必要があります。If it has, your code should tell the user to sign out of Office and sign-in again.

注意

Microsoft は、必ずしもすべての種類のアドイン カタログに、この制約を課す予定はありません。Microsoft will not necessarilly impose this restriction on any types of add-in catalogs. 制約が課されなかった場合、このエラーが発生することはなくなります。If it doesn't, then this error will never be seen.

1301013010

ユーザーが Office Online でアドインを実行していて、Edge または Internet Explorer を使用しています。The user is running the add-in on Office Online and is using Edge or Internet Explorer. ユーザーの Office 365 ドメインと、login.microsoftonline.com ドメインは、ブラウザー設定で異なるセキュリティ ゾーンに含まれています。The user’s Office 365 domain, and the login.microsoftonline.com domain, are in a different security zones in the browser settings. このエラーが返された場合、ユーザーには、これについて説明するエラーとゾーンの構成を変更する方法に関するページへのリンクが表示されています。If this error is returned, the user will have already seen an error explaining this and linking to a page about how to change the zone configuration. アドインがユーザーのサインインを必要としない機能を提供している場合、コードでは、このエラーをキャッチして、アドインの実行を続行する必要があります。If your add-in provides functions that don't require the user to be signed in, then your code should catch this error and allow the add-in to stay running.

5000150001

このエラー(getAccessTokenAsync 特有のものではありません)は、ブラウザが office.js ファイルの古いコピーをキャッシュしたことを示している可能性があります。This error (which is not specific to getAccessTokenAsync) may indicate that the browser has cashed an old copy of the office.js files. ブラウザのキャッシュをクリアしてください。Clear the Office cache もう 1 つの可能性は、Office のバージョンが SSO をサポートできる新しいものでないということです。Another possibility is that the version of Office is not recent enough to support SSO. Prerequisites を参照してください。See Prerequisites.

Azure Active Directory からのサーバー側のエラーErrors on the server-side from Azure Active Directory

このセクションで説明するエラー処理の例については、次を参照してください。For samples of the error-handling described in this section, see:

条件付きアクセスおよび多要素認証のエラーConditional access / Multifactor authentication errors

AAD および Office 365 の特定の ID 構成では、Microsoft Graph でアクセス可能な一部のリソースで、ユーザーの Office 365 のテナントでは必要ない場合でも、多要素認証 (MFA) が必要な場合があります。In certain configurations of identity in AAD and Office 365, it is possible for some resources that are accessible with Microsoft Graph to require multifactor authentication (MFA), even when the user's Office 365 tenancy does not. AAD は、MFA で保護されたリソースへのトークンの要求を、代理フロー経由で受け取ると、アドインの Web サービスに claims プロパティを含む JSON メッセージを返します。When AAD receives a request for a token to the MFA-protected resource, via the on-behalf-of flow, it returns to your add-in's web service a JSON message that contains a claims property. claims プロパティには、さらに必要となる認証要素の情報が含まれています。The claims property has information about what further authentication factors are needed.

サーバー側のコードはこのメッセージをテストし、クライアント側のコードに claims 値を中継する必要があります。Your server-side code should test for this message and relay the claims value to your client-side code. Office が SSO アドインの認証を処理するため、この情報がクライアントで必要になります。クライアントへのメッセージは、エラー (500 Server Error401 Unauthorized など) または成功応答の本文 (200 OK など) のいずれかになります。You need this information in the client because Office handles authentication for SSO add-ins. The message to the client can be either an error (such as 500 Server Error or 401 Unauthorized) or in the body of a success response (such as 200 OK). どちらの場合でも、アドインの Web API に対する、コードによるクライアント側の AJAX 呼び出しのコールバック (失敗または成功) が、この応答をテストする必要があります。In either case, the (failure or success) callback of your code's client-side AJAX call to your add-in's web API should test for this response. claims 値が中継されている場合、コードは getAccessTokenAsync を再呼び出しして options パラメーターのオプション authChallenge: CLAIMS-STRING-HERE を渡す必要があります。If the claims value has been relayed, your code should recall getAccessTokenAsync and pass the option authChallenge: CLAIMS-STRING-HERE in the options parameter. AAD がこの文字列を認識すると、ユーザーに追加の要素を入力するよう促してから、代理フローで受け入れられる新しいアクセス トークンを返します。When AAD sees this string, it prompts the user for the additional factor(s) and then returns a new access token which will be accepted in the on-behalf-of flow.

AAD に、ユーザー (またはテナント管理者) がアドインに (Microsoft Graph リソースに対して) 同意した記録がない場合、AAD はエラー メッセージを Web サービスに送信します。If AAD has no record that consent (to the Microsoft Graph resource) was granted to the add-in by the user (or tenant administrator), AAD will send an error message to your web service. コードは、forceConsent: true オプションで getAccessTokenAsync を再呼び出しするよう、(403 Forbidden 応答の本文などで) クライアントに指示する必要があります。Your code must tell the client (in the body of a 403 Forbidden response, for example) to recall getAccessTokenAsync with the forceConsent: true option.

無効または不足した範囲 (アクセス許可) のエラーInvalid or missing scope (permission) errors

Microsoft Graph 呼び出し時の期限切れまたは無効なトークンのエラーExpired or invalid token errors when calling Microsoft Graph

MSAL を含む一部の認証および承認ライブラリは、必要に応じてキャッシュされた更新トークンを使用することにより、期限切れトークンのエラーが発生しないようにします。Some authentication and authorization libraries, including MSAL, prevent expired token errors by using a cached refresh token whenever necessary. 独自のトークン キャッシュ システムをコーディングすることもできます。You can also code your own token caching system. コーディングを行うサンプルについては、Office Add-in NodeJS SSO、特にファイル auth.ts を参照してください。For a sample that does this, see Office Add-in NodeJS SSO, especially the file auth.ts.

しかし、期限切れトークンや無効なトークンのエラーが発生した場合、コードは getAccessTokenAsync を再呼び出しして、アドインの Web API のエンドポイントへの呼び出しを繰り返すよう、(401 Unauthorized 応答の本文などで) クライアントに指示しなければなりません。つまり、Microsoft Graph に対する新しいトークンを取得する代理フローを繰り返します。But if you get an expired token or invalid token error, your code must tell the client (in the body of a 401 Unauthorized response, for example) to recall getAccessTokenAsync and repeat the call to the endpoint of your add-in's web API, which will repeat the on-behalf-of flow to obtain a new token for Microsoft Graph.

Microsoft Graph 呼び出し時の無効なトークンのエラーInvalid token error when calling Microsoft Graph

このエラーは、期限切れトークンのエラーと同様に処理します。前のセクションを参照してください。Handle this error the same as an expired token error. See previous section.

無効な対象ユーザーのエラーInvalid audience error

サーバー側のコードは、403 Forbidden 応答をクライアントに送って、ユーザーにわかりやすいメッセージを提示しなければなりません。場合によっては、エラーについて、コンソールでログを作成するか、ログに記録する必要もあります。Your server-side code should send a 403 Forbidden response to the client which should present a friendly message to the user and possibly also log the error to the console or record it in a log.

トークン検証のためのマルチテナント サポートの追加の詳細については、Azure マルチテナント サンプルに関する記事をご覧ください。For more on adding multitenant support for token validation, see the Azure Multitenant Sample.