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

3 分钟阅读
0

我想在 Amazon Cognito 用户池中将 Auth0 设置为 SAML 2.0 身份提供者 (IdP)。

简短描述

您必须有一个包含应用程序客户端和域名的 Cognito 用户池,以及一个包含 Auth0 应用程序的 Auth0 账户。有关详细信息,请参阅通过第三方身份提供者登录用户池在用户池中使用 SAML 身份提供者

解决方法

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

有关信息,请参阅以下 AWS 文档:

注册 Auth0 账户

如果您还没有 Auth0 账户,请在 Auth0 Sign Up 网站上注册一个。

创建 Auth0 应用程序

完成以下步骤:

  1. Auth0 Dashboard 上,选择 Applications,然后选择 Create Application
  2. Create Application 框中,输入应用程序的名称,例如 My App
  3. Choose an application type 下,选择 Single Page Web Applications
  4. 选择 Create

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

完成以下步骤:

  1. Auth0 Dashboard 的导航窗格中,选择 User Management,然后选择 Users
  2. 选择 Create Your First UserCreate User
  3. Create user 框中,输入测试用户的电子邮件和密码。
  4. 选择 Save

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

完成以下步骤:

  1. Auth0 Dashboard 的导航窗格中,选择 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 替换为您的用户池的域前缀和 AWS 区域。您可以在用户池的 Management(管理)页面的 Domain name(域名)选项卡中找到这些内容。或者,输入类似于 https//yourCustomDomain/saml2/idpresponse自定义域回调 URL。
  5. Settings 下,对于 audience,删除注释分隔符 (//),并将默认值 urn:foo 替换为 urn:amazon:cognito:sp:yourUserPoolId
    **注意:**请将 yourUserPoolId 替换为您的 Cognito 用户池 ID。您可以在用户池的 Management(管理)页面的 General settings(常规设置)选项卡中找到该 ID。
  6. 对于 mappingsemail,删除注释分隔符 (//)。删除您的用户池所需的任何其他用户属性
  7. 对于 nameIdenetifierFormat,删除注释分隔符 (//)。将默认值 urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified 替换为 urn:oasis:names:tc:SAML:2.0:nameid-format:persistent
  8. (可选)选择 Debug。要确认配置是否有效,请以测试用户身份登录。
  9. 选择 Enable,然后选择 Save

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

Addon: SAML2 Web App 框的 Usage 选项卡中,找到 Identity Provider Metadata。选择 download,然后记下 URL。或者,选择 download 以下载 .xml 元数据文件。

在 Cognito 中将 Auth0 配置为 SAML IdP

在创建 SAML IdP 时,对于 Metadata document(元数据文档),请输入 Identity Provider Metadata(身份提供者元数据)URL 或上传 .xml 元数据文件。

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

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

对于 SAML Attribute(SAML 属性),输入 http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress。在 User pool attribute(用户池属性)中,选择 Email(电子邮件)。

有关详细信息,请参阅将 IdP 属性映射到配置文件和令牌

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

完成以下步骤:

  1. 打开 Cognito 控制台
  2. 选择您的用户池。
  3. 在用户池的 Management(管理)页面的 Applications(应用程序)下,选择 Select your desired app client(选择所需的应用程序客户端)。
  4. Login Pages(登录页面)下,编辑您的托管登录页面配置。
  5. Identity providers(身份提供者)下,选择 Auth0Cognito User Pool(Cognito 用户池)。
  6. Allowed Callback URL(s)(允许的回调 URL)中,输入您希望用户在您登录后被重定向到的 URL。要测试身份验证,您可以输入任意有效的 URL,例如 https://www.amazon.com
  7. Allowed Sign-out URL(s)(允许的注销 URL)中,输入您希望用户在您注销后被重定向到的 URL。要测试身份验证,您可以输入任意有效的 URL,例如 https://www.amazon.com
  8. Allowed OAuth Flows(允许的 OAuth 流)下,至少选择 Implicit grant(隐式授予)。
  9. Allowed OAuth Scopes(允许的 OAuth 范围)下,至少选择 email(电子邮件)和 openid
  10. 选择 Save changes(保存更改)。

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

测试登录端点

完成以下步骤:

  1. 在您的 Web 浏览器中输入 https://.auth..amazoncognito.com/login?response_type=token&client_id=&redirect_uri= URL。
  2. yourDomainPrefixregion 替换为您的用户池的值。您可以在用户池 Management(管理)页面的 Branding(品牌)下的 Domain name(域名)选项卡中找到这些值。
  3. yourClientId 替换为您的应用程序客户端的 ID,并将 redirectUrl 替换为您的应用程序客户端的回调 URL。您可以在用户池 Management(管理)页面的 Application(应用程序)下的 App client settings(应用程序客户端设置)选项卡中找到这些值。有关详细信息,请参阅托管登录登录端点:/login
  4. 选择 Auth0
    **注意:**如果您被重定向到应用程序客户端的回调 URL,则表示您已经在浏览器中登录了您的 Auth0 账户。
  5. 在 Auth0 应用程序的登录页面上,输入测试用户的电子邮件和密码。
  6. 选择 Log in

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

相关信息

了解用户池 JSON Web 令牌 (JWT)

配置第三方 SAML 身份提供者

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