OpenAM文档之Authentication and Single Sign-On Guide Chapter 1. Introduction

Chapter 1. Introducing Authentication and Single Sign-On

翻译 by https://zhengkai.blog.csdn.net
原文 at https://backstage.forgerock.com/docs/am/5.1/authentication-guide/index.html#chap-authn-introduction-authn

身份验证是验证用户或实体提交的登录凭据的过程,将其与授权用户的数据库进行比较。 本指南介绍了如何设置,自定义和使用身份验证过程。

1.1 关于访问管理和身份验证(Access Management and Authentication)

访问管理是指使用两个进程控制对资源的访问:身份验证authentication授权authorization

身份验证是AM验证用户或实体身份的方式。授权是AM如何确定用户是否具有足够的权限来访问受保护资源,如果是,则授予该用户或实体访问权限。授权指南中涵盖了AM的授权过程。

AM类似于在国际机场扮演边境控制的角色。所有航空公司都没有让每个航空公司处理每个目的地的访问,而是将乘客重新定向到边境控制。然后,边境控制根据护照凭证确定或验证每个乘客的身份

重定向控制还检查所识别的乘客是否被授权飞行到与该机票相对应的目的地,可能基于签证凭证。然后,在出发门口,代理人执行边境控制的授权,允许乘客登上飞机,只要乘客没有丢失,或者试图登上错误的飞机,或者与其他人交换机票。因此,边境控制处理机制就是机场的Access Management 。

AM使用自定义的机制来验证凭据并完成身份验证过程。身份验证方法可能有所不同。例如,AM最常用于保护Web应用程序页面。

考虑想要访问受保护网页的用户。您可以在Web应用程序服务器上部署代理程序Agent。代理将用户的请求重定向到AM登录页面,用户在该页面中输入其凭据,例如用户名和密码。 AM确定用户是谁,以及用户是否有权访问受保护的页面。然后,AM使用可由代理验证的授权凭据将用户重定向回受保护的页面。代理允许AM授权的用户访问该页面。

您可以使用AM来保护物联网(IoT)上连接的物理设备。例如,送货车跟踪系统可以使其代理网关使用X.509证书对代理系统进行身份验证,以允许其启用HTTPS协议,然后连接到其传送卡车中的传感器。如果X.509证书有效,管理系统可以监控货车的油耗,速度,里程和整体发动机状况,以最大化每辆货车的运行效率。

1.2。验证功能(Authentication Features)

AM支持许多用于部署的身份验证功能和服务:

  • Authentication Modules and Chains,验证模块和链。 AM提供了许多验证模块来处理验证用户或实体的不同模式。这些模块也可以链接在一起以提供多种身份验证机制,因此在控制传递给另一个模块之前,必须由一个模块评估用户或实体的凭证。有关更多信息,请参阅“关于身份验证模块和链”。

  • Authentication Levels身份验证级别。 AM允许为每个模块配置一个身份验证级别,该级别指示用户或实体凭据的安全级别。如果用户需要访问更敏感的资源,则AM可能要求用户或实体重新进行身份验证,从而提供其他类型的其他凭据。有关更多信息,请参阅“关于身份验证级别”。

  • Social Authentication社会认证,或者叫第三方认证。您可以将AM配置为接受由流行的第三方身份提供商(如Facebook,Google和Microsoft)提供的身份验证。有关更多信息,请参阅“关于社交身份验证”。

  • Multi-Factor Authentication多重身份验证。 AM支持多因素身份验证,这需要用户提供多种形式的凭据,例如用户名和密码,以及发送到用户移动电话的一次性密码。有关更多信息,请参阅“关于多重身份验证”。

  • Account Lockout帐户锁定。 AM可以在预先配置的失败的身份验证尝试次数后锁定帐户。帐户锁定适用于用户输入密码的模块。有关更多信息,请参阅“关于帐户锁定”。

  • Sessions会话。当用户或实体已向系统进行身份验证以管理用户或实体对资源的访问权限时,AM会创建会话。 AM支持两种类型的会话:有状态和无状态。有状态会话驻留在核心令牌服务(CTS)令牌存储中。它们可以缓存在一个或多个AM服务器的内存中,以提高系统性能。无状态会话不驻留在CTS或服务器的内存中,而是发送到客户端。对于基于浏览器的客户端,会话状态信息在浏览器cookie中编码。有关更多信息,请参阅“关于会话”。

  • Single Sign-On单点登录。 AM允许用户或实体使用一组凭据来访问单个域内的多个应用程序。这称为单点登录(SSO)。 AM还支持跨域单点登录(CDSSO)。有关更多信息,请参阅“关于单点登录”。

1.3 关于身份验证模块和链式验证(About Authentication Modules and Chains)

AM允许您配置一个身份验证过程,然后自定义它们的应用方式。AM使用身份验证模块来处理不同的身份验证方式。 基本上,每个身份验证模块都处理获取和验证凭据的一种方法。 您可以将不同的验证模块链接在一起,在AM中,这称为身份验证链Authentication Chain。 可以将每个身份验证模块配置为使用以下四个条件之一指定延续和失败语义:必需requisite充分sufficient必要equired可选optional

