Azure Active Directory ID を独自の ID プロバイダーとリンクする (プレビュー)

重要

グローバル スコープを持つ新しいアクション可能メッセージ プロバイダーのオンボードは、サービスのアップグレードにより、2024 年 6 月 30 日まで一時的に一時停止されます。 既存 のグローバル スコープ プロバイダーと 組織 および テスト スコープ プロバイダーのオンボードは影響を受けません。 詳細については、「 アクション可能なメッセージについてよく寄せられる質問」を参照してください。

アクション可能メッセージの Action.Http アクションには、ユーザーの ID に関する情報をAuthorization提供する Azure AD 発行のトークンがヘッダーに含まれています。 ただし、この情報では、サービスに対するユーザーの認証には十分でない場合があります。 ID リンクを使用すると、ユーザーがサービスで認証できるように、Outlook クライアントに UI を提示するように通知できます。 ユーザーが認証したら、Azure AD ID を独自の ID に関連付けて、将来の要求に対するシームレスな認証を可能にすることができます。

ID リンクの使用

サービスは、ヘッダーを含む応答を返すことによって、任意 Action.Http401 Unauthorized アクション エンドポイントで認証を ACTION-AUTHENTICATE トリガーできます。 ヘッダーには、サービスの認証 URL が含まれています。

認証が完了したら、元の要求で送信されたヘッダーで Identity-Linking-Redirect-Url 指定された URL に要求をリダイレクトします。

ID リンク フロー

アクション エンドポイントへの初期要求

Microsoft サーバーは、最初の POST 要求をアクション エンドポイントに送信します。

POST https://api.contoso.com/myEndpoint
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6...
Identity-Linking-Redirect-Url: https://outlook.office.com/connectors/adelev@contoso.com/723a1c49-f8dc-4063-843e-d4c2b7180b8b/postAuthenticate
Content-Type: application/json

{
  // action body
}

サービス は JWT トークンを検証 し、要求から sub ユーザーの ID を抽出します。

{
  ...
  "sub": "AdeleV@contoso.com",
  "aud": "https://api.contoso.com"
}

サービスでは、 のリンクされた ID を AdeleV@contoso.com 持つユーザーが見つからないため、ヘッダー値が Identity-Linking-Redirect-Url 保持され、応答が 401 返されます。

注:

ヘッダーからの Identity-Linking-Redirect-Url リダイレクト URL を保持するために使用する正確なメソッドは、実装によって異なります。 サービスで OAuth を使用する場合は、たとえば、 パラメーターに state 保存できます。

HTTP/1.1 401 Unauthorized
ACTION-AUTHENTICATE: https://identity.contoso.com/authenticate?state=https://outlook.office.com/connectors/adelev@contoso.com/723a1c49-f8dc-4063-843e-d4c2b7180b8b/postAuthenticate

認証要求

Outlook が ヘッダーと共に を401ACTION-AUTHENTICATE受け取ると、作業ウィンドウが開き、ヘッダーから URL に移動します。

GET https://identity.contoso.com/authenticate?state=https://outlook.office.com/connectors/adelev@contoso.com/723a1c49-f8dc-4063-843e-d4c2b7180b8b/postAuthenticate

サービスはユーザーを認証し、Azure AD によって発行されたトークンによって提供された ID をシステム内のユーザーに関連付けます。 完了すると、サービスはヘッダーから URL に要求を Identity-Linking-Redirect-Url リダイレクトします。

HTTP/1.1 302 Found
Location: https://outlook.office.com/connectors/adelev@contoso.com/723a1c49-f8dc-4063-843e-d4c2b7180b8b/postAuthenticate

再試行アクション

Outlook が認証サーバーからリダイレクトを受信すると、元の要求が直ちに再試行されます。 今回は、Azure AD ID を独自の ID に関連付けられているため、エンドポイントは要求を正常に処理します。

[アクション可能メッセージ] Designerの次のサンプル カードを使用して、この動作を確認できます。 このカードのエンドポイントは、Microsoft ID プラットフォームにログインするように求め、(同意を得て) プロファイルを取得するための Graph 要求を行います。 このエンドポイントのコードは、 GitHub のサンプルとして使用できます。

{
  "hideOriginalBody": true,
  "type": "AdaptiveCard",
  "padding": "none",
  "body": [
    {
      "type": "TextBlock",
      "text": "Identity Linking Demo"
    },
    {
      "type": "ActionSet",
      "actions": [
        {
          "type": "Action.Http",
          "method": "POST",
          "url": "https://amidentitylinking.azurewebsites.net/action",
          "body": "{}",
          "title": "Get User Details",
          "isPrimary": true
        }
      ]
    }
  ],
  "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
  "version": "1.0"
}

クライアント サポート ロードマップ

ID リンクは、今後追加される機能をサポートして、限られたクライアント セットで使用できます。 次の表に、おおよそのタイムラインを示します。

クライアント Availability
Office 365 ProPlus 使用可能
Office 365 の Outlook on the web 近日対応予定
Outlook on iOS 近日対応予定
Outlook on Android 近日対応予定
Outlook on Mac TBD

リソース