[TOC]
什么是联合身份管理?
- 作者: Johann Nallathamby
- 2018年6月18日
介绍
联合身份管理是可以在两个或更多个信任域之间进行的安排,以允许这些信任域的用户使用相同的数字身份来访问应用和服务。 诸如此类的身份称为联合身份,并且这种解决方案模式的使用称为身份联合 。
联合身份管理建立在两个或多个域之间信任的基础之上。 例如,信任域可以是合作伙伴组织,业务单位,子公司等。
在当今的任何数字组织中,身份和访问管理(IAM)是一种专门的功能,它被委托给称为身份代理的服务提供者。 身份代理是一个服务提供者,专门从事多个服务提供者(也称为依赖方)之间的访问控制。 联合身份管理是跨组织的两个或更多此类身份代理之间的安排。
身份代理可以通过更具体的名称来识别,具体取决于它在联合身份管理中所扮演的角色。 这些名称在整个行业中并不十分标准化,尽管用于一般说法,您可能会发现人们可以互换使用这些名称。 因此,重要的是在使用相关上下文时指定这些名称,并且根据安排,身份代理可以扮演多个角色。
这些角色包括:
- 身份提供者
- 常驻身份提供者
- 联合身份提供者
- 联盟提供者
- 常驻授权服务器
身份提供者是一个身份代理,负责声明数字身份以及服务提供者要使用的声明。
常驻身份提供者是针对数字身份定义的,负责在其信任域内断言数字身份的身份提供者。 有时,这也称为本地身份提供者或现任身份提供者。
联合身份提供者是针对信任域定义的,负责断言属于另一个特定信任域的数字身份。 在两个身份提供者之间建立信任关系。
术语联盟提供者通常用于表示身份代理,其专门基于信任关系在多个服务提供者和多个身份提供者之间调解IAM操作。
常驻授权服务是针对服务提供者定义的,是应用或服务提供者的逻辑表示之所在。 它负责对请求的访问进行身份验证和授权应用或服务提供者。
身份联合提供以下好处:
- 用户只需记住一组提供无缝用户体验的凭据。
- 大多数实现都支持单点登录。
- 通过将帐户和密码管理职责委派给常驻身份提供者来避免管理开销,而不是去管理多个身份孤岛。
- 简化数据管理和存储成本。
- 避免隐私和合规负担。
以下是联合身份管理用例的一些示例:
- 提供来自供应商,分销商和合作伙伴网络的用户访问权限。
- 合并和收购后,为传统组织外围的新用户提供访问权限。
- 提供对银行等商业身份提供者的用户访问权限,例如PSD2中的第三方支付提供者(TPP)。
- 使用国家身份提供者提供对公民的访问权限,例如DigiD,Emirates ID等。
- 提供对拥有公共组织ID的用户的访问权限,例如ORCID ID。
- 社交登录(注册/登录/连接),例如Facebook,Google,LinkedIn等。
- 作为支持IAM系统之间转换的临时安排。
入站和出站身份联合
身份联合会大致分为两个方面:
- 入站身份联合
- 出站身份联合
在身份联合流中,从另一个身份代理接收断言的身份代理称为入站身份联合。 换句话说,入站身份联合允许您为组织的传统边界/信任域之外的用户身份提供对内部应用和服务的访问。
类似地,产生要由另一个身份代理消费的断言的身份提供者称为出站身份联合。 出站身份联合允许您管理的用户 身份访问传统组织边界/信任域之外的应用和服务。
图1:企业和SaaS应用之间的身份联合
图1说明了企业和SaaS应用之间的身份联合安排。 SaaS应用托管在Azure云中,其身份验证委托给联合提供者。 该企业是SaaS应用和联合提供者中的租户。 企业身份提供者(ADFS)在Azure云中的联合提供者的相应租户中配置为联合身份提供者。 因此,在云租户的联合提供者和企业身份提供者之间建立信任。 因此,企业身份提供者中的用户将能够使用他们在企业身份提供者中的身份登录SaaS应用的相应租户。
所描述的流程是关于认证的。 但是,为了使用户获得完全访问权限,他们也需要通过授权。 授权可能也可能不是此联合安排的一部分。
身份联合与单点登录
大多数联合身份管理解决方案的实现方式是,每个登录会话不要求用户多次证明其身份。 单点登录与身份联合不是同义词。 但是,它是实现身份联合的方式的副产品。
另一方面,并非所有单点登录实现都可以归类为身份联合。 例如,基于kerberos网络身份验证协议的集成Windows身份验证(IWA)是跨应用和服务的单一登录实现的示例,但不被视为身份联合的示例,因为它仅限于特定网络。
带来你自己的身份(BYOID)
随着使用社交身份获取应用和服务的趋势,这个短语带来您自己的身份(BYOID)变得流行。 尽管BYOID通常用于社交身份,但该概念适用于政府,非政府组织或企业发布的任何联合数字身份。
用例3,4,5和6都是BYOID的示例,通常位于客户IAM(CIAM)中。 它们可以进一步划分为BYOID,用于注册,登录和连接。 虽然从技术上讲,所有这3个用例(注册,登录和连接)都遵循相同的流程,但这些用例的目标存在细微差别。
“BYOID用于注册”的目的是使用由第三方管理的身份,通过检索在中间身份代理中为用户创建帐户所必需的部分或完整的配置文件信息来改善自我注册过程的用户体验。
“BYOID for sign-in”的目标是使登录流程尽可能顺利地传递给最终用户,并尽可能少的提供额外输入的提示。 登录的BYOID不一定非得在中介身份代理中配置本地帐户。
“BYOID连接”的目的只是通过获取附加/缺失信息来丰富/填充本地用户配置文件。
联合帐户链接
联合提供者的关键特征之一是将多个联合身份提供者中的单个身份的数字身份标识符链接到其常驻身份提供者中的数字身份标识符。 这称为联合帐户链接 。
如果没有联合帐户链接,联合提供者将仅在服务提供者和联合身份提供者之间进行解调。 这种联合模式常见于非关键应用和服务,如公共论坛,下载营销材料等。
图2:没有帐户链接的联合登录
但是,对于联合帐户链接,除了调解之外,联合提供者还可以提供诸如帐户管理,密码管理和权利管理之类的功能。
图3:带帐户链接的联合登录
即时帐户配置
即时帐户配置技术用于在运行中为中间身份代理中的用户设置帐户。 即时帐户配置是即时帐户链接的关键部分。
图4:使用即时帐户配置进行联合登录
即时密码配置
即时密码配置是即时帐户配置的可选步骤。 对此类配置的需求通常取决于组织的帐户和密码策略以及用户将访问的应用。 如果您决定为本地帐户设置新密码,则允许用户继续使用联合身份登录也是可选的。
主安全域发现(Home Realm Discovery)
使用单一身份提供者进行联合还不足以满足当今的企业需求。 通常,由于需要支持多个合作伙伴或多个社交登录选项,因此配置了多个联合身份提供者(安全域)。 在这种情况下,为尝试访问应用或服务的特定用户选择常驻身份提供者(主安全域)成为挑战,尤其是在用户体验方面。
主安全域发现(HRD)是识别特定用户的常驻身份提供者以便对用户进行身份验证并使用声明断言用户身份的过程。 HRD最初是Microsoft提出的术语,但该概念适用于所有现代身份联盟。 关于如何实施HRD没有标准,每个供应商都有自己的风格,因此很难支持可移植性。
HRD方法可以是自动的或涉及手动用户交互。 以下是一些常用的HRD方法:
- 向用户提供可供选择的选项列表。
- 首次登录时提示用户输入他/她的身份标识符并根据身份标识符解析标识提供者。例如,如果身份标识符是[email protected],我们就会知道Johann的身份提供者是Google,向Google发起身份验证请求,理想情况下,身份标识符会预先填写在Google登录表单中,以便用户执行此操作不必重新输入他的身份标识符。
- 选择性主安全域发现 - 限制用于特定服务提供者的身份提供者。 这在您信任多个联合身份提供者但具有身份范围限制的服务提供者的情况下非常有用,这些服务提供者仅供身份提供者的特定子集中的用户使用和访问。
- 使用服务提供者添加的HTTP查询参数。
- 使用用户设备的IP地址。 例如,内网用户必须使用AD中的本地帐户登录,而外网用户必须使用多因素身份验证从上游身份提供者登录才能获得额外的安全性。
- 使用通过拦截代理服务器添加的请求头(headers )。
- 使用cookie记住用户先前在设备上选择的领域。 如果未找到cookie,则回退到手动方法。
- 联合身份提供者本身可以是联合提供者,后者又将与其他身份提供者联合。 在提示用户在每个中间联盟提供者处为HRD提供信息的那种情况下,可以认为是糟糕的用户体验。 因此,在这些情况下,可能需要从用户预先收集所有可能的信息以路由到正确的常驻身份提供者。
支持IAM过渡
身份联合也可以用作IAM的过渡策略。 它可以促进从多个分散的源用户目录转换到单个集中的目标用户目录。 在这种情况下,将提供密码。 一旦最终迁移了所有帐户,您可以决定断开管理分布式目录的这些联合身份提供者与生态系统的连接。
摘要
本文重点介绍联合身份管理及其用法。 有许多身份联合协议,例如SAML2 Web SSO,OpenID Connect,WS-Trust,WS-Federation等。虽然我们没有涉及用于实现联合身份管理的任何特定协议,但我们讨论的概念仍然存在对于您可能选择实施的任何协议,完整无缺。
WSO2 Identity Server是一个在Apache 2.0许可下分发的开源IAM产品。 它拥有强大的身份管理和身份联合框架,使其能够在联合身份管理安排中扮演身份代理的任何角色,如本文所述。