跳至内容

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

3 分钟阅读
0

我想在用户池中将 Okta 配置为 SAML 2.0 身份提供者 (IdP),以便我的应用程序用户从 Amazon Cognito 获取令牌。

简短描述

Okta SAML IdP 与 Amazon Cognito 的集成需要在两个平台上进行配置。首先,在 Okta 中创建和配置 SAML 应用程序集成。然后,将 Okta 作为 IdP 添加到您的 Amazon Cognito 用户池中,并配置应用程序客户端设置以允许 Okta 身份验证。设置完成后,最佳做法是测试身份验证流程,确认用户在通过 Okta 登录后能够收到来自 Amazon Cognito 的令牌

解决方法

在将 Okta 配置为 SAML IdP 之前,请执行以下操作:

(可选)注册 Okta 开发者账户

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

完成以下步骤:

  1. 在 Okta Developer 网站上打开 Okta Developer signup(Okta Developer 注册)页面。
  2. 输入所需信息,然后选择 Sign up(注册)。Okta 会向您提供的电子邮件地址发送一封验证电子邮件。
  3. 从验证电子邮件中,查找您账户的登录信息。
  4. 选择 Activate account(激活账户),然后登录以完成账户创建。

创建 SAML 应用程序并为 Okta 应用程序配置 SAML 集成

完成以下步骤:

  1. 打开 Okta Developer 控制台
  2. 在导航窗格中,展开 Applications(应用程序),然后选择 Applications(应用程序)。
  3. 选择 Create app integration(创建应用程序集成)。
  4. Create a new app integration(创建新的应用程序集成)菜单中,对于 Sign-in method(登录方法),选择 SAML 2.0
  5. 选择 Next(下一步)。
  6. Create SAML Integration(创建 SAML 集成)页面的 General Settings(常规设置)下,输入应用程序的名称。
  7. (可选)上传徽标并选择应用程序的可见性设置。
  8. 选择 Next(下一步)。
  9. SAML Settings(SAML 设置)下,对于 Single sign on URL(单点登录 URL),输入 https://yourDomainPrefix.auth.region.amazoncognito.com/saml2/idpresponse
    **注意:**请将 yourDomainPrefixregion 替换为用户池的值。要查找这些值,请打开 Amazon Cognito 控制台,然后从 Branding(品牌)部分选择 Domain(域)。
  10. 对于 Audience URI (SP Entity ID)(受众 URI(SP 实体 ID)),输入 urn:amazon:cognito:sp:yourUserPoolId
    **注意:**请将 yourUserPoolId 替换为您的用户池 ID。要查找用户池 ID,请查看 Amazon Cognito 控制台上的 Overview(概览)部分。
  11. Attribute Statements (optional)(属性声明(可选))中,添加一条声明并使用以下信息:
    对于 Name(名称),输入 SAML 属性名称 http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
    对于 Value(值),输入 user.email
    对于页面上的其他设置,请使用默认值或根据您的要求进行调整。
  12. 选择 Next(下一步)。
  13. 出现提示时,选择有关应用程序设置体验的反馈响应。
    **注意:**这是 Okta 标准应用程序创建流程的一部分,用于收集用户体验反馈。
  14. 选择 Finish(完成)。

为 Okta 应用程序分配用户

完成以下步骤:

  1. 在 Okta 应用程序的 Assignments(分配)选项卡上,对于 Assign(分配),选择 Assign to People(分配给人员)。
  2. 选择要分配用户旁边的 Assign(分配)。
    **注意:**如果是新账户,则只能选择自己作为用户。
  3. (可选)对于 User Name(用户名称),输入自定义用户名。如果您未指定用户名,Okta 会使用用户的电子邮件地址作为用户名。
  4. 选择 Save and Go Back(保存并返回)以完成用户分配。
  5. 选择 Done(完成)。

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

在 Okta 应用程序的 Sign On(登录)选项卡上,在 Metadata details(元数据详细信息)下复制 Metadata URL(元数据 URL)。

在用户池中将 Okta 配置为 SAML IdP

