[TOC]
如何进行联合帐户链接
作者: Johann Nallathamby
2018年7月3日
介绍
本文介绍了联合帐户链接 ,它指的是将多个联合身份提供者中的身份的数字身份标识符链接到常驻身份提供者中相同身份的数字身份标识符。 联合帐户链接是联合身份管理下的关键要求之一。 常驻身份提供者中的数字身份标识符也称为本地身份标识符。
我将探讨一些用于联合帐户链接的常用方法,但是,本文并未寻求提供有关如何实现这些方法的复杂细节。 当您继续阅读本文时,您可以在大多数身份和访问管理(IAM)产品中执行密码重置或电子邮件帐户确认的方法。
这些方法可大致分为两个方面:
- 管理员发起
- 自助式
在这两种方法中,由于较低的管理开销,自助服务方法通常更受欢迎。
管理员发起
管理员发起的链接可以根据用户生命周期中帐户链接的节点进一步划分。 通常,用户生命周期中有2个节点可以完成:
- 在管理员配置帐户时
- 管理员对常驻身份提供商中的现有帐户发起的帐户链接
管理员发起的链接具有为多个用户批量执行的优点。 这可以是一种有用的技术,用于强制所有用户在系统的上线试运行遵循链接处理,或者请求其余用户在旧系统退役之前遵循链接处理。
自助式
与管理员启动的链接类似,可以根据帐户在用户生命周期中链接的节点进一步划分自助服务链接。 通常,用户生命周期中有3个节点可以完成:
- 关于自我注册的链接
- 即时链接
- 从自助门户链接
关于自我注册的链接
虽然这种技术通常在客户身份和访问管理(CIAM)中遵循,但它有时也适用于全体员工IAM。 例如,假设一个新的应用程序被引入到组织的生态系统中,允许您的员工访问。 但是,如果此引入要求在应用程序中配置帐户,则可以优先考虑自行注册过程,以避免为现有员工配置新帐户的管理开销。
即时链接
由于提供的简化用户体验,这是3种自助服务方法中最流行的方法。 实时链接是指从相应的联合身份提供者首次登录时链接。 这用于CIAM和全体员工IAM。
从自助门户链接
在这种情况下,现有帐户持有者可以登录用户门户并链接其联合帐户。 通常,此技术用作可选步骤,以收集有关用户的其他信息以丰富用户的配置文件,而不是确定对应用程序的访问权限。 这是CIAM的社交连接用例中的常用技术。
证明所有权
在我们上面讨论的所有三种自助服务链接方法中,对用户有一个重要的要求 -——即证明他/她试图链接的本地和联合帐户的所有权。 这被正式称为身份证明 。
关于自我注册的链接 :目前还没有本地账户来证明所有权。 但是,用户必须通过启动联合登录流程来证明他/她尝试链接的相应联合帐户的所有权。
即时链接 :对于现有帐户,联合登录流程会自动证明联合帐户的所有权。 但是,用户还必须通过使用本地帐户向居民身份提供者进行身份验证来证明相应本地帐户的所有权。
从自助服务门户链接 :通过登录自助服务门户,用户自动证明本地帐户的所有权。然而,用户还必须通过启动联合登录流来证明相应联合帐户的所有权。
要使用本地帐户进行身份验证,用户可以使用其密码 - 如果已在本地帐户中设置了密码。 如果用例不需要密码配置,您可以生成时间限制的一次性代码并将其发送到用户的验证地址,从而允许用户仅使用本地帐户成功进行一次身份验证,以便进行帐户链接。
联动政策
无论您选择从上面使用哪种方法,您实际上将使用联合身份提供程序提供的用户的一个或多个声明,并根据常驻身份提供程序中配置的策略进行验证。 请注意,我使用术语“策略”作为抽象术语,表示确定链接的几个选项之一。
下面列出了一些链接策略示例:
- 基于联合身份提供者声明的一个或多个经验证的声明与居民身份提供者独立验证的声明之间的匹配进行链接
- 链接基于联合身份提供者声明的一个或多个经过验证的声明的组合,并证明居民身份提供者中本地帐户的所有权
- 基于联合身份提供商为即时配置帐户声明的一个或多个经过验证的声明进行链接
- 基于外部知识的链接(在常驻身份提供者和联合身份提供者的范围之外)
索赔验证
索赔验证是帐户关联的重要部分。 如果声明的声明已经过验证,则会使链接过程变得更加容易。 如果不是,那么您可能必须确保首先验证声明以便链接。
以下是如何实施声明验证的一些示例:
- 启动联合身份验证流,该流返回带有相关声明的断言及其验证状态
- 使用用户凭据调用HTTP端点,该凭据返回带有相关声明的断言及其验证状态
- 触发涉及调用多个外部系统和/或多级人工审批以进行索赔验证的工作流程
- 在某些情况下,联合身份提供者声明的声明不能保证得到验证。 在这些情况下,可能是居民身份提供者有责任在链接帐户之前独立验证索赔。 这些可能包括电子邮件地址验证,手机号码验证等。
用户体验
在我们迄今为止观察到的一些声明验证方法中,例如涉及异步用户交互或长时间运行的工作流的方法,用户不会接收对应用程序的同步访问。 在这些情况下,用户体验很重要。
您将面临的一个常见问题是,有时整个供应/链接过程不会在一个原子步骤中执行。在这种情况下,重要的是为用户提供自助服务能力以从供应过程外部触发链接过程。实现此目的的常见方法是使用电子邮件通信。 例如,如果链接必须遵循联合身份验证流,则一旦将用户帐户配置到常驻身份提供商,您就可以将帐户状态保持为锁定状态,并将联合帐户声明验证链接发送到用户提供的电子邮件地址。 单击此链接将启动与联合身份提供程序的联合身份验证流,该流程会在断言中返回一些经过验证的声明,这些声明可用于链接帐户并自动将用户登录到最初预期的应用程序中。
使用工作流程时可能遇到的另一个问题是,如果用户被告知帐户配置/链接工作流程的结果,并且允许用户完成访问他/她最初打算使用的应用程序的过程。 在这种情况下,电子邮件通信可能很有用。
由于验证过程可能需要几分钟到几天的时间,具体取决于用例,最好在用户界面中向用户显示信息性消息,说明请求(帐户配置/链接/验证) )已经提交,并且在成功处理请求后,他/她将收到一封电子邮件,其中包含对所提供电子邮件地址的进一步说明。
对于发送到用户的电子邮件地址或移动电话号码的任何类型的链接或代码,还需要具有自助服务能力以便用户请求重新发送链接或代码 - 如果前一个链接或代码已经过期或者用户具有由于网络故障,意外删除了邮件或邮件尚未到达。
当用例需要验证多个声明时,例如联合帐户和电子邮件地址的所有权,它们可以在流程中的一个步骤中组合和执行,而不是发送两个单独的消息。 您需要确保在该过程中最多只需要一个异步交互。
如果必须强制执行帐户链接才能访问应用程序,则登录步骤可以作为索赔验证检查点来处理。 此时,可以请求用户验证声明,以便在继续登录过程之前链接其联合帐户。
摘要
本文提供了关于如何将联合帐户链接到常驻身份提供者的本地帐户的不同方法的高级讨论。 WSO2 Identity Server (IS)是一种这样的开源IAM产品,在Apache 2.0许可下分发。 拥有强大的身份管理和身份联合框架,WSO2 IS能够扮演本文所述的常驻身份提供者的角色,并且能够支持我们在本文中讨论的联邦帐户链接的所有方法。