创建私有人力(OIDC IdP) - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

创建私有人力(OIDC IdP)

当您想使用自己的身份提供商对员工进行身份验证和管理时,使用 OpenID Connect (OIDC) 身份提供商 (IdP) 创建私人劳动力。使用此页面了解如何配置 IdP 以与亚马逊沟通 SageMaker Ground Truth(Ground Truth)或亚马逊 Augmented AI(Amazon A2I),并学习如何使用自己的 IdP 创建员工队伍。

要使用 OIDC IdP 创建员工队伍,您的 IdP 必须支持因为 Ground Truth 和 Amazon A2I 使用您指定的一个或多个组来创建工作团队。您可以使用工作团队为标签作业和人工审核任务指定工作人员。因为团体不是标准声明,您的 IdP 对于一组用户(工作人员)可能有不同的命名约定。因此,您必须使用自定义声明确定工作人员所属的一个或多个用户组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 使用IssuerClientId, 和ClientSecret通过从您的AuthorizationEndpoint.

Ground Truth 和亚马逊 A2I 将使用此代码从 IdP 那里获取自定义索赔TokenEndpoint要么UserInfoEndpoint. 您可以配置TokenEndpoint返回 JSON Web 令牌 (JWT) 或UserInfoEndpoint返回 JSON 对象。JWT 或 JSON 对象必须包含您指定的必需和可选声明。一个要求是一个键值对,其中包含有关工作人员的信息或有关 OIDC 服务的元数据。下表列出了必须包含的声明,这些声明可以选择包含在 IdP 返回的 JWT 或 JSON 对象中。

注意

您可以使用下表中的某些参数使用:或者-. 例如,您可以使用指定工作线程所属组sagemaker:groups要么sagemaker-groups在申请中。

名称 必填 接受的格式和值 说明 示例

sagemaker:groups 或者 sagemaker-groups

数据类型

如果工作人员属于单个组,请使用字符串识别该组。

如果工作线程属于多个组,请使用最多包含 10 个字符串的列表。

允许使用的字符

