

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

# SharePoint の OAuth 2.0 認証を設定する
<a name="kb-managed-sharepoint-oauth2-setup"></a>

OAuth 2.0 認証 (`OAUTH2_APP`) は、OAuth 2.0 リソース所有者パスワード認証情報 (ROPC) フローを使用して、Microsoft 365 ユーザーアカウントのユーザー名とパスワードとともにアプリケーションクライアント ID とシークレットで認証します。コネクタは、コンテンツを読み取るためにそのユーザーとしてサインインします。

**重要**  
[SharePoint の Microsoft Entra ID アプリ専用認証を設定する](kb-managed-sharepoint-entra-setup.md) 代わりに をお勧めします。OAuth 2.0 認証には 2 つの制限があります。  
ユーザー名とパスワードでサインインするため、多要素認証 (MFA) チャレンジを完了したり、それを必要とする条件付きアクセスポリシーを満たすことはできません。アカウントが MFA または条件付きアクセスを強制する場合、認証は失敗し、データソースは同期できません。多くの組織では、ここで使用するアカウントの種類に MFA が必要です。
ドキュメントレベルのアクセスコントロール (ACLs) はサポートされていません。ユーザーアクセス許可でクエリ結果をフィルタリングするには、Microsoft Entra ID App-Only 認証を使用します。

## 前提条件
<a name="kb-managed-sharepoint-oauth2-prereqs"></a>
+ コネクタがサインインに使用するユーザー名とパスワードを持つ Microsoft 365 ユーザーアカウント。アカウントは、クロールする SharePoint サイトにアクセスできる必要があり、サインインに MFA または条件付きアクセスを必要としません。
+ アプリケーションを登録し、クライアントシークレットを作成するための Microsoft Entra ID 管理者アクセス。
+ Microsoft 365 のテナント ID。

## ステップ 1: Microsoft Entra ID にアプリケーションを登録する
<a name="kb-managed-sharepoint-oauth2-step1"></a>

