View a markdown version of this page

OneDrive の OAuth 2.0 認証を設定する - Amazon Bedrock

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

OneDrive の OAuth 2.0 認証を設定する

OAuth 2.0 認証 (OAUTH2) は、アプリケーションクライアント ID とシークレットを委任された更新トークンとともに認証します。コネクタは、更新トークンを使用して、サインインユーザーの委任コンテキスト内のコンテンツをクロールするアクセストークンを取得します。データソースは、ユーザーがアクセスできる OneDrive コンテンツ、つまり自分のドライブ、共有されているドライブ、または SharePoint 管理者アクセス権があるドライブを対象としています。サインインしたユーザーがアクセスできないドライブは、サイレントにスキップされます。

重要

ほとんどのデータソースOneDrive の Microsoft Entra App ID 認証を設定するに をお勧めします。OAuth 2.0 認証には以下の制限があります。

  • サインインしたユーザーがアクセスできる OneDrive コンテンツ (自分のドライブ、共有されているドライブ、または SharePoint 管理者アクセス権があるドライブ) のみをクロールします。ユーザーがアクセスできないドライブは、サイレントにスキップされます。テナント内のすべてのユーザーの OneDrive を均一にクロールするには、Microsoft Entra App ID 認証を使用します。

  • これには、1 回限りのユーザーサインイン (ステップ 4) を通じて取得する更新トークンが必要です。

  • 更新トークンの Microsoft 側の有効期間は限られています。更新トークンの有効期限が切れるか取り消されると、新しいトークンを取得してシークレットを更新するまで同期は失敗します。

  • ドキュメントレベルのアクセスコントロール (ACLs) はサポートされていません。ユーザーアクセス許可でクエリ結果をフィルタリングするには、Microsoft Entra App ID 認証を使用します。

前提条件

  • Microsoft Entra ID 管理者は、アプリケーションを登録し、管理者の同意を付与し、クライアントシークレットを作成します。

  • クロールする OneDrive コンテンツにアクセスできる Microsoft 365 ユーザーアカウント。更新トークンを取得するには、このユーザーとして 1 回サインインします。

  • Microsoft 365 のテナント ID。

ステップ 1: Microsoft Entra ID にアプリケーションを登録する

  1. Microsoft Entra 管理センターにサインインします。

  2. 左側のナビゲーションで、Entra ID を展開し、アプリ登録を選択します。

  3. [New registration] (新規登録) を選択します。

  4. Name には、 などのわかりやすい名前を入力しますbedrock-onedrive-oauth2

  5. サポートされるアカウントタイプでは、この組織ディレクトリのアカウントのみ (単一テナント) を選択します。

  6. リダイレクト URI で、プラットフォームとして Web を選択し、 と入力しますhttp://localhost:53672/callback。このリダイレクト URI は、ステップ 4 で更新トークンを取得するときに使用します。任意の無料の localhost ポートを使用できます。ここでポートを変更する場合は、ステップ 4 で同じポートを使用します。

  7. [登録] を選択します。

  8. アプリケーションの概要ページで、アプリケーション (クライアント) IDディレクトリ (テナント) ID を記録します。

ステップ 2: API アクセス許可を追加し、管理者の同意を付与する

OAuth 2.0 認証は委任されたサインインを使用するため、アプリケーションにはアプリケーションのアクセス許可ではなく、委任されたアクセス許可が必要です。

  1. アプリ登録で API アクセス許可を選択し、アクセス許可を追加します

  2. Microsoft Graph を選択し、次に委任されたアクセス許可を選択します。

  3. 次の委任されたアクセス許可を選択し、アクセス許可の追加を選択します。

    • Files.Read.All — ユーザーがアクセスできるファイルを読み取ります。

    • Sites.Read.All — ユーザーがアクセスできる OneDrive サイトを読みます。

    • User.Read.All — ユーザーを識別します。

    • offline_access — サインインが更新トークンを返すために必要です。

  4. API アクセス許可ページで、[組織] に対する管理者の同意を付与を選択し、確認します。

ステップ 3: クライアントシークレットを作成する

  1. アプリ登録で、証明書とシークレットクライアントシークレット、新しいクライアントシークレットを選択します。

  2. 説明を入力し、有効期限を選択し、追加を選択します。

  3. シークレット をすぐに記録します。1 回だけ表示されます。シークレット ID ではなく、 を記録します。

ステップ 4: 更新トークンを取得する

