本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
创建私有人力(OIDC IdP)
当您想使用自己的身份提供商对员工进行身份验证和管理时,使用 OpenID Connect (OIDC) 身份提供商 (IdP) 创建私人劳动力。使用此页面了解如何配置 IdP 以与亚马逊沟通 SageMaker Ground Truth(Ground Truth)或亚马逊 Augmented AI(Amazon A2I),并学习如何使用自己的 IdP 创建员工队伍。
要使用 OIDC IdP 创建员工队伍,您的 IdP 必须支持组因为 Ground Truth 和 Amazon A2I 使用您指定的一个或多个组来创建工作团队。您可以使用工作团队为标签作业和人工审核任务指定工作人员。因为团体不是标准声明sagemaker:groups
这是从你的 IdP 发送到 Ground Truth 或亚马逊 A2I。要了解更多信息,请参阅 向 Ground Truth 和亚马逊 A2I 发送必填和可选索赔。
您可 IdP 使用 SageMaker API 操作CreateWorkforce
. 创建私有人力后,该人力及其关联的所有工作团队和工作人员都可用于所有 Ground Truth 标记作业任务和 Amazon A2I 人工审核工作流程任务。要了解更多信息,请参阅 创建 OIDC IdP 人力。
向 Ground Truth 和亚马逊 A2I 发送必填和可选索赔
当你使用自己的 IdP、Ground Truth 和亚马逊 A2I 使用Issuer
、ClientId
, 和ClientSecret
通过从您的AuthorizationEndpoint
.
Ground Truth 和亚马逊 A2I 将使用此代码从 IdP 那里获取自定义索赔TokenEndpoint
要么UserInfoEndpoint
. 您可以配置TokenEndpoint
返回 JSON Web 令牌 (JWT) 或UserInfoEndpoint
返回 JSON 对象。JWT 或 JSON 对象必须包含您指定的必需和可选声明。一个要求
您可以使用下表中的某些参数使用:
或者-
. 例如,您可以使用指定工作线程所属组sagemaker:groups
要么sagemaker-groups
在申请中。
名称 | 必填 | 接受的格式和值 | 说明 | 示例 |
---|---|---|---|---|
|
是 |
数据类型: 如果工作人员属于单个组,请使用字符串识别该组。 如果工作线程属于多个组,请使用最多包含 10 个字符串的列表。 允许使用的字符: 正则表达式:[\ p {L}\ p {M}\ p {N}\ p {L}\ p {P} + 配额: 每个工作人员 10 组 每组名称 63 个字符 |
将工作线程分配给一个或多个组。组用于将工作人员映射到工作团队中。 |
属于单个组的工作人员示例: 属于多个组的工作人员的示例: |
|
是 |
数据类型: 字符串 |
这对于在 Ground Truth 平台内跟踪员工身份进行审计以及识别该员工处理的任务是必需的。 对于 ADFS:客户必须使用主安全标识符 (SID)。 |
|
|
是 |
数据类型: 字符串 允许使用的字符: 正则表达式:[\ w+-] + QUOTE: 128 个字符 |
客户端 ID。必须为此客户端 ID 发放所有令牌。 |
|
|
是 |
数据类型: 字符串 |
要在工作人员门户中显示的工作人员姓名。 |
|
|
否 |
数据类型: 字符串 |
工作线程电子邮件。Ground Truth 使用此电子邮件通知员工他们已被邀请从事贴标任务。如果您为该工作人员所在的工作团队设置 Amazon SNS 主题,Ground Truth 还将使用此电子邮件在标签任务可用时通知您的员工。 |
|
|
否 |
数据类型: Bool 接受的值:
|
指示用户电子邮件是否已验证。 |
|
以下是 JSON 对象语法的示例UserInfoEndpoint
可以返回。
{ "sub":"
122
", "exp":"10000
", "sagemaker-groups":["group1
","group2
"] "sagemaker-name":"name
", "sagemaker-sub":"122
", "sagemaker-client_id":"123456
" }
Ground Truth 或亚马逊 A2I 比较中列出的组sagemaker:groups
要么sagemaker-groups
验证您的工作人员是否属于标签作业或人工审核任务中指定的工作组。验证工作团队后,标签或人工审核任务将发送给该工作人员。
创建 OIDC IdP 人力
您可以使用创建人力 SageMaker API 操作CreateWorkforce
以及相关的特定于语言的 SDK。指定WorkforceName
以及参数中有关 OIDC IDP 的信息OidcConfig
. 建议您使用占位符重定向 URI 配置 OIDC,然后在创建员工后使用工作人员门户网址更新 URI。要了解更多信息,请参阅 配置 OIDC IdP。
以下显示了请求的示例。请参阅CreateWorkforce
以了解更多有关此请求中每个参数的详情。
CreateWorkforceRequest: { #required fields WorkforceName: "
example-oidc-workforce
", OidcConfig: { ClientId: "clientId
", ClientSecret: "secret
", Issuer: "https://example-oidc-idp.com/adfs
", AuthorizationEndpoint: "https://example-oidc-idp.com/adfs/oauth2/authorize
", TokenEndpoint: "https://example-oidc-idp.com/adfs/oauth2/token
", UserInfoEndpoint: "https://example-oidc-idp.com/adfs/oauth2/userInfo
", LogoutEndpoint: "https://example-oidc-idp.com/adfs/oauth2/log-out
", JwksUri: "https://example-oidc-idp.com/adfs/discovery/keys
" }, SourceIpConfig: { Cidrs: ["string", "string"
] } }
配置 OIDC IdP
如何配置 OIDC IdP 取决于您使用的 IdP 和业务需求。
配置 IdP 时,必须指定回调或重定向 URI。在 Ground Truth 或 Amazon A2I 对工作人员进行身份验证后,此 URI 将将工作人员重定向到工作人员门户,员工可以在其中访问标签或人工审核任务。要创建员工门户网址,您需要使用CreateWorkforce
API 操作。具体来说,您必须使用所需的自定义 sagemaker 声明配置 OIDC IdP(有关更多详细信息,请参阅下一节)。因此,建议您使用占位符重定向 URI 配置 OIDC,然后在创建员工后更新 URI。请参阅创建 OIDC IdP 人力了解如何使用此 API 创建员工队伍。
您可以在 SageMaker Ground Truth 控制台,或者使用 SageMaker API 操作,DescribeWorkforce
. 工作人员门户网址位于SubDomain
响应中的参数。
确保将员工子域添加到 OIDC IdP 允许列表中。当你将子域添加到允许列表时,它必须以/oauth2/idpresponse
.
要在创建私人员工队伍后查看员工门户网址 (控制台):
-
打开 SageMaker 控制台https://console.aws.amazon.com/sagemaker/
. -
在导航窗格中,选择 Labeling workforces (标记人力)。
-
选择 Private (私有) 选项卡。
-
In私人劳动力总结你会看到为门户登录 URL 添加标记. 这是你的工作人员门户网址。
要在创建私人员工队伍 (API) 后查看员工门户网址:
当您使用创建私有人力时使用CreateWorkforce
,您可以指定WorkforceName
. 用这个名字来打电话DescribeWorkforce
. 下表包含使用Amazon CLI和Amazon SDK for Python (Boto3).
验证您的 OIDC IdP 员工身份验证响应
创建 OIDC IdP 人力后,您可以使用以下步骤使用 cURL 验证其身份验证工作流程。此过程假定你有权访问终端,并且你已安装了 cURL。
要验证 OIDC IdP 授权响应:
-
使用如下配置的 URI 获取授权码:
{AUTHORIZE ENDPOINT}
?client_id={CLIENT ID}
&redirect_uri={REDIRECT URI}
&scope={SCOPE}
&response_type=code-
Replace
使用 OIDC IdP 的授权终端节点。{AUTHORIZE ENDPOINT}
-
Replace
使用 OAuth 客户端的客户端 ID。{CLIENT ID}
-
Replace
使用工作人员门户网址。如果尚未存在,则必须添加{REDIRECT URI}
/oauth2/idpresponse
到 URL 的末尾。 -
如果你有自定义范围,请用它来替换
. 如果您没有自定义作用域,请替换{SCOPE}
和{SCOPE}
openid
.
以下是进行上述修改后 URI 的示例:
https://example.com/authorize?client_id=f490a907-9bf1-4471-97aa-6bfd159f81ac&redirect_uri=https%3A%2F%2F%2Fexample.labeling.sagemaker.aws%2Foauth2%2Fidpresponse&response_type=code&scope=openid
-
-
将步骤 1 中修改的 URI 复制并粘贴到浏览器中,然后按键盘上的 Enter 键。
-
使用 IdP 进行身份验证。
-
在 URI 中复制身份验证码查询参数。这个参数存在
code=
. 以下是响应具体形式的示例。在此示例中,复制code=MCNYDB...
以及之后的一切。https://example.labeling.sagemaker.aws/oauth2/idpresponse?code=MCNYDB....
-
在进行下面列出的必要修改后,打开终端并输入以下命令:
curl --request POST \ --url '
{TOKEN ENDPOINT}
' \ --header 'content-type: application/x-www-form-urlencoded' \ --data grant_type=authorization_code \ --data 'client_id={CLIENT ID}
' \ --data client_secret={CLIENT SECRET}
\ --data code={CODE}
\ --data 'redirect_uri={REDIRECT URI}
'-
Replace
使用 OIDC IdP 的令牌终端节点。{TOKEN ENDPOINT}
-
Replace
使用 OAuth 客户端的客户端 ID。{CLIENT ID}
-
Replace
使用 OAuth 客户端提供的客户机密。{CLIENT SECRET}
-
Replace
使用您在步骤 4 中复制的身份验证码查询参数。{CODE}
-
Replace
使用工作人员门户网址。{REDIRECT URI}
以下是进行上述修改后 cURL 请求的示例:
curl --request POST \ --url 'https://example.com/token' \ --header 'content-type: application/x-www-form-urlencoded' \ --data grant_type=authorization_code \ --data 'client_id=f490a907-9bf1-4471-97aa-6bfd159f81ac' \ --data client_secret=client-secret \ --data code=MCNYDB... \ --data 'redirect_uri=https://example.labeling.sagemaker.aws/oauth2/idpresponse'
-
-
此步取决于
access_token
你的 IdP 返回,一个纯文本访问令牌或 JWT 访问令牌。-
如果您的 IdP 不支持 JWT 访问令牌,
access_token
可能是纯文本(例如,UUID)。您看到的响应可能类似于以下内容。在此情况下,请转到步骤 7。{ "access_token":"179c144b-fccb-4d96-a28f-eea060f39c13", "token_type":"Bearer", "expires_in":3600, "refresh_token":"ef43e52e-9b4f-410c-8d4c-d5c5ee57631a", "scope":"openid" }
-
如果您的 IdP 支持 JWT 访问令牌,则步骤 5 应该生成 JWT 格式的访问令牌。例如,响应可能类似于以下内容:
{ "access_token":"eyJh...JV_adQssw5c", "refresh_token":"i6mapTIAVSp2oJkgUnCACKKfZxt_H5MBLiqcybBBd04", "refresh_token_expires_in":6327, "scope":"openid", "id_token":"eyJ0eXAiOiJK9...-rDaQzUHl6cQQWNiDpWOl_lxXjQEvQ" }
复制 JWT 并对其进行解码。你可以使用 python 脚本或第三方网站来解码它。例如,您可以访问该网站https://jwt.io/
然后将 JWT 粘贴到编码框来解码它。 确保解码响应包含以下内容:
-
这些区域有:必需 SageMaker 表格中的索赔向 Ground Truth 和亚马逊 A2I 发送必填和可选索赔. 如果没有,则必须重新配置 OIDC IdP 以包含这些声明。
-
这些区域有:发布者您在设置 IdP 人力时指定。
-
-
-
在终端中,在进行下面列出的必要修改后输入以下命令:
curl -X POST -H 'Authorization: Bearer
{ACCESS TOKEN}
' -d '' -k -v{USERINFO ENDPOINT}
-
Replace
使用 OIDC IdP 的用户信息终端节点。{USERINFO ENDPOINT}
-
Replace
在步骤 7 中收到的响应中使用访问令牌。这是的条目{ACCESS TOKEN}
"access_token"
参数。
以下是进行上述修改后 cURL 请求的示例:
curl -X POST -H 'Authorization: Bearer eyJ0eX...' -d '' -k -v https://example.com/userinfo
-
-
对上述过程中最后一步的响应可能类似于以下代码块。
如果
access_token
在步骤 6 中返回的是纯文本,您必须验证此响应是否包含所需信息。在此情况下,响应必须包含必需 SageMaker 表格中的索赔向 Ground Truth 和亚马逊 A2I 发送必填和可选索赔. 例如,sagemaker-groups
和sagamaker-name
。{ "sub":"122", "exp":"10000", "sagemaker-groups":["group1","group2"] "sagemaker-name":"name", "sagemaker-sub":"122", "sagemaker-client_id":"123456" }
后续步骤
使用 IdP 创建私人员队伍并验证了 IdP 身份验证响应后,就可以使用 IdP 组创建工作团队。要了解更多信息,请参阅 管理私有人力(OIDC IdP)。
您可以将员工对任务的访问限制为特定 IP 地址,也可以使用 SageMaker API。要了解更多信息,请参阅“使用 Amazon SageMaker API 管理私人劳动力”。