链中的认证模块可以为授权请求分配通过或失败标志。 要成功完成身份验证链,必须至少实现一个pass标志,并且必须没有失败标志。

在这里插入图片描述
完成模块时会分配标志,如下表所示:

  • 必需requisite [成功则标记并继续,失败则退出认证]: 例如Active Directory,Data Store和LDAP身份验证模块通常被设置为必需项,因为链中的后续要求用于标识用户。例如,设备ID(匹配)身份验证模块需要用户的ID才能检索有关用户设备的信息。
  • 充分sufficient [成功则标记并退出,失败不标记继续]: 充分条件表示只要相关的登录模块认证成功,则整个认证就是成功的。您可以将Windows桌面SSO设置为足够,因此经过身份验证的Windows用户可以通过,而Web用户必须遍历另一个身份验证模块,例如需要用户名和密码的模块。
  • 必要equired[成功则标记并继续,失败则标记失败并继续]:您可以使用一个必要的模块来使用电子邮件和密码登录,这样它就可以失败以便通过另一个模块来处理尚未注册的新用户。
  • 可选optional [成功则标记并继续,失败不标记并继续]:如果通过,可以使用可选模块指定更高的身份验证级别。考虑具有必需数据存储模块和可选证书模块的链。只通过数据存储模块的用户可以被分配比同时通过数据存储模块和证书模块的用户更低的身份验证级别。具有较高身份验证级别的用户可以访问更安全的资源。

*。使用AM,您可以进一步设置每个模块的身份验证级别,通常使用更高级别来允许访问更受限制的资源。 AM SPI还允许您开发自己的身份验证模块,并发布身份验证插件。 客户端应用程序可以指定要配置的身份验证级别,模块,用户和身份验证服务。 如本指南后面所述,您可以使用领域来组织哪个身份验证过程适用于不同的应用程序或不同的域,可能由不同的人管理。

AM使身份验证过程变得灵活,以便您可以根据自己的情况调整其工作方式。 虽然首先选择的数量看起来令人生畏,但现在您已了解基本流程,您开始了解如何选择身份验证模块并将其安排在身份验证链中,这样您就可以使用AM来保护对组织中使用的各种应用程序的访问。

1.4关于身份验证级别(About Authentication Levels)

当用户成功进行身份验证时,AM会创建一个会话,允许AM管理用户对资源的访问权限。会话被分配一个身份验证级别,该级别被计算为传递的任何身份验证模块的最高身份验证级别。如果用户的会话没有适当的身份验证级别,则用户可能需要在更高的身份验证级别重新进行身份验证以访问所请求的资源

身份验证级别设置与Module模块设置的安全级别相关联。最强的身份验证形式通常会分配最高的身份验证级别,但如果是您的首选项,则可以将最强的身份验证形式分配给最低的身份验证级别。在成功验证后,用户的会话包括有关所实现的验证级别的信息。

如果身份验证链包含由于在它们前面存在sufficient充分的模块而未执行的requisite必需或required必要模块,则会话的身份验证级别计算结果为较大者:通过的任何身份验证模块的最高身份验证级别,或者未执行的必需或必需模块的最高身份验证级别。

您可以修改AM的默认行为,以便会话的身份验证级别始终是传递的任何身份验证模块的最高身份验证级别,即使身份验证链中存在requisite必需或required必要的模块未执行。

要修改默认行为,请在“部署”>“服务器”>“服务器名称”>“高级”下将org.forgerock.openam.authLevel.excludeRequiredOrRequisite属性设置为true,然后重新启动AM服务器。

Authorization policies授权策略可能需要特定的身份验证级别才能访问敏感资源(或最多或至少指定的身份验证级别)。当在领域中已经过身份验证的用户尝试访问具有不具有必需身份验证级别的有效会话的敏感资源时,AM拒绝访问该资源。但是,AM也会通过授权决策返回建议。建议表明需要所需的身份验证级别。然后,策略代理或策略执行点可以将用户发送回AM以进行会话升级。

在会话升级期间,用户使用更强的身份验证模块进行身份验较强的模块通常是处理原始身份验证的同一身份验证链的一部分,但不需要访问较不敏感的资源。成功加强身份验证后,用户会话将升级到新的身份验证级别并进行修改,以包括与更强身份验证相关的任何设置。

如果不成功,会话升级会使用户会话保持在尝试强身份验证之前的状态。如果会话升级因登录页面超时而失败,则AM会将用户的浏览器重定向到上次成功验证的成功URL。

AM policy agents策略代理通常在没有其他配置的情况下处理会话升级,因为策略代理是为处理AM的建议而构建的。但是,如果您构建自己的策略执行点(PEP),请考虑建议和会话升级。有关RESTful PEP以及有关如何处理建议的说明,请参阅“授权指南”中的“请求策略决策”。对于会话升级,请参阅“身份验证和注销”。

AM对会话升级的支持需要有状态会话。在尝试升级AM会话之前,请确保为有状态会话配置AM(默认配置)。

1.5 关于第三方认证(About Social Authentication)

