如何在 Amazon Cognito 用户池中将 Okta 设置为 OpenID Connect 身份提供商?

上次更新时间:2019 年 12 月 20 日

我想将 Okta 用作 Amazon Cognito 用户池中的 OpenID Connect (OIDC) 身份提供商 (IdP)。该如何进行设置?

简短描述

Amazon Cognito 用户池允许通过第三方(联合身份验证)登录,包括 Okta 等 IdP。有关更多信息,请参阅通过第三方添加用户池登录向用户池添加 OIDC 身份提供商

将用户池与 Okta 集成,可让 Okta 应用程序中的用户获取来自 Amazon Cognito 的用户池令牌。有关更多信息,请参阅将令牌与用户池结合使用

解决方法

创建具有应用程序客户端和域名的 Amazon Cognito 用户池

  1. 创建用户池
    注意:在创建过程中,默认选择标准属性电子邮件。有关更多信息,请参阅配置用户池属性
  2. 在用户池中创建应用程序客户端。有关更多信息,请参阅添加应用程序以启用托管 Web UI
  3. 为用户池添加域名

注册 Okta 开发者账户

注意:如果您已有 Okta 开发者账户,请直接登录。

  1. Okta 开发者注册网页上,输入您的个人信息,然后选择开始使用。Okta 开发团队会将验证电子邮件发送到您提供的电子邮件地址。
  2. 在验证电子邮件中,找到您账户的登录信息。选择激活我的账户,登录并完成账户的创建。

创建 Okta 应用程序

  1. 打开 Okta 开发者控制台。有关控制台的更多信息,请参阅 Okta 开发者博客上的 The Okta Developer Console: All New, All You
  2. 在左上角,在开发者控制台上悬停,然后选择经典 UI。这将打开管理控制台。有关更多信息,请参阅 Okta 开发者网站的 Okta Organizations 页面上的管理员控制台部分。
  3. 快捷方式下,选择添加应用程序。或者,选择应用程序,然后选择添加应用程序
  4. 添加应用程序 页面上,选择 创建新应用程序
  5. 创建新的应用程序集成对话框中,确认平台设置为 Web
  6. 对于登录方法,选择 OpenID Connect
  7. 选择创建

为您的 Okta 应用程序配置设置

  1. 创建 OpenID Connect 集成页面的常规设置 下,输入您的应用程序名称。例如,TestApp
  2. (可选)上传徽标,然后为您的应用选择可见性设置。
  3. 配置 OPENID CONNECT 下,对于登录重定向 URI,输入 https://myUserPoolDomain/oauth2/idpresponse。Okta 通过该地址发送身份验证响应和 ID 令牌。
    注意: myUserPoolDomain 替换为您的 Amazon Cognito 用户池域。在 Amazon Cognito 控制台中的域名选项卡上,您可以找到您的用户池的域。
  4. 选择保存。您将重定向至 Okta 应用程序的常规选项卡。
  5. 常规设置下,对于允许的授予类型,确认选中授权码复选框。您的用户池使用此流与 Okta OIDC 通信以进行联合用户登录。
  6. 客户端凭证下,找到客户端 ID 客户端密钥,并记下它们以备后用。在 Amazon Cognito 用户池中配置 Okta 时,将需要这些。有关更多信息,请参阅 Okta 开发者网站上的查找您的应用程序凭证指南。
  7. 选择登录
  8. 登录选项卡上的 OpenID Connect ID 令牌下,记下发布者 URL。稍后在用户池中配置 Okta 时,也将需要此信息。

在用户池中添加 OIDC IdP

  1. Amazon Cognito 控制台中,选择管理用户池,然后选择您的用户池。
  2. 在左侧导航窗格的联合身份下,选择身份提供商
  3. 选择 OpenID Connect
  4. 执行以下操作:
    对于提供商名称,输入 IdP 的名称。此名称将显示在 Amazon Cognito 托管 Web UI 中。
    注意:您无法在创建提供商后更改此字段。如果您计划将此字段包括在您的应用程序中或使用 Amazon Cognito 托管的 Web UI,请使用一个让您的应用程序用户看得舒服的名称。
    对于客户端 ID,粘贴先前从 Okta 记下的客户端 ID
    对于客户端密钥(可选),粘贴先前从 Okta 记下的客户端密钥
    对于属性请求方法,将设置保留为 GET
    对于授权范围,输入要授权的 OIDC 范围值,以空格分隔。有关更多信息,请参阅 OpenID 网站上的 OpenID Connect 基本客户端实施指南 1.0 中的范围值部分。
    重要提示:OIDC IdP 需要 openid 范围,并且您可以根据用户池配置添加其他范围。例如,如果在创建用户池时将电子邮件保留为必填属性,请输入电子邮件 openid 以包括两个范围。您可以在此设置的后面步骤中将电子邮件属性映射到您的用户池。
    对于发布者,粘贴先前从 Okta 复制的发布者 URL。
    对于标识符(可选),您可以选择输入自定义字符串,以便稍后替代 OIDC IdP 的名称在终端节点 URL 中使用。
  5. 选择运行发现以获取 Okta 的 OIDC 配置终端节点。
  6. 选择创建提供商

有关更多信息,请参阅将 OIDC IdP 添加到您的用户池

更改您的用户池的应用程序客户端设置

  1. Amazon Cognito 控制台中,选择管理用户池,然后选择您的用户池。
  2. 在左侧导航窗格中,在应用程序集成中,选择应用程序客户端设置
  3. 在应用程序客户端页面上,执行以下操作:
    启用身份提供商下,选中 OIDC 提供商和 Cognito 用户池复选框。
    对于回调 URL,输入您希望用户在登录后被重定向至的 URL。如要进行测试,您可以输入任何有效的 URL,如 https://example.com/
    对于注销 URL,输入您希望用户在退出登录后被重定向至的 URL。如要进行测试,您可以输入任何有效的 URL,如 https://example.com/
    允许的 OAuth 流下,选择与您先前为 Okta 应用程序选择的授权类型相对应的流。
    注意:您启用的允许的 OAuth 流程可用于确定您可以将哪些值(代码令牌)用于终端节点 URL 中的 response_type 参数
    允许的 OAuth 范围下,至少选中电子邮件openid 复选框。
  4. 选择保存更改

有关更多信息,请参阅应用程序客户端设置概览

将电子邮件属性映射到用户池属性

如果您先前授权了电子邮件 OIDC 范围值,请将其映射到用户池属性。

  1. Amazon Cognito 控制台中,选择管理用户池,然后选择您的用户池。
  2. 在左侧导航窗格的联合下,选择属性映射
  3. 在“属性映射”页面上,选择 OIDC 选项卡。
  4. 如果您的用户池中有多个 OIDC 提供商,请从下拉列表中选择新提供商。
  5. 确认 OIDC 属性 sub 已映射到用户池属性 Username
  6. 选择添加 OIDC 属性,然后执行以下操作:
    对于 OIDC 属性,请输入电子邮件
    对于用户池属性,选择电子邮件

有关更多信息,请参阅指定适用于用户池的身份提供商属性映射

登录以测试您的设置

使用 Amazon Cognito 托管的 Web UI 通过 Okta 进行身份验证。成功登录后,您将被重定向至应用程序客户端的回调 URL。授权代码或用户池令牌显示在 Web 浏览器地址栏的 URL 中。

有关更多信息,请参阅使用 Amazon Cognito 托管 UI 进行注册和登录