1. [Microsoft Entra 管理センター](https://entra.microsoft.com/)にサインインします。

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

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

1. Name には****、 などのわかりやすい名前を入力します`bedrock-sharepoint-oauth2`。

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

1. **Redirect URI **を空白のままにして、**Register** を選択します。

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

## ステップ 2: API アクセス許可を追加し、管理者の同意を付与する
<a name="kb-managed-sharepoint-oauth2-step2"></a>

OAuth 2.0 認証には、サイトを列挙するための Microsoft Graph アプリケーションアクセス許可と、コンテンツを読み取るための SharePoint 委任アクセス許可の 2 つのアクセス許可が必要です。以下の両方を割り当てます。


**OAuth 2.0 認証のアクセス許可**  

| API | アクセス許可 | タイプ | 目的 | 
| --- | --- | --- | --- | 
| Microsoft Graph | Sites.Read.All | アプリケーション | SharePoint サイトを列挙します。 | 
| SharePoint | AllSites.Read | 委任済み | SharePoint REST API を使用してサイトコンテンツを読み取ります。管理者の同意が必要です (次の注意を参照）。 | 

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

1. **Microsoft Graph** を選択し、次に**アプリケーションのアクセス許可**を選択します。を検索して選択し`Sites.Read.All`、アクセス**許可の追加**を選択します。

1. アクセス**許可を再度追加**を選択します。(**Microsoft APIs**) **SharePoint** を選択し、**次に委任されたアクセス許可**を選択します。「」を選択し `AllSites.Read` (すべてのサイトコレクションの項目を読み取る」）、**「アクセス許可の追加**」を選択します。

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

**重要**  
Entra ポータルに管理者の同意が必要と表示されている**場合でも、管理者の同意を付与する必要があります。SharePoint 委任アクセス許可にはいいえ**。 SharePoint `AllSites.Read` この列は、ユーザーが通常、インタラクティブサインイン中に同意できるが、リソース所有者パスワード認証情報フローにはインタラクティブサーフェスがないため、サインイン時にアクセス許可に同意できないため、**[組織] に対する管理者の同意を付与して、組織全体で事前にアクセス許可**を付与する必要があります。これがないと、SharePoint トークンリクエストは で失敗し `AADSTS65001` (ユーザーまたは管理者がアプリケーションの使用に同意していない）、データソースは同期できません。

**注記**  
テナントでセキュリティデフォルトが有効になっている場合、リソース所有者パスワード認証情報フローがブロックされる可能性があります。ここで使用されているアカウントが MFA なしでサインインできるように、テナントのセキュリティデフォルトまたは条件付きアクセスポリシーを調整する管理者が必要になる場合があります。詳細については、Microsoft のセキュリティ[のデフォルト](https://learn.microsoft.com/en-us/entra/fundamentals/security-defaults)に関するドキュメントを参照してください。

## ステップ 3: クライアントシークレットを作成する
<a name="kb-managed-sharepoint-oauth2-step3"></a>

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

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

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

## ステップ 4: Secrets Manager シークレットを作成する
<a name="kb-managed-sharepoint-oauth2-step4"></a>

次のキーと値のペアを使用して、認証情報を AWS Secrets Manager シークレットに保存します。
+ `clientId` — ステップ 1 のアプリケーション (クライアント) ID。
+ `clientSecret` — ステップ 3 のクライアントシークレット値。
+ `userName` — Microsoft 365 ユーザーアカウントのユーザー名 (UPN)。
+ `password` — そのアカウントのパスワード。

```
{
    "clientId": "{{your-client-id}}",
    "clientSecret": "{{your-client-secret}}",
    "userName": "{{user@yourdomain.onmicrosoft.com}}",
    "password": "{{your-account-password}}"
}
```

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

```
aws secretsmanager create-secret \
  --name {{bedrock-sharepoint-oauth2-creds}} \
  --secret-string file://secret.json
```

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

**注記**  
アカウントのパスワードはシークレットに保存され、各同期に使用されます。パスワードが変更された場合は、シークレットを更新します。コネクタはこのアカウントでサインインするため、シークレットを機密性の高いものとして扱い、アクセスを制限します。

## トラブルシューティング
<a name="kb-managed-sharepoint-oauth2-troubleshooting"></a>

データソースの同期に失敗した場合、エラーを次の署名と照合します。


**OAuth 2.0 同期エラー**  

| エラー | 原因と解決方法 | 
| --- | --- | 
| AADSTS65001 (ユーザーまたは管理者がアプリケーションの使用に同意していない) | SharePoint AllSites.Read委任アクセス許可は管理者から同意されていません。アプリ登録で API アクセス許可を選択し、[組織] に管理者の同意を付与します。「ステップ 2」を参照してください。 | 
| Rest API token request failed with status: 400 | 通常、アカウントでフローが満たすことができない MFA または条件付きアクセスポリシーが必要なため、リソース所有者パスワード認証情報のサインインが認証時に失敗しました。MFA を必要としないアカウントを使用し、シークレットpasswordの userNameと が正しいことを確認します。 | 
| SharePoint app is missing required scopes | Microsoft Graph Sites.Read.Allアプリケーションのアクセス許可が付与されていない (または同意されていない）。コネクタは、クロールする前に、このスコープの Graph アプリケーショントークンをチェックします。Microsoft Graph Sites.Read.Allアプリケーションのアクセス許可を追加し、管理者の同意を付与します。「ステップ 2」を参照してください。 | 

## 次の手順
<a name="kb-managed-sharepoint-oauth2-next"></a>

シークレットを保存したら、 を `authType`に設定してデータソースを作成します`OAUTH2_APP`。このメソッドには証明書を提供しません。「[SharePoint データソースを接続する](kb-managed-ds-sharepoint-connect.md)」を参照してください。