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

上次更新时间:2021 年 7 月 16 日

我想使用 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 网站控制面板上,选择 Applications(应用程序),然后选择 Create Application(创建应用程序)。
  2. Create Application(创建应用程序)对话框中,输入您的应用程序的名称。例如,My App
  3. Choose an application type下,选择 Single Page Web Applications
  4. 选择 Create(创建)。

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

  1. 在左侧的导航栏中,选择 User Management(用户管理),然后选择 Users(用户)。
  2. 选择 + Create Your First User(创建您的第一个用户)。或者,如果这不是您的第一个用户,则选择 + Create User(创建用户)。
  3. Create user(创建用户)对话框中,输入用户的电子邮件和密码。
  4. 选择 Save(保持)。

配置应用程序的 SAML 设置

  1. 在左侧导航栏中,选择 Applications(应用程序)。
  2. 选择您创建的应用程序的名称。
  3. Addons(插件)选项卡上,打开 SAML2 Web App(SAML2 Web 应用程序)。
  4. Addon: SAML2 Web App(插件:SAML2 Web 应用程序)对话框的 Settings(设置)选项卡上,对于 Application Callback URL(应用程序回调 URL),输入 https://yourDomainPrefix.auth.region.amazoncognito.com/saml2/idpresponse
    注意:请将 yourDomainPrefixregion 替换为您用户池的值。在 Amazon Cognito 控制台中,进入您设为用户池的管理页面,在 Domain name(域名)选项卡上可以找到这些值。
    –或者–
    输入类似于以下内容的自定义域回调 URL:https//yourCustomDomain/saml2/idpresponse。有关详细信息,请参阅将自定义域添加到用户池
  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. 选择 File(文件),然后选择 Save(保存)。

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

Addon: SAML2 Web App(插件: SAML2 Web 应用程序)对话框的 Usage(使用情况)选项卡中,找到 Identity Provider Metadata(身份提供商元数据)。然后执行以下任意一项操作:

  • 右键单击 download,然后复制 URL。
  • 选择 download(下载)以下载 .xml 元数据文件。

在 Amazon Cognito 中将 Auth0 配置为 SAML IdP

有关更多信息,请参阅为用户池创建和管理 SAML 身份提供商。按照在您的用户池中配置 SAML 2.0 身份提供商下的说明操作。

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

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

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

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

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

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

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

测试登录终端节点

  1. 在 Web 浏览器中,输入此 URL:https://<yourDomainPrefix>.auth.<region>.amazoncognito.com/login?response_type=token&client_id=<yourClientId>&redirect_uri=<redirectUrl>
    注意:请将 yourDomainPrefixregion 替换为您用户池的值。在 Amazon Cognito 控制台中,进入您设为用户池的管理页面,在 Domain name(域名)选项卡上可以找到这些值。
    yourClientId 替换为您的应用程序客户端的 ID,并将 redirectUrl 替换为您的应用程序客户端的回调 URL。在 Amazon Cognito 控制台中可以找到这些值,它们位于您的用户池管理页面的 App client settings(应用程序客户端设置)选项卡中。
    有关更多信息,请参阅如何为 Amazon Cognito 配置托管 Web UI?以及登录终端节点
  2. 选择 Auth0
    注意:如果您被重定向至您的应用程序客户端的回调 URL,则表示您已经在浏览器中登录您的 Auth0 账户。用户池令牌显示在 Web 浏览器地址栏的 URL 中。
  3. 在 Auth0 应用程序的登录页面中,输入您创建的测试用户的电子邮件地址和密码。
  4. 选择 Log in

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