如何在 Amazon Cognito 用户群体中将 Okta 设置为 SAML 身份提供者?

3 分钟阅读
0

我想在 Amazon Cognito 用户群体中使用 Okta 作为安全声明标记语言 2.0(SAML 2.0)身份提供者(IdP)。

简述

Amazon Cognito 用户群体允许通过第三方(联合身份验证)登录,包括通过 Okta 这样的 IdP 登录。有关更多信息,请参阅添加用户群体第三方登录向用户群体添加 SAML 身份提供者

与 Okta 集成的用户群体允许您的 Okta 应用程序中的用户从 Amazon Cognito 获取用户群体令牌。有关更多信息,请参阅将令牌与用户群体结合使用

解决方案

创建一个包含应用程序客户端和域名的 Amazon Cognito 用户群体

  1. 创建用户群体
    注意:在创建过程中,默认选择标准属性电子邮件。有关更多信息,请参阅用户群体属性
  2. 在您的用户群体中创建一个应用程序客户端。有关更多信息,请参阅添加应用程序客户端并设置托管 UI
    注意:在添加应用程序客户端时,取消选中生成客户端密钥复选框。在某些授权流程中,例如授权码授予流程和令牌刷新流程,授权服务器会使用应用程序客户端密钥来授权客户端代表用户发出请求。如果此设置中使用了隐式授权流程,则不需要应用程序客户端密钥。
  3. 为您的用户群体添加域名

注册 Okta 开发者账户

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

  1. Okta Developer 注册网页上,输入所需信息,然后选择 SIGN UP。Okta Developer 团队会向您提供的电子邮件地址发送一封验证电子邮件。
  2. 在验证电子邮件中,找到您账户的登录信息。选择 ACTIVATE MY ACCOUNT,登录,然后完成创建账户。

在 Okta 中创建 SAML 应用程序

  1. 打开 Okta Developer Console。有关更多信息,请参阅 Okta 网站上的 Okta's Redesigned Admin Console and Dashboard
  2. 在导航菜单中,展开 Applications,然后选择 Applications
  3. 选择 Create App Integration
  4. Create a new app integration 菜单中,选择 SAML 2.0 作为 Sign-in method
  5. 选择 Next

有关更多信息,请参阅 Okta Developer 网站上的 Build a Single Sign-On (SSO) Integration 指南中的 Prepare a SAML integration

为您的 Okta 应用程序配置 SAML 集成

  1. Create SAML Integration 页面的 General Settings 下,输入应用程序的名称。
  2. (可选)上传徽标并选择应用程序的可见性设置。
  3. 选择 Next
  4. GENERAL 下,在 Single sign on URL 中,输入 https://yourDomainPrefix.auth.region.amazoncognito.com/saml2/idpresponse
    注意:请将 yourDomainPrefixregion 替换为您的用户群体的值。您可以在 Amazon Cognito 控制台域名页面上找到您的用户群体的这些值。
  5. 对于 Audience URI (SP Entity ID),输入 urn:amazon:cognito:sp:yourUserPoolId
    注意:yourUserPoolId 替换为您的 Amazon Cognito 用户群体 ID。您可以在 Amazon Cognito 控制台的常规设置页面上找到您的用户群体的此值。
  6. ATTRIBUTE STATEMENTS (OPTIONAL) 中,添加一条包含以下信息的声明:
    Name 中,输入 SAML 属性名称 http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
    Value 中,输入 user.email
  7. 对于页面上的所有其他设置,请将它们保留为默认值,或根据您的偏好进行设置。
  8. 选择 Next
  9. 为 Okta 支持选择一个反馈回复。
  10. 选择 Finish

有关更多信息,请参阅 Okta Developer 网站上的 Build a Single Sign-On (SSO) Integration 指南中的 Create your integration

为您的 Okta 应用程序分配一个用户

  1. 在 Okta 应用程序的 Assignments 选项卡上,为 Assign 选择 Assign to People
  2. 选择您要分配的用户旁边的 Assign
    **注意:**如果这是一个新账户,则唯一可用的选项是选择自己(管理员)作为用户。
  3. (可选)在 User Name 中,输入用户名,或根据需要将其保留为用户的电子邮件地址。
  4. 选择 Save and Go Back。您的用户已分配。
  5. 选择 Done

有关更多信息,请参阅 Okta Developer 网站上的 Build a Single Sign-On (SSO) Integration 指南中的 Assign users

获取您的 Okta 应用程序的 IdP 元数据

在 Okta 应用程序的 Sign On 选项卡上,找到 Identity Provider metadata 超链接。右键单击超链接,然后复制 URL。

有关更多信息,请参阅 Okta Developer 网站上的 Build a Single Sign-On (SSO) Integration 指南中的 Specify your integration settings

