

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 設定 Confluence 的 OAuth 2.0 身分驗證
<a name="kb-managed-confluence-oauth2-setup"></a>

OAuth 2.0 身分驗證 (`OAUTH2`) 使用 Atlassian OAuth 2.0 三邊形 (3LO) 應用程式進行身分驗證。您可以在 Atlassian 開發人員主控台中註冊應用程式、完成一次性授權流程以取得重新整理權杖，以及將登入資料存放在其中 AWS。在爬蟲時，Amazon Bedrock 會使用重新整理權杖自動刪除短期存取權杖。

**重要**  
OAuth 2.0 不支援文件層級存取控制 (ACLs)。若要依使用者許可篩選查詢結果，請使用基本身分驗證。請參閱 [設定 Confluence 的基本身分驗證](kb-managed-confluence-basic-setup.md)。

## 步驟 1：註冊 OAuth 2.0 (3LO) 應用程式
<a name="kb-managed-confluence-oauth2-step1"></a>

1. 登入 [Atlassian 開發人員主控台](https://developer.atlassian.com/console/myapps/)。

1. 選擇**建立**，然後選擇 **OAuth 2.0 整合。**

1. 輸入應用程式的名稱 （例如 `bedrock-confluence-connector`)，然後選擇**建立**。

1. 在應用程式的**許可**頁面上，新增 **Confluence API**。設定下列精細範圍 （或如果您的應用程式使用它們，則為同等傳統範圍）：
   + `read:content:confluence`
   + `read:content-details:confluence`
   + `read:space:confluence`
   + `read:space-details:confluence`
   + `read:user:confluence`
   + `read:attachment:confluence`
   + `read:page:confluence` — 頁面列舉的必要項目
   + `read:blogpost:confluence` — 如果您編目部落格文章，則為必要項目
   + `read:custom-content:confluence` — 如果您的工作區包含自訂內容，則為必要

   新增 `offline_access` **授權** — **使用者身分 API** 許可。 `offline_access` 是 Atlassian 發出重新整理權杖的原因。

1. 在**授權**頁面上，將**回呼 URL** 設定為您可以在步驟 3 中擷取授權碼的控制 URL （例如 `https://localhost:8080/callback`)。

1. 在**設定**頁面上，複製**用戶端 ID** 和**秘密**。這些是 `confluenceAppKey`和 `confluenceAppSecret`。

## 步驟 2：授權應用程式
<a name="kb-managed-confluence-oauth2-step2"></a>

在瀏覽器中開啟下列 URL，將預留位置取代為您的值。使用連接器應該使用的 Atlassian 使用者登入；使用者必須能夠存取您要編目的 Confluence 內容。

```
https://auth.atlassian.com/authorize?
audience=api.atlassian.com&
client_id={{your-client-id}}&
scope=read:content:confluence%20read:content-details:confluence%20read:space:confluence%20read:space-details:confluence%20read:user:confluence%20read:attachment:confluence%20read:page:confluence%20read:blogpost:confluence%20read:custom-content:confluence%20offline_access&
redirect_uri={{https://localhost:8080/callback}}&
response_type=code&
prompt=consent
```

核准同意提示。Atlassian 會使用`code`查詢參數重新導向至您的回呼 URL。複製該授權碼。

## 步驟 3：交換字符的程式碼
<a name="kb-managed-confluence-oauth2-step3"></a>

交換存取字符和重新整理字符的授權碼。從終端機執行：

```
curl -X POST https://auth.atlassian.com/oauth/token \
  -H "Content-Type: application/json" \
  -d '{
    "grant_type": "authorization_code",
    "client_id": "{{your-client-id}}",
    "client_secret": "{{your-client-secret}}",
    "code": "{{authorization-code-from-step-2}}",
    "redirect_uri": "{{https://localhost:8080/callback}}"
  }'
```

回應包含 `access_token`和 `refresh_token`。記錄這兩個值。只要定期使用，重新整理字符不會過期。

## 步驟 4：建立 Secrets Manager 秘密
<a name="kb-managed-confluence-oauth2-step4"></a>

使用下列鍵值對將登入資料存放在 AWS Secrets Manager 秘密中：

```
{
    "confluenceAppKey": "{{your-client-id}}",
    "confluenceAppSecret": "{{your-client-secret}}",
    "confluenceAccessToken": "{{your-access-token}}",
    "confluenceRefreshToken": "{{your-refresh-token}}",
    "hostUrl": "{{https://your-instance.atlassian.net}}"
}
```

使用 建立秘密 AWS Command Line Interface：

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

從回應記錄秘密 ARN。您可以使用它做為資料來源 `secretArn`。

## 步驟 5：授予服務角色更新秘密的許可
<a name="kb-managed-confluence-oauth2-step5"></a>

Atlassian 存取字符會在 60 分鐘後過期。Amazon Bedrock 使用重新整理字符來挖掘新的存取字符，並將新值寫回相同的秘密。將 `secretsmanager:PutSecretValue` 的秘密新增至知識庫服務角色的許可政策：

```
{
    "Effect": "Allow",
    "Action": "secretsmanager:PutSecretValue",
    "Resource": "{{arn:aws:secretsmanager:region:account-id:secret:bedrock-confluence-oauth2-creds-*}}"
}
```

如果沒有此許可，連接器就無法保留輪換的存取權杖，且後續同步會失敗。

## 後續步驟
<a name="kb-managed-confluence-oauth2-next"></a>

存放秘密之後，請建立將 `authType` 設為 的資料來源`OAUTH2`。請參閱[連接 Confluence 資料來源](kb-managed-ds-confluence-connect.md)。