本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
設定 ServiceNow 的 OAuth 2.0 用戶端登入資料驗證
使用 ServiceNow Table API 搭配 OAuth 2.0 用戶端登入資料 (2LO) 進行身分驗證。在 Amazon Bedrock 中設定資料來源之前,請先完成 ServiceNow 執行個體中的所有下列步驟。
步驟 1:啟用用戶端憑證授予類型
-
在 ServiceNow 中,
sys_properties.list使用篩選條件導覽器導覽至 。 -
使用下列值建立新的系統屬性:
-
名稱 –
glide.oauth.inbound.client.credential.grant_type.enabled -
類型 –
true | false -
值:
true
-
步驟 2:建立專用服務帳戶
-
導覽至使用者管理 > 使用者。
-
選擇新增並完成表單:
-
使用者 ID – 描述性名稱 (例如
svc.amazon.quick.kb)。 -
僅限 Web 服務存取 – 已檢查。這可防止互動式登入。
-
密碼 – 設定高強度密碼。連接器使用 OAuth,但需要密碼才能建立帳戶。
-
-
選擇提交。
步驟 3:指派服務帳戶角色
-
開啟服務帳戶 (使用者管理 > 使用者 > 您的服務帳戶)。
-
在角色索引標籤下,選擇編輯並新增下列角色:
-
knowledge_admin– 所有知識庫文章的完整讀取存取權。略過每 KB 使用者條件限制。 -
catalog_admin– 所有服務目錄項目的完整讀取存取權。略過每個目錄的限制。
-
-
選擇儲存。
注意
儲存後,您會看到總共約 14 個角色。ServiceNow 自動繼承包含來自_admin父角色的角色。您只能手動指派步驟 2 中列出的兩個角色 (knowledge_admin 和 catalog_admin)。請勿指派 admin、 itil或 snc_read_only角色。
步驟 4:註冊 OAuth 應用程式
-
導覽至系統 OAuth > 應用程式登錄檔。
-
選擇新增 > 為外部用戶端建立 OAuth API 端點。
-
填寫表單:
-
名稱 – 描述性名稱 (例如
Amazon-Quick-KB-Client)。 -
重新導向 URL – 保留空白。用戶端登入資料流程不需要。
-
-
選擇提交。
-
立即複製用戶端 ID 和用戶端秘密。Client Secret 只會顯示一次。
重要
您必須使用攔截器頁面來建立應用程式。請勿直接插入oauth_entity資料表來建立記錄。
步驟 5:設定 OAuth 應用程式
-
從應用程式登錄清單中重新開啟應用程式記錄。
-
如果看不到 OAuth 應用程式使用者欄位,請使用設定 > 表單建置器新增它。
-
設定下列欄位:
-
OAuth 應用程式使用者 – 您的服務帳戶 (例如
svc.amazon.quick.kb)。 -
範圍限制 –
Broadly scoped。 -
用戶端類型 –
integration_as_a_service。
-
-
選擇更新。
步驟 6:設定 API 存取政策
如果沒有 API 存取政策,權杖會進行身分驗證,但資料表 API 會傳回 HTTP 401。完成以下兩個子步驟。
建立傳入身分驗證設定檔
-
導覽至系統 Web 服務 > API 存取政策 > 傳入身分驗證設定檔。
-
選擇新增並設定:
-
名稱 – 例如,
Amazon-Quick-KB-Client-Profile。 -
類型 –
OAuth. -
OAuth 實體 – 選取您的 OAuth 應用程式。
-
-
選擇提交。
-
重新開啟設定檔。在身分驗證政策相關清單中,選擇編輯並新增允許存取政策。選擇儲存。
建立 REST API 存取政策
-
導覽至系統 Web 服務 > API 存取政策 > REST API 存取政策。
-
選擇新增並設定:
-
名稱 – 例如,
Table API Oauth access policy。 -
REST API –
Table API。 -
REST API 路徑 –
now/table。 -
套用至所有方法 – 已檢查。
-
套用至所有資源 – 已檢查。
-
套用至所有資料表 – 已檢查。
-
套用至所有版本 – 已檢查。
-
-
選擇提交。
-
重新開啟政策。在傳入身分驗證設定檔相關清單中,選擇編輯並新增傳入身分驗證設定檔。選擇儲存。
步驟 7:驗證 OAuth 流程
設定資料來源之前,請確認 OAuth 流程可end-to-end運作。
請求權杖:
curl -s -X POST "https://INSTANCE.service-now.com/oauth_token.do" \ -d "grant_type=client_credentials" \ -d "client_id=CLIENT_ID" \ -d "client_secret=CLIENT_SECRET"
驗證資料表 API 存取:
curl -s "https://INSTANCE.service-now.com/api/now/table/kb_knowledge?sysparm_limit=1" \ -H "Authorization: BearerACCESS_TOKEN"
下表說明每個驗證結果和要採取的動作。
| 結果 | 意義 | Action |
|---|---|---|
| HTTP 200 與資料 | 正常運作 | 繼續建立 Secrets Manager 秘密。 |
| HTTP 200 搭配空白陣列 | 缺少knowledge_admin角色 |
將knowledge_admin角色指派給服務帳戶。 |
| HTTP 401 | 未設定 API 存取政策 | 驗證傳入身分驗證設定檔和 REST API 存取政策組態。 |
步驟 8:建立 Secrets Manager 秘密
使用下列鍵/值對,將登入資料存放在 AWS 區域 與知識庫相同的 AWS Secrets Manager 秘密中:
{ "clientId": "your-client-id", "clientSecret": "your-client-secret", "instanceUrl": "https://YOUR_INSTANCE.service-now.com" }
| 欄位 | 說明 |
|---|---|
clientId |
步驟 4 中的應用程式用戶端 ID。 |
clientSecret |
在步驟 4 的建立時間顯示應用程式用戶端秘密。 |
instanceUrl |
完整的 ServiceNow 執行個體 URL (包含 https://,不含尾斜線)。 |
重要
instanceUrl 不得有斜線。
使用 建立秘密 AWS Command Line Interface:
aws secretsmanager create-secret \ --namebedrock-servicenow-creds\ --secret-string file://secret.json
從回應記錄秘密 ARN。您可以使用它做為資料來源 secretArn。
後續步驟
儲存秘密之後,請建立資料來源。請參閱連接 ServiceNow 資料來源。