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

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

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

简短描述

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

要将 OneLogin 设置为 SAML IdP,您需要 Amazon Cognito 用户池和 OneLogin 账户且其中具有应用程序。

解决方法

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

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

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

创建 OneLogin 账户

有关更多信息,请访问 OneLogin 网站,然后选择 Start a free trial

在账户创建页面的 Your OneLogin Domain 下,记下 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

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。

对于 ACS (Consumer) URL ValidatorACS (Consumer) URL,将 yourDomainPrefixregion 替换为适用于您的用户池的值。在 Amazon Cognito 控制台中,进入您的用户池管理页面,在域名选项卡上可以找到这些值。

编辑 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 身份提供商(AWS 管理控制台)。按照在用户池中配置 SAML 2.0 身份提供商下的说明执行操作。

在创建 SAML IdP 时,对于元数据文档,粘贴您复制的 Issuer URL

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

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

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

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

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

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

2.    选择保存更改

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

测试登录终端节点

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

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

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

4.    选择继续

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

6.    选择继续

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