翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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 にアプリケーションを登録する
-
Microsoft Entra 管理センター
にサインインします。 -
左側のナビゲーションで、Entra ID を展開し、アプリ登録を選択します。
-
[New registration] (新規登録) を選択します。
-
Name には、 などのわかりやすい名前を入力します
bedrock-onedrive-oauth2。 -
サポートされるアカウントタイプでは、この組織ディレクトリのアカウントのみ (単一テナント) を選択します。
-
リダイレクト URI で、プラットフォームとして Web を選択し、 と入力します
http://localhost:53672/callback。このリダイレクト URI は、ステップ 4 で更新トークンを取得するときに使用します。任意の無料の localhost ポートを使用できます。ここでポートを変更する場合は、ステップ 4 で同じポートを使用します。 -
[登録] を選択します。
-
アプリケーションの概要ページで、アプリケーション (クライアント) ID とディレクトリ (テナント) ID を記録します。
ステップ 2: API アクセス許可を追加し、管理者の同意を付与する
OAuth 2.0 認証は委任されたサインインを使用するため、アプリケーションにはアプリケーションのアクセス許可ではなく、委任されたアクセス許可が必要です。
-
アプリ登録で API アクセス許可を選択し、アクセス許可を追加します。
-
Microsoft Graph を選択し、次に委任されたアクセス許可を選択します。
-
次の委任されたアクセス許可を選択し、アクセス許可の追加を選択します。
Files.Read.All— ユーザーがアクセスできるファイルを読み取ります。Sites.Read.All— ユーザーがアクセスできる OneDrive サイトを読みます。User.Read.All— ユーザーを識別します。offline_access— サインインが更新トークンを返すために必要です。
-
API アクセス許可ページで、[組織] に対する管理者の同意を付与を選択し、確認します。
ステップ 3: クライアントシークレットを作成する
-
アプリ登録で、証明書とシークレット、クライアントシークレット、新しいクライアントシークレットを選択します。
-
説明を入力し、有効期限を選択し、追加を選択します。
-
シークレット値 をすぐに記録します。1 回だけ表示されます。シークレット ID ではなく、 値を記録します。
ステップ 4: 更新トークンを取得する
コネクタには、1 回限りのユーザーサインインを通じて取得する更新トークンが必要です。以下の手順では、多要素認証 (MFA) を使用するユーザーに対して機能する localhost リダイレクトで OAuth 2.0 認可コードフローを使用します。MFA 以外のサービスアカウントの場合、最後により簡単な代替手段が提供されます。
認可コードフロー (推奨)
-
サインイン 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 -
サインインします。ブラウザで URL を開き、コネクタでアクセスする Microsoft 365 ユーザーとしてサインインします。MFA チャレンジを完了します。
その後、ブラウザはロードされない localhost URL にリダイレクトします (このポートではリッスンされていないため、これは予期されます)。ブラウザのアドレスバーにリダイレクト URI とそれに続く
codeパラメータが含まれるようになりました。例:http://localhost:53672/callback?code=0.AXoA...&session_state=...。 -
認可コードをコピーします。アドレスバーから、
codeパラメータの値 (code=と次の の間のすべて) をコピーします&。コードは数分有効です。ステップ 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 \ --namebedrock-onedrive-oauth2-creds\ --secret-string file://secret.json
レスポンスからシークレット ARN を記録します。データソース として使用しますsecretArn。
注記
OAUTH2 コネクタは、シークレットから更新トークンを 1 回読み取り、同期ごとに再利用します。Microsoft が返すローテーションされた値は保存されません。新しい更新トークン (ステップ 4) を作成し、既存の更新トークンの有効期限が切れる前にシークレットの refreshTokenフィールドを更新する計画を立てます。シークレットを時間内に更新しない場合、同期はトークン更新エラーで失敗します。
次の手順
シークレットを保存したら、 を authTypeに設定してデータソースを作成しますOAUTH2。このメソッドの証明書を提供しません。「OneDrive データソースを接続する」を参照してください。