正则表达式:[\ p {L}\ p {M}\ p {N}\ p {L}\ p {P} +

配额

每个工作人员 10 组

每组名称 63 个字符

将工作线程分配给一个或多个组。组用于将工作人员映射到工作团队中。

属于单个组的工作人员示例:"work_team1"

属于多个组的工作人员的示例:["work_team1", "work_team2"]

sagemaker:sub 或者 sagemaker-sub

数据类型

字符串

这对于在 Ground Truth 平台内跟踪员工身份进行审计以及识别该员工处理的任务是必需的。

对于 ADFS:客户必须使用主安全标识符 (SID)。

"111011101-123456789-3687056437-1111"

sagemaker:client_id 或者 sagemaker-client_id

数据类型

字符串

允许使用的字符

正则表达式:[\ w+-] +

QUOTE

128 个字符

客户端 ID。必须为此客户端 ID 发放所有令牌。

"00b600bb-1f00-05d0-bd00-00be00fbd0e0"

sagemaker:name 或者 sagemaker-name

数据类型

字符串

要在工作人员门户中显示的工作人员姓名。

"Jane Doe"

email

数据类型

字符串

工作线程电子邮件。Ground Truth 使用此电子邮件通知员工他们已被邀请从事贴标任务。如果您为该工作人员所在的工作团队设置 Amazon SNS 主题,Ground Truth 还将使用此电子邮件在标签任务可用时通知您的员工。

"example-email@domain.com"

email_verified

数据类型

Bool

接受的值

True, False

指示用户电子邮件是否已验证。

True

以下是 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 将将工作人员重定向到工作人员门户,员工可以在其中访问标签或人工审核任务。要创建员工门户网址,您需要使用CreateWorkforceAPI 操作。具体来说,您必须使用所需的自定义 sagemaker 声明配置 OIDC IdP(有关更多详细信息,请参阅下一节)。因此,建议您使用占位符重定向 URI 配置 OIDC,然后在创建员工后更新 URI。请参阅创建 OIDC IdP 人力了解如何使用此 API 创建员工队伍。

您可以在 SageMaker Ground Truth 控制台,或者使用 SageMaker API 操作,DescribeWorkforce. 工作人员门户网址位于SubDomain响应中的参数。

重要

确保将员工子域添加到 OIDC IdP 允许列表中。当你将子域添加到允许列表时,它必须以/oauth2/idpresponse.

要在创建私人员工队伍后查看员工门户网址 (控制台):

  1. 打开 SageMaker 控制台https://console.aws.amazon.com/sagemaker/.

  2. 在导航窗格中,选择 Labeling workforces (标记人力)

  3. 选择 Private (私有) 选项卡。

  4. In私人劳动力总结你会看到为门户登录 URL 添加标记. 这是你的工作人员门户网址。

要在创建私人员工队伍 (API) 后查看员工门户网址:

当您使用创建私有人力时使用CreateWorkforce,您可以指定WorkforceName. 用这个名字来打电话DescribeWorkforce. 下表包含使用Amazon CLI和Amazon SDK for Python (Boto3).

SDK for Python (Boto3)
response = client.describe_workforce(WorkforceName='string') print(f'The workforce subdomain is: {response['SubDomain']}')
Amazon CLI
$ C:\> describe-workforce --workforce-name 'string'

验证您的 OIDC IdP 员工身份验证响应

创建 OIDC IdP 人力后,您可以使用以下步骤使用 cURL 验证其身份验证工作流程。此过程假定你有权访问终端,并且你已安装了 cURL。

要验证 OIDC IdP 授权响应:

  1. 使用如下配置的 URI 获取授权码:

    {AUTHORIZE ENDPOINT}?client_id={CLIENT ID}&redirect_uri={REDIRECT URI}&scope={SCOPE}&response_type=code
    1. Replace{AUTHORIZE ENDPOINT}使用 OIDC IdP 的授权终端节点。

    2. Replace{CLIENT ID}使用 OAuth 客户端的客户端 ID。

    3. Replace{REDIRECT URI}使用工作人员门户网址。如果尚未存在,则必须添加/oauth2/idpresponse到 URL 的末尾。

    4. 如果你有自定义范围,请用它来替换{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
  2. 将步骤 1 中修改的 URI 复制并粘贴到浏览器中,然后按键盘上的 Enter 键。

  3. 使用 IdP 进行身份验证。

  4. 在 URI 中复制身份验证码查询参数。这个参数存在code=. 以下是响应具体形式的示例。在此示例中,复制code=MCNYDB...以及之后的一切。

    https://example.labeling.sagemaker.aws/oauth2/idpresponse?code=MCNYDB....
  5. 在进行下面列出的必要修改后,打开终端并输入以下命令:

    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}'
    1. Replace{TOKEN ENDPOINT}使用 OIDC IdP 的令牌终端节点。

    2. Replace{CLIENT ID}使用 OAuth 客户端的客户端 ID。

    3. Replace{CLIENT SECRET}使用 OAuth 客户端提供的客户机密。

    4. Replace{CODE}使用您在步骤 4 中复制的身份验证码查询参数。

    5. 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'
  6. 此步取决于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 粘贴到编码框来解码它。

      确保解码响应包含以下内容:

  7. 在终端中,在进行下面列出的必要修改后输入以下命令:

    curl -X POST -H 'Authorization: Bearer {ACCESS TOKEN}' -d '' -k -v {USERINFO ENDPOINT}
    1. Replace{USERINFO ENDPOINT}使用 OIDC IdP 的用户信息终端节点。

    2. Replace{ACCESS TOKEN}在步骤 7 中收到的响应中使用访问令牌。这是的条目"access_token"参数。

    以下是进行上述修改后 cURL 请求的示例:

    curl -X POST -H 'Authorization: Bearer eyJ0eX...' -d '' -k -v https://example.com/userinfo
  8. 对上述过程中最后一步的响应可能类似于以下代码块。

    如果access_token在步骤 6 中返回的是纯文本,您必须验证此响应是否包含所需信息。在此情况下,响应必须包含必需 SageMaker 表格中的索赔向 Ground Truth 和亚马逊 A2I 发送必填和可选索赔. 例如,sagemaker-groupssagamaker-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 管理私人劳动力”。