在您的用户群体中将 Okta 配置为 SAML IdP

  1. Amazon Cognito 控制台中,选择管理用户群体,然后选择您的用户群体。
  2. 在左侧导航窗格中的联合身份验证下,选择身份提供者
  3. 选择 SAML
  4. 元数据文档下,粘贴您复制的身份提供者元数据 URL。
  5. 提供者名称中,输入 Okta。有关更多信息,请参阅选择 SAML 身份提供者名称
  6. (可选)输入任何 SAML 标识符(标识符(可选)),当您的用户从用户群体注销时,激活 IdP(Okta)注销。
  7. 选择创建提供者

有关更多信息,请参阅为用户群体创建和管理 SAML 身份提供者(AWS 管理控制台)

将电子邮件地址从 IdP 属性映射到用户群体属性

  1. Amazon Cognito 控制台中,选择管理用户群体,然后选择您的用户群体。
  2. 在左侧导航窗格中的联合身份验证下,选择属性映射
  3. 在属性映射页面上,选择 SAML 选项卡。
  4. 选择添加 SAML 属性
  5. 对于 SAML 属性,输入 SAML 属性名称 http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
  6. 用户群体属性中,从列表中选择电子邮件

有关更多信息,请参阅为您的用户群体指定身份提供者属性映射

更改用户群体的应用程序客户端设置

  1. Amazon Cognito 控制台中,选择管理用户群体,然后选择您的用户群体。
  2. 在左侧导航窗格的应用程序集成下,选择应用程序客户端设置
  3. 在应用程序客户端页面上,执行以下操作:
    启用的身份提供者下,选中 OktaCognito 用户群体复选框。
    对于回调 URL,请输入您希望用户登录后被重定向到的 URL。要进行测试,请输入任何有效的 URL,例如 https://www.example.com/
    注销 URL 中,输入您希望用户在注销后被重定向到的 URL。要进行测试,请输入任何有效的 URL,例如 https://www.example.com/
    允许的 OAuth 流程下,确保至少选中隐式授权复选框。
    允许的 OAuth 范围下,确保至少选中电子邮件openid 复选框。
  4. 选择保存更改

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

构建端点 URL

使用用户群体中的值,构建此登录端点 URL:https://yourDomainPrefix.auth.region.amazoncognito.com/login?response_type=token&client_id=yourClientId&redirect_uri=redirectUrl

请务必执行以下操作:

  • 请将 yourDomainPrefixregion 替换为您的用户群体的值。您可以在 Amazon Cognito 控制台域名页面上找到您的用户群体的这些值。
  • yourClientId 替换为应用程序客户端的 ID,并将 redirectUrl 替换为应用程序客户端的回调 URL。您可以在 Amazon Cognito 控制台的应用程序客户端设置页面上找到您的用户群体的这些值。

有关更多信息,请参阅如何为 Amazon Cognito 配置托管 Web UI?登录端点

测试端点 URL

  1. 在 Web 浏览器中输入构建的登录端点 URL。
  2. 在您的登录端点网页上,选择 Okta
    **注意:**如果您被重定向到应用程序客户端的回调 URL,则表示您已经在浏览器中登录了 Okta 账户。用户群体令牌会显示在 Web 浏览器地址栏的 URL 中。
  3. 在 Okta 的 Sign In 页面上,输入您分配给应用程序用户的用户名和密码。
  4. 点击 Sign in

登录后,您将被重定向到应用程序客户端的回调 URL。用户群体令牌会显示在 Web 浏览器地址栏的 URL 中。

(可选)跳过 Amazon Cognito 托管 UI

如果您希望用户在登录您的应用程序时跳过 Amazon Cognito 托管 Web UI,请改用以下端点 URL:

https://yourDomainPrefix.auth.region.amazoncognito.com/oauth2/authorize?response_type=token&identity_provider=samlProviderName&client_id=yourClientId&redirect_uri=redirectUrl&scope=allowedOauthScopes

请务必执行以下操作:

  • 请将 yourDomainPrefixregion 替换为您的用户群体的值。您可以在 Amazon Cognito 控制台域名页面上找到您的用户群体的这些值。
  • samlProviderName 替换为用户群体中 SAML 提供者的名称(Okta)。
  • (可选)如果您之前在**标识符(可选)**字段中为 SAML IdP 添加了标识符,请将 identity_provider=samlProviderName 替换为 idp_identifier=idpIdentifier,将 idpIdentifier 替换为您的自定义标识符字符串。
  • yourClientId 替换为应用程序客户端的 ID,并将 redirectUrl 替换为应用程序客户端的回调 URL。您可以在 Amazon Cognito 控制台的应用程序客户端设置页面上找到您的用户群体的这些值。
  • allowedOauthScopes 替换为您希望 Amazon Cognito 应用程序客户端请求的特定范围。例如,scope=email+openid

有关更多信息,请参阅如何为 Amazon Cognito 配置托管 Web UI?授权端点

相关信息

SAML 用户群体 IdP 身份验证流程

如何为 Amazon Cognito 用户群体设置第三方 SAML 身份提供者?

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

AWS 官方
AWS 官方已更新 6 个月前