本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
为设置 OAuth 2.0 客户端凭据身份验证 ServiceNow
使用带有 OAuth 2.0 客户端凭证 (2LO) 的 T ServiceNow able API 进行身份验证。在 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)。不要分配adminitil、或snc_read_only角色。
第 4 步:注册 OAuth 应用程序
-
导航到系统 OAuth > 应用程序注册表。
-
选择 “新建” > “为外部客户端创建 OAuth API 端点”。
-
填写表格:
-
名称 — 描述性名称(例如,
Amazon-Quick-KB-Client)。 -
重定向 URL -留空。不是客户端凭证流程所必需的。
-
-
选择提交。
-
立即复制客户端 ID 和客户端密钥。客户端密钥仅显示一次。
重要
必须使用拦截器页面来创建应用程序。不要通过直接插入oauth_entity表来创建记录。
第 5 步:配置 OAuth 应用程序
-
Re-open 应用程序注册表列表中的应用程序记录。
-
如果 OAuth 应用程序用户字段不可见,请使用配置 > 表单生成器进行添加。
-
设置以下字段:
-
OAuth 应用程序用户 -您的服务帐号(例如)。
svc.amazon.quick.kb -
范围限制 —
Broadly scoped. -
客户类型 —
integration_as_a_service.
-
-
选择更新。
第 6 步:配置 API 访问策略
如果没有 API 访问策略,则对令牌进行身份验证,但是 Table API 返回 HTTP 401。完成以下两个子步骤。
创建入站身份验证配置文件
-
导航到系统 Web 服务 > API 访问策略 > 入站身份验证配置文件。
-
选择 “新建” 并设置:
-
名称 — 例如,
Amazon-Quick-KB-Client-Profile. -
Type –
OAuth。 -
OAuth 实体 -选择您的 OAuth 应用程序。
-
-
选择提交。
-
Re-open 个人资料。在身份验证策略相关列表中,选择编辑并添加允许访问策略。选择保存。
创建 REST API 访问策略
-
导航到系统 Web 服务 > API 访问策略 > REST API 访问策略。
-
选择 “新建” 并设置:
-
名称 — 例如,
Table API Oauth access policy. -
REST API —
Table API. -
REST API 路径 —
now/table. -
适用于所有方法 -已选中。
-
应用于所有资源 -已选中。
-
应用于所有表 -已选中。
-
适用于所有版本 -已选中。
-
-
选择提交。
-
Re-open 政策。在入站身份验证配置文件相关列表中,选择编辑并添加您的入站身份验证配置文件。选择保存。
第 7 步:验证 OAuth 流程
在配置数据源之前,请验证 OAuth 流程是否端到端运行。
申请代币:
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"
验证 Table API 访问权限:
curl -s "https://INSTANCE.service-now.com/api/now/table/kb_knowledge?sysparm_limit=1" \ -H "Authorization: BearerACCESS_TOKEN"
下表描述了每个验证结果和要采取的操作。
| 结果 | 含义 | 操作 |
|---|---|---|
| 带数据的 HTTP 200 | 工作正常 | 继续创建密钥管理器密钥。 |
| 带有空数组的 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 数据源。