如何使用 Amazon Cognito 用户池将 Auth0 设置为 SAML 身份提供商?

上次更新时间:2019 年 2 月 1 日

我想使用 Amazon Cognito 用户池将 Auth0 设置为安全断言标记语言 2.0 (SAML 2.0) 身份提供商 (IdP)。该如何进行设置?

简短描述

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

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

如要将 Auth0 设置为 SAML IdP,您需要一个拥有应用程序客户端和域名的 Amazon Cognito 用户池,以及一个拥有 Auth0 应用程序的 Auth0 账户。

解决方法

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

有关更多信息,请参阅以下文章:

注册 Auth0 账户

Auth0 网站Sign Up 页面上输入您的电子邮件地址和密码,开始注册。如果您已经拥有一个账户,请直接登录。

创建 Auth0 应用程序

  1. Auth0 网站的控制面板中,选择 + New Application
  2. Create Application 对话框中,输入您的应用程序的名称。例如,My App
  3. Choose an application type下,选择 Single Page Web Applications
  4. 选择 Create

为 Auth0 应用程序创建测试用户

  1. 在左侧导航栏中,选择 Users
  2. 选择 + Create Your First User。或者,如果这不是您的第一个用户,则选择 + Create User
  3. Create user 对话框中,输入该用户的电子邮件地址和密码。
  4. 选择 Save

配置应用程序的 SAML 设置

  1. 在左侧导航栏中,选择 Applications
  2. 选择您创建的应用程序的名称。
  3. Addons 选项卡上,打开 SAML2 Web App
  4. Addon: SAML2 Web App 对话框中,在 Settings 选项卡的 Application Callback URL 中输入 https://yourDomainPrefix.auth.region.amazoncognito.com/saml2/idpresponse
    注意:
    请将 yourDomainPrefixregion 替换为您的用户池的值。在 Amazon Cognito 控制台中,进入您设为用户池的管理页面,在域名选项卡上可以找到这些值。
  5. Settings 下,执行以下操作:
    对于 audience,请删除注释分隔符 (//),并将默认值 (urn:foo) 替换为 urn:amazon:cognito:sp:yourUserPoolId
    注意:
    请将 yourUserPoolId 替换为您的 Amazon Cognito 用户池 ID。在 Amazon Cognito 控制台中,进入您的用户池的管理页面,在常规设置选项卡上可以找到此 ID。
    对于 mappingsemail,请删除注释分隔符 (//)。对您的 Amazon Cognito 用户池要求的任何其他属性执行同样的操作。有关更多信息,请参阅配置用户池属性
    对于 nameIdentifierFormat,请删除注释分隔符 (//)。将默认值 (urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified) 替换为 urn:oasis:names:tc:SAML:2.0:nameid-format:persistent
  6. (可选)选择 Debug,然后以您创建的测试用户身份登录,确认配置可以正常工作。
  7. 选择 Save

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

Addon: SAML2 Web App 对话框的 Usage 选项卡中,找到 Identity Provider Metadata。然后执行以下任意一项操作:

  • 右键单击 download,然后复制 URL。
  • 选择 download 以下载 .xml metadata 文件。

在 Amazon Cognito 中将 Auth0 配置为 SAML IdP

有关更多信息,请参阅为用户池创建和管理 SAML 身份提供程序(AWS 管理控制台)。按照在用户池中配置 SAML 2.0 身份提供程序下的说明执行操作。

在创建 SAML IdP 时,对于元数据文档,可粘贴身份提供程序元数据 URL 或上传 .xml metadata 文件。

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

有关更多信息,请参阅指定适用于用户池的身份提供程序属性映射,并按照指定 SAML 提供程序属性映射下的说明执行操作。

在添加 SAML 属性时,对于 SAML 属性,请输入 http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress。对于用户池属性,请从列表中选择 email

在 Amazon Cognito 中更改应用程序客户端设置

  1. Amazon Cognito 控制台中,进入您的用户池的管理页面,在应用程序集成下,选择应用程序客户端设置。然后执行以下操作:
    启用身份提供商下,选中 Auth0Cognito 用户池复选框。
    对于回调 URL,请输入您希望用户在登录后被重定向至的 URL。如要进行测试,您可以输入任何有效的 URL,例如 https://www.amazon.com
    对于注销 URL,请输入您希望用户在退出登录后被重定向至的 URL。如要进行测试,您可以输入任何有效的 URL,例如 https://www.amazon.com
    允许的 OAuth 流程下,请务必至少选中 Implicit grant (隐式授予) 复选框。
    允许的 OAuth 范围下,请务必至少选中电子邮件openid 复选框。
  2. 选择保存更改

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

测试登录终端节点

  1. 在 Web 浏览器中输入以下 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?以及登录终端节点
  2. 选择 Auth0
    注意:
    如果您被重定向至您的应用程序客户端的回调 URL,则表示您已经在浏览器中登录您的 Auth0 账户。用户池令牌显示在 Web 浏览器地址栏的 URL 中。
  3. 在 Auth0 应用程序的登录页面中,输入您创建的测试用户的电子邮件地址和密码。
  4. 选择 Log in

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