完成以下步骤:

  1. 打开 Amazon Cognito 控制台
  2. 选择您的用户池。
  3. 在导航窗格的 Authentication(身份验证)下,选择 Social and external providers(社交和外部提供商)。
  4. 选择 Add identity provider(添加身份提供者),然后选择 SAML
  5. Register your app with your SAML provider(向 SAML 提供者注册应用程序)下,对于 Provider name(提供者名称),输入 Okta
  6. (可选)为 Okta 添加用于路由登录和注销请求的 SAML 标识符
  7. (可选)激活 single logout(单点注销),以便在用户注销用户池时同步注销 Okta。
  8. Metadata document source(元数据文档源)下,选择 Enter metadata document endpoint URL(输入元数据文档端点 URL),然后粘贴从 Okta **Sign On **(登录)选项卡复制的 Metadata URL(元数据 URL)。
  9. Map attributes between your SAML provider and your user pool(在 SAML 提供者和用户池之间映射属性)下,为 SAML attribute(SAML 属性)指定 email
  10. 选择 Add identity provider(添加身份提供者)。

有关详细信息,请参阅在用户池中添加和管理 SAML 身份提供商

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

完成以下步骤:

  1. Amazon Cognito 控制台App clients(应用程序客户端)下,选择您的用户池。
  2. 在导航窗格的 Applications(应用程序)下,选择 App clients(应用程序客户端)。
  3. 在应用程序客户端页面上,导航到 Login pages(登录页面)部分。然后,在 Managed login pages configuration(管理登录页面配置)下,选择 Edit(编辑)。
  4. Identity Providers(身份提供者)下拉列表中,选择 OktaCognito User Pool(Cognito 用户池)。
    对于 Callback URL(s)(回调 URL),指定用户成功登录后的目标 URL。
    对于 Sign out URL(s)(注销 URL),指定用户注销后的目标 URL。
    **注意:**如果您想测试集成,请使用占位符 URL,如 https://www.example.com/。之后可以使用应用程序的 URL 更新此占位符。
    Allowed OAuth Flows(允许的 OAuth 流)下,选择 Implicit grant(隐式授予)。
    Allowed OAuth Scopes(允许的 OAuth 范围)下,选择 emailopenid
  5. 选择 Save changes(保存更改)。

有关详细信息,请参阅应用程序客户端术语

访问登录页面以测试 SAML 身份验证流程

您可以通过 Amazon Cognito 控制台访问登录页面,也可以创建登录端点 URL。

  1. Amazon Cognito 控制台App clients(应用程序客户端)下,选择您的用户池。
  2. 选择 Login pages(登录页面)选项卡,然后选择 View login page(查看登录页面)。
    -or-
    创建登录端点 URL。要创建登录端点,请使用以下命名模式:
    https://yourDomainPrefix.auth.region.amazoncognito.com/login?response_type=token&client_id=yourClientId&redirect_uri=redirectUrl
    **注意:**请将 yourDomainPrefixregion 替换为用户池的值。要在 Amazon Cognito 控制台中查找这些值,请选择 Domain name(域名)页面。
  3. 在登录端点网页上,选择 Okta
    **注意:**如果系统将您重定向到应用程序客户端的回调 URL,则表示您已经登录了 Okta 账户。继续执行步骤 5。
  4. 在 Okta Sign In(登录)页面上,输入您分配给应用程序用户的用户名和密码。
  5. 选择 Sign in(登录)。
  6. 在浏览器的地址栏中查找用户池令牌。

(可选)绕过 Amazon Cognito 托管 UI

要绕过 Amazon Cognito 托管 Web UI 并将用户直接发送到 Okta 进行登录,请使用以下 /oauth2/authorize 端点 URL:

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

注意:请将yourDomainPrefixregionsamlProviderNameyourClientIdredirectUrl 以及 allowedOauthScopes 替换为您的值。要查找 yourDomainPrefixregion,请从 Amazon Cognito 控制台Branding(品牌)部分选择 Domain(域)。对于 yourClientIdredirectUrl,选择 Amazon Cognito 控制台中的 App client(应用程序客户端)设置页面。

(可选)如果您添加了 SAML 标识符,请将占位符identity_provider=samlProviderName 替换为 idp_identifier=idpIdentifier。将 idpIdentifier 替换为您的自定义标识符字符串。

相关信息

在 Amazon Cognito 用户池中启动 SAML 会话

如何使用 Amazon Cognito 用户池设置第三方 SAML 身份提供者?

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

使用第三方身份提供者登录用户池

AWS 官方已更新 5 个月前