Office アドインとシングル サインオン用 Azure AD アプリケーション

完了

必要なMicrosoft Entra アプリケーションを登録するための ASP.NET または Node.js 含まれるユーティリティを使用して Office アドインを作成するために Microsoft によって提供される開発者ツール。 このツール、つまり configure-sso を使用すると、アプリ登録だけでなく開発者ワークステーションの構成も簡単にできます。

このユニットでは、シングル サインオン (SSO) を実装する Office アドインのMicrosoft Entra アプリ登録を作成する方法について説明します。 シングル サインオンを実装する Office アドインを作成する場合に、Microsoft が推奨するベスト プラクティスもいくつか紹介します。

Office アドイン SSO 用のMicrosoft Entra アプリケーションを登録する

SSO を実装する Office アドインで使用されるMicrosoft Entra アプリケーションを登録するための要件を見てみましょう。

アプリケーションの登録Microsoft Entra

最初の手順は、Microsoft Entra管理センター (https://aad.portal.azure.com)) でMicrosoft Entra アプリケーションを登録することです。

アプリを登録するときは、サポートされているアカウントの種類を任意の組織ディレクトリ (Any Microsoft Entra directory - Multitenant) アプリケーションのアカウントに設定します。

重要

Office アドイン アプリはシングル テナントにできません。マルチテナントである必要があります。

認証

次の手順では、アプリへの認証設定を構成します。

アプリには少なくとも 2 つの リダイレクト URL をリストに入れる必要がありました。

  • 作業ウィンドウの HTML ページの URL などのアドイン ページ
  • fallbackauthdialog.html ページなどの代替ページ

Office アドインは通常クライアント側のアプリなので、暗黙付与フローとハイブリッド フロー の両方を有効にしている必要があります。

  • アクセス トークン (暗黙的フローに使用)
  • ID トークン (暗黙的フローとハイブリッド フローに使用)

アプリの認証設定のスクリーンショット。

API アクセス許可

Microsoft Entra アプリのもう 1 つの重要な部分は、機能するために必要なアクセス許可です。

すべてのアプリは OpenID アクセス許可の openidprofileが付与されている必要があります。 ライブラリによっては、追加のアクセス許可が必要です。 たとえば、.NET 用の Microsoft 認証ライブラリには、office_access のアクセス許可が必要です。

アドインに Microsoft Graph のアクセス許可が必要な場合は、ここでも追加する必要があります。

必須ではありませんが、アプリを登録する際に前もって管理者としてテナント内のすべてのユーザーのアクセス許可に同意できます。 これにより認証フローが簡単になり、ユーザーが初回に使用する場合アドインに同意する必要がなくなります。

追加されたアクセス許可のスクリーンショット。

API を公開する

アプリは、MICROSOFT ENTRA ID と Office クライアントに独自のアクセス許可を公開する必要があります。 [ API の公開 ] 画面で、 アプリケーション ID URI を設定します。 既定では api://<APP_ID> ですが、アドイン コードベースがホストされているドメインを含めるには、これを更新する必要があります。

URI. の <APP_ID> 部分の前に、この URL を含めます。 例: api://addin.contoso.com/<APP_UD>。 このドメインは、アドインの manifest.xml 定義されているリソースが提供されているドメインと一致している必要があります。

次の手順では、scope とも呼ばれているアクセス許可を公開します。 このスコープ、つまり access_as_user は、Office クライアントによって使用されます。OAuth2 フローの代わりに開始して Microsoft Graph へブートストラップ トークンを入力する場合、サインインしているユーザーに代わって操作ができることを意味します。

最後に、このアクセス許可をすべての Office クライアント アプリに付与してください。 これにより、すべての Office クライアント アプリケーションを信頼するアプリケーションを構成して、access_as_user アクセス許可を取得できます。

各 Office クライアントの種類は、一意の ID で表されます。 次のアプリケーションを必ず含めます。 これを行う場合は、必ず access_as_user アクセス許可を有効にしてください。

  • ea5a67f6-b6f3-4338-b240-c655ddc3cc8e (Microsoft Office)

アドイン API にアクセスできる ID と承認されたクライアントを示すスクリーンショット。

重要

このサービス ea5a67f6-b6f3-4338-b240-c655ddc3cc8e は、他のすべての Office ホストを含むグループ承認であるため、次の個々のアプリケーションを一覧表示するのではなく、これを含めることができます。

  • d3590ed6-52b3-4102-aeff-aad2292ab01c (Microsoft Office)
  • 57fb890c-0dab-4253-a5e0-7188c88b2bb4 (Office on the web)
  • 08e18876-6177-487e-b8b5-cf950c1e598c (Office on the web)
  • bc59ab01-8403-45c6-8796-ac3ef710b3e3 (Outlook on the web)
  • 93d53678-613d-4013-afc1-62e9e444a0a5 (Office on the web)

一覧の最後のサービス、93d53678-613d-4013-afc1-62e9e444a0a5 は、 2022 年 1 月に導入された新しい SSO サービスです。

Office アドイン SSO 開発のベスト プラクティス

Microsoft では、SSO を実装する Office アドインを作成する場合次の方法をお勧めしています。

ユーザーのプロファイルだけが必要な場合は、allowConsentPrompt を使用します。

Office アドインが SSO を使用してだけでしかユーザー プロファイルを取得できない場合もあります。 そのような場合は、Office.js SDK で getAccessToken() を呼び出す際に { allowConsentPrompt: true } オプションを渡して、サインイン プロセスの既定動作を上書きする方法を検討します。

このプロパティの既定値は、false です。 このプロパティで Office でアクセス トークンをサイレント取得したり、必要な場合には対話型の同意を通じて取得したりできます。 プロパティを falseに設定すると、ユーザーが同意しないので Office でトークンを取得できず、エラーで説明が表示されます。

ただし、プロパティを trueに設定すると、Office でアクセス トークンをサイレント取得できず、対話型の同意のメッセージが表示されます。

重要

Office では OpenID profile アクセス許可へ同意するように求めることだけでき、任意の Microsoft Graph のアクセス許可への同意は求めないということを覚えておきましょう。

代替の承認方法を実装する

Office アドインを使用した認証、承認方法は常に成功するとは限りません。 このモジュールで説明したように、承認プロセスでアドインが失敗するシナリオは複数あります。

これには、アドインを必要とする Microsoft Graph のアクセス許可にユーザーが同意していない場合のシナリオも含まれます。 そのような場合は、アドインで Fail Fast して、ユーザーに必要なアクセス許可のメッセージを早い段階で表示する方が得策です。 これは、プロセスの終わりまで待ってユーザーに通知するよりも優れている方法です。

認証に "Fail Fast" アプローチを実装

前のセクションを繰り返して、前のレッスンで学んだことを思い出してください。 Office で初回のブートストラップ トークンが要求される場合には、Office.js SDK で getAccessToken() を呼び出す際の { forGraphAccess: true } 認証オプションが含まれます。

Microsoft Entra ID はこれを受け取ると、別のチェックを実行して、ユーザーが要求された Microsoft Graph のアクセス許可に既に同意しているかどうかを確認します。 そうでない場合、Microsoft Entra ID は、ユーザーに Microsoft Graph のアクセス許可への同意を求めるために、フォールバック承認システムでアドインが処理できる特定のエラー コードで応答します。

アドインを使用してすべての Office クライアントを事前に承認する

このユニットに示すように、Office アドインが使用するMicrosoft Entraアプリケーション登録を事前に承認して、すべての Office クライアント アプリを信頼できます。 これには、すべてのデスクトップ、モバイル、Web Office クライアントが含まれます。

こうすることで、アドインが最大数のシナリオで必ず動作するようになります。