AM支持通过第三方身份供应商(如Facebook,Google和Microsoft)进行委派身份验证。 AM控制台提供安装向导,以配置每个身份提供程序的身份验证。 附加向导提供配置其他第三方验证器的功能。

每个AM向导都会创建一个身份验证模块和一个身份验证链,其中包含与第三方进行身份验证所需的正确配置。 该向导还将配置数据添加到领域的社会认证实现服务,并配置该服务以在AM登录屏幕上显示已配置的第三方认证提供程序的徽标,如下所示。

在这里插入图片描述

1.6 关于多重身份认证(About Multi-Factor Authentication)

多重身份验证是一种身份验证技术,要求用户在登录AM时提供多种身份识别方式。

本节介绍AM中的多因素身份验证功能。有关如何在AM中设置多重身份验证的信息,请参阅“实施多重身份验证”。

多因素身份验证为用户提供了一种更安全的方法,可以借助设备访问其帐户。请注意,本节中使用的“设备”一词是指可以显示一次性密码或使用AM多因素身份验证支持的协议支持推送通知的设备。设备通常是具有支持OATH协议或推送通知的身份验证器应用程序的移动电话,但也可能包括其他设备。

以下是AM中多因素身份验证的示例方案:

  1. AM管理员使用Data Store和ForgeRock Authenticator(OATH)身份验证模块配置身份验证链。

  2. 最终用户使用该身份验证链对AM进行身份验证。

  3. AM提示用户输入Data Store身份验证模块所需的用户ID和密码 - 多因素身份验证中的第一个因素。

  4. 如果用户ID和密码正确,AM会提示用户获取一次性密码。

  5. 用户在生成并显示一次性密码的移动电话上运行验证器应用程序。

  6. 用户向AM提供一次性密码以成功完成身份验证 - 多因素身份验证中的第二个因素。

管理员通过使用两个或更多身份验证模块创建身份验证链来设置多重身份验证。链中的初始模块定义了用于多因素身份验证的第一个身份验证模块。在上述场景中,第一个认证模块是Data Store认证模块。链中的后续模块定义了登录所需的其他因素,例如ForgeRock Authenticator(OATH)或ForgeRock Authenticator(Push)认证模块。

AM支持Open AuTHentication(OATH)协议,并且还推送多因素身份验证通知。

1.7 关于账号锁(About Account Lockout)

AM可以在重复身份验证失败数次后锁定帐户。 帐户锁定适用于用户可以错误地输入密码的模块。

1.8. 关于会话(About Sessions)

当用户成功进行身份验证时,AM会创建一个会话来管理用户对资源的访问权限。 AM使用会话中存储的信息来确定用户的登录是否仍然有效,或者用户是否需要重新进行身份验证。

重点
在具有负载平衡器部署的多AM服务器中,无论您是使用有状态还是无状态会话,都需要在身份验证期间进行粘性负载平衡。 例如,无论您在链中使用单个身份验证模块还是多个身份验证模块,都必须使用amlbcookie实现粘性负载平衡,以便负载均衡器可以将相应的身份验证请求路由到目标服务器。 有关详细信息,请参阅“安装指南”中的“配置站点粘性负载平衡”

1.8.1。会话状态(Session State)
AM会话是“有状态的”或“无状态的”,并在以下部分中详细描述。

1.8.1.1。有状态会话
有状态会话是驻留在CTS令牌存储中的服务器上的会话,可以缓存在一个或多个AM服务器的内存中以提高系统性能。 AM向客户端发送对会话的引用,但引用不包含任何会话状态信息。会话引用也称为SSO令牌。对于浏览器客户端,AM在浏览器中设置包含会话引用的cookie。对于REST客户端,AM返回会话引用以响应对身份验证终结点的调用。

有状态会议具有可塑性。 AM服务器可以在会话期间修改用户会话的各个方面。

1.8.1.2。无状态会话
无状态会话是指AM在每次请求后将会话状态返回给客户端的会话,并要求将其与后续请求一起传入。

注意:出于安全目的,您应配置AM以签署和/或加密无状态会话。因为对每个请求进行解密和验证会话可能是一项昂贵的操作,所以AM将解密序列缓存在内存中以提高性能。

1.8.1.3。Realm领域配置
会话状态和无状态在领域级别配置。 AM领域默认使用有状态会话。对于给定领域进行身份验证的所有用户的会话要么是有状态的,要么是无状态的,具体取决于各个领域的配置。 AM可以使用无状态会话部署一些领域,等等使用有状态会话。

但是,每领域会话状态配置有一个例外。当顶级管理员(默认情况下,amadmin用户)向AM进行身份验证时,即使为无状态会话配置了顶级域,会话也始终是有状态的。

1.8.1.4。验证期间的会话状态
在身份验证期间,无论您是否已配置用户为有状态或无状态会话进行身份验证的域,AM都会在其内存中维护身份验证用户的会话

身份验证完成后,AM将删除内存会话,以便用户对为无状态会话配置的域进行身份验证。对为有状态会话配置的域进行身份验证的用户的会话将写入CTS令牌存储。

posted @ 2019-12-25 17:19  一颗桃子t  阅读(603)  评论(0编辑  收藏  举报