コネクタには、1 回限りのユーザーサインインを通じて取得する更新トークンが必要です。以下の手順では、多要素認証 (MFA) を使用するユーザーに対して機能する localhost リダイレクトで OAuth 2.0 認可コードフローを使用します。MFA 以外のサービスアカウントの場合、最後により簡単な代替手段が提供されます。

認可コードフロー (推奨)

  1. サインイン URL を構築します。プレースホルダーを、ステップ 1 のテナント ID とアプリケーション (クライアント) ID に置き換えます。ステップ 1 で別の localhost ポートを使用した場合は、一致するredirect_uriように を更新します。

    https://login.microsoftonline.com/TENANT_ID/oauth2/v2.0/authorize?client_id=CLIENT_ID&response_type=code&redirect_uri=http%3A%2F%2Flocalhost%3A53672%2Fcallback&response_mode=query&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default%20offline_access
  2. サインインします。ブラウザで URL を開き、コネクタでアクセスする Microsoft 365 ユーザーとしてサインインします。MFA チャレンジを完了します。

    その後、ブラウザはロードされない localhost URL にリダイレクトします (このポートではリッスンされていないため、これは予期されます)。ブラウザのアドレスバーにリダイレクト URI とそれに続くcodeパラメータが含まれるようになりました。例: http://localhost:53672/callback?code=0.AXoA...&session_state=...

  3. 認可コードをコピーします。アドレスバーから、 codeパラメータの値 ( code=と次の の間のすべて) をコピーします&。コードは数分有効です。ステップ 4 をすぐに完了してください。

  4. コードを更新トークンと交換します。プレースホルダーをテナント ID、アプリケーション (クライアント) ID、ステップ 3 のクライアントシークレット、およびコピーした認可コードに置き換えます。

    curl -s -X POST \ "https://login.microsoftonline.com/TENANT_ID/oauth2/v2.0/token" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "grant_type=authorization_code" \ -d "client_id=CLIENT_ID" \ -d "client_secret=CLIENT_SECRET" \ -d "code=AUTHORIZATION_CODE" \ -d "redirect_uri=http://localhost:53672/callback" \ -d "scope=https://graph.microsoft.com/.default offline_access"

    レスポンスには が含まれますrefresh_token。ステップ 5 で記録します。

リソース所有者のパスワード認証情報 (MFA 以外のサービスアカウントでは代替)

アカウントに MFA が不要で、インタラクティブサインインを適用する条件付きアクセスポリシーが適用されていない場合は、ブラウザフローをスキップし、ユーザーの認証情報を更新トークンに直接交換できます。プレースホルダーを、ユーザーの UPN とパスワードを含む値に置き換えます。

curl -s -X POST \ "https://login.microsoftonline.com/TENANT_ID/oauth2/v2.0/token" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "grant_type=password" \ -d "client_id=CLIENT_ID" \ -d "client_secret=CLIENT_SECRET" \ -d "username=USER_UPN" \ -d "password=USER_PASSWORD" \ -d "scope=https://graph.microsoft.com/.default offline_access"

レスポンスには が含まれますrefresh_token。ステップ 5 で記録します。このフローは、MFA が適用されるアカウントでは機能しません。代わりに上記の認可コードフローを使用してください。

ステップ 5: Secrets Manager シークレットを作成する

次のキーと値のペアを使用して、認証情報を AWS Secrets Manager シークレットに保存します。

  • clientId — ステップ 1 のアプリケーション (クライアント) ID。

  • clientSecret — ステップ 3 のクライアントシークレット値。

  • refreshToken — ステップ 4 の更新トークン。

{ "clientId": "your-client-id", "clientSecret": "your-client-secret", "refreshToken": "your-refresh-token" }

以下を使用してシークレットを作成します AWS Command Line Interface。

aws secretsmanager create-secret \ --name bedrock-onedrive-oauth2-creds \ --secret-string file://secret.json

レスポンスからシークレット ARN を記録します。データソース として使用しますsecretArn

注記

OAUTH2 コネクタは、シークレットから更新トークンを 1 回読み取り、同期ごとに再利用します。Microsoft が返すローテーションされた値は保存されません。新しい更新トークン (ステップ 4) を作成し、既存の更新トークンの有効期限が切れる前にシークレットの refreshTokenフィールドを更新する計画を立てます。シークレットを時間内に更新しない場合、同期はトークン更新エラーで失敗します。

次の手順

シークレットを保存したら、 を authTypeに設定してデータソースを作成しますOAUTH2。このメソッドの証明書を提供しません。「OneDrive データソースを接続する」を参照してください。