如何使用 Amazon Cognito 用户池将 OneLogin 设置为 SAML 身份提供商?
我希望使用 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 网站,然后选择 Free trial(免费试用)。
- 在账户创建页面的 Your OneLogin Domain(您的 OneLogin 域)下,记下 OneLogin 提供的域。
创建 OneLogin 应用程序
- 在 OneLogin 门户页面 (https://your-new-domain.onelogin.com/portal/) 上,选择 Administration(管理)。
- 在 Administration(管理)页面上,将鼠标悬停在 Apps(应用程序)上,然后选择 Add apps(添加应用程序)。
- 在 Find Applications(查找应用程序)下的搜索栏中,输入 saml,然后选择 SAML Test Connector (IdP)(SAML 测试连接器 (IdP))。打开 Add SAML Test Connector (IdP)(添加 SAML 测试连接器 (IdP))页面。
- (可选)在 Add SAML Test Connector (IdP)(添加 SAML 测试连接器 (IdP))页面上,执行以下所有步骤:
在 Display Name(显示名称)中,输入名称和描述。例如,Cognito 设置 (IdP)。
对于矩形图标和方形图标,请根据页面上的规范上传缩略图图标。
对于 Description(描述),输入简短的概述。例如,用于 Amazon Cognito 用户池。 - 选择 Save(保存)。
编辑 OneLogin 应用程序配置
- 在 OneLogin 门户页面 (https://your-new-domain.onelogin.com/portal/) 上,选择 Configuration(配置)。
- 在 Configuration(配置)页面上,完成以下步骤:
对于 RelayState,输入有效的 URL,如 https://www.example.com。
对于 Audience(受众),输入 urn:amazon:cognito:sp:yourUserPoolId。
对于 Recipient(接收者),输入 https://yourDomainPrefix.auth.region.amazoncognito.com/saml2/idpresponse。
对于 ACS (Consumer) URL Validator(ACS(使用者)URL 验证器),输入 https://yourDomainPrefix.auth.region.amazoncognito.com/saml2/idpresponse。
对于 ACS (Consumer) URL(ACS(使用者)URL),输入 https://yourDomainPrefix.auth.region.amazoncognito.com/saml2/idpresponse。
对于 Single Logout URL(单点注销 URL),请将该字段留空。
**注意:**对于 Audience(受众),请将 yourUserPoolId 替换为您的 Amazon Cognito 用户池 ID。在 Amazon Cognito 控制台中可以找到该 ID,它位于您的用户池管理页面的 General settings(常规设置)选项卡中。
对于 ACS (Consumer) URL Validator(ACS(使用者)URL 验证器)和 ACS (Consumer) URL(ACS(使用者)URL),请将 yourDomainPrefix 和 region 替换为您的用户池对应的值。在 Amazon Cognito 控制台中可以找到这些值,它们位于您的用户池管理页面的 Domain name(域名)选项卡中。
编辑 OneLogin 应用程序的参数
- 在 OneLogin 门户页面 (https://your-new-domain.onelogin.com/portal/) 上,选择 Parameters(参数)。
**注意:**Parameters(参数)页面会默认列出参数 NameID (fka Email)。 - 要创建新的自定义参数,请选择 Add parameter(添加参数)。
- 在 New Field(新建字段)对话框的 Field name(字段名称)中,输入 http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier。
- 对于 Flags(标志),选中 Include in SAML assertion(包含在 SAML 断言中)复选框。
- 选择 Save(保存)。
- 对于 Value(值),从列表中选择 Email(电子邮件)。
- 选择 Save(保存)。
复制 OneLogin 应用程序的 IdP 元数据
- 在 OneLogin 门户页面 (https://your-new-domain.onelogin.com/portal/) 上,选择 SSO。
- 在 Issuer URL(发布者 URL)下,复制 URL。
- 选择 Save(保存)。
在 Amazon Cognito 中将 OneLogin 配置为 SAML IdP
要在 Amazon Cognito 中将 OneLogin 配置为 SAML IdP,请参阅为用户池创建和管理 SAML 身份提供商(AWS 管理控制台)。按照在用户池中配置 SAML 2.0 身份提供商下的说明进行操作。创建 SAML IdP 时,对于 Metadata document(元数据文档),输入您复制的 Issuer URL(发布者 URL)。
将电子邮件地址从 IdP 属性映射到用户池属性
要将电子邮件地址从 IdP 属性映射到用户池属性,请参阅为您的用户池指定身份提供商属性映射。按照指定 SAML 提供商属性映射下的说明进行操作。在 Attribute mapping(属性映射)下添加 SAML 属性时,对于 SAML Attribute(SAML 属性),请输入 http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier。对于 User pool attribute(用户池属性),从列表中选择 Email(电子邮件)。
在 Amazon Cognito 中更改应用程序客户端设置
注意:此示例设置用于测试目的。对于生产设置,最佳做法是为您的应用程序客户端设置使用授权代码授予 OAuth 流。使用该流时,在重定向 URL 中进行身份验证后,您将收到一个授权代码。您必须通过向令牌端点发出请求来交换 JSON Web 令牌 (JWT) 的授权代码。
- 在 Amazon Cognito 控制台的 App integration(应用程序集成)下,选择 App client settings(应用程序客户端设置)。然后,完成以下步骤:
在 Enabled identity providers(启用身份提供商)下,选择 Select all(全选)复选框。
对于 Callback URL(s)(回调 URL),输入您希望用户登录后被重定向到的 URL。要进行测试,输入任何有效的 URL,例如 https://www.example.com。
对于 Sign out URL(s)(注销 URL),输入您希望用户在注销后被重定向到的 URL。要进行测试,输入任何有效的 URL,例如 https://www.example.com。
在 Allowed OAuth Flows(允许的 OAuth 流)下,至少选中 Implicit grant(隐式授予)复选框。
在 Allowed OAuth Scopes(允许的 OAuth 范围)下,至少选中 email(电子邮件)和 openid 复选框。 - 选择 Save changes(保存更改)。有关详细信息,请参阅更新用户池应用程序客户端(AWS CLI 和 AWS API)。
测试登录端点
- 在浏览器中,输入 https://yourDomainPrefix.auth.region.amazoncognito.com/login?response_type=token&client_id=yourClientId&redirect_uri=redirectUrl。
**注意:**请将 yourDomainPrefix 和 region 替换为用户池的值。在 Amazon Cognito 控制台中可以找到这些值,它们位于您的用户池管理页面的 Domain name(域名)选项卡中。请将 yourClientId 替换为应用程序客户端 ID,并将 redirectUrl 替换为应用程序客户端回调 URL。在 Amazon Cognito 控制台中可以找到这些值,它们位于您的用户池管理页面的 App client settings(应用程序客户端设置)选项卡中。有关详细信息,请参阅登录端点。 - 选择 OneLogin。
**注意:**如果您被重定向到应用程序客户端的回调 URL,则表示您已经在浏览器中登录了 OneLogin 账户。所有内容都已正确设置。 - 在 OneLogin 页面上,对于 Username(用户名),输入您的 OneLogin 账户用户名。
- 选择 Continue(继续)。
- 对于 Password(密码),输入您的 OneLogin 账户密码。
- 选择 Continue(继续)。
相关信息
- 语言
- 中文 (简体)
