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

上次更新日期:2021 年 6 月 23 日

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

简短描述

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

要将 OneLogin 设置为 SAML IdP,您需要一个 Amazon Cognito 用户池和一个带有应用程序的 OneLogin 账户。

解决方法

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

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

注意:创建用户池时,系统会默认选择标准属性 email。有关用户池属性的更多信息,请参阅配置用户池属性

创建 OneLogin 账户

有关更多信息,请参阅 OneLogin 网站,从中选择 Start a free trial (开始免费试用)

在账户创建页面的 Your OneLogin Domain (您的 OneLogin 域) 下,记下 OneLogin 提供的域。

创建 OneLogin 应用程序

1.    在 OneLogin 门户页面 (https://your-new-domain.onelogin.com/portal/) 上,选择 Administration

2.    在“Administration”页面顶部,暂停在 Apps 处,然后选择 Add apps

3.    在 Find Applications 下方的搜索栏中,输入 saml,然后选择 SAML Test Connector (IdP),打开 Add SAML Test Connector (IdP) 页面。

4.    (可选)执行以下任何操作:
对于 Display Name,输入名称和描述。例如,Cognito Setup (IdP)
对于 Rectangular IconSquare Icon,根据页面上的规范上传缩略图图标。
对于 Description,输入简短的摘要描述。例如,For Amazon Cognito user pool(用于 Amazon Cognito 用户池)

5.    选择 Save (保存)。

编辑您的 OneLogin 应用程序配置

1.    选择 Configuration

2.    在 Configuration 页面上,执行以下操作:
对于 RelayState,输入任何有效的 URL,如 https://www.example.com
对于 Audience,输入 urn:amazon:cognito:sp:yourUserPoolId
Recipient 留空。
对于 ACS (Consumer) URL Validator,输入 https://yourDomainPrefix.auth.region.amazoncognito.com/saml2/idpresponse
对于 ACS (Consumer) URL,输入 https://yourDomainPrefix.auth.region.amazoncognito.com/saml2/idpresponse
Single Logout URL 留空。

注意:对于 Audience,请将 yourUserPoolId 替换为您的 Amazon Cognito 用户池 ID。在 Amazon Cognito 控制台中可以找到该 ID,它位于您的用户池管理页面的 General settings (常规设置) 选项卡中。

对于 ACS (Consumer) URL ValidatorACS (Consumer) URL,请将 yourDomainPrefixregion 替换为您的用户池的对应值。在 Amazon Cognito 控制台中可以找到这些值,它们位于您的用户池管理页面的 Domain name (域名) 选项卡中。

编辑您的 OneLogin 应用程序参数

1.    选择 Parameters

注意:此处已经列出了一个参数 (NameID (fka Email)) – 这符合预期。

2.    选择 Add parameter 以创建新的自定义参数。

3.    在 New Field 对话框的 Field name 中,输入 http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier

4.    对于 Flags,选中 Include in SAML assertion 复选框。

5.    选择 Save(保存)。

6.    对于 Value,从列表中选择 Email

7.    选择 Save (保存)

复制您的 OneLogin 应用程序的 IdP 元数据

1.    选择 SSO

2.    在 Issuer URL 下,将 URL 复制到剪贴板。

3.    选择 Save (保存) 将保存对您的 OneLogin 应用程序所做的全部更改。

在 Amazon Cognito 中将 OneLogin 配置为 SAML IdP

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

创建 SAML IdP 时,对于 Metadata document (元数据文档),请粘贴您之前复制的 Issuer URL (发布者 URL)

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

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

属性映射下添加 SAML 属性时,对于 SAML 属性,请输入 http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier。对于 User pool attribute (用户池属性),请从列表中选择 Email (电子邮件)

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

注意:这是用于测试目的的示例设置。对于生产设置,最佳做法是为您的应用客户端设置使用授权代码授权 OAuth 流。使用该流时,在重定向 URL 中进行身份验证后,您将收到一个授权代码。您必须通过向令牌终端节点发出请求来交换 JSON Web 令牌 (JWT) 的授权代码。

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

2.    选择 Save changes (保存更改)

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

测试登录终端节点

1.    在浏览器中,输入 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.    选择 OneLogin

注意:如果您被重定向至您的应用程序客户端的回调 URL,则表示您已经在浏览器中登录您的 OneLogin 账户。所有内容都已正确设置。

3.    在 OneLogin 页面上,对于 Username,请输入您的 OneLogin 账户用户名。

4.    选择 Continue

5.    对于 Password,输入您的 OneLogin 账户密码。

6.    选择 Continue

如果您被重定向到您的应用程序客户端的回调 URL,则表示所有内容都已正确设置。