企业单点登录解决方案(CAS)之四身份验证

身份验证

CAS认证过程是由几个相关的组件:

PrincipalNameTransformer

转换输入登录的用户id字符串形成了初步的主体名称 由一个特定类型的身份验证处理器验证。

AuthenticationManager

入口点进入认证子系统。 它接受一个或多个身份验证凭证和代表 配置 AuthenticationHandler 组件。 它收集每个尝试的结果,并确定有效 安全策略。

AuthenticationHandler

验证一个证书和报告的三种可能的结果:成功,失败,而不是企图。

PrincipalResolver

身份验证凭证中的信息转换成一般安全主要包含额外的 元数据属性(即用户详细信息,如联系组成员,电子邮件,显示名称)。

AuthenticationMetaDataPopulator

战略成功的身份验证组件设置任意元数据对一个事件,这些都是常用的 设置特定于协议的数据。

除非另外注明,所有身份验证组件的配置是在处理 deployerConfigContext.xml 

身份验证管理器

CAS还附带一个灵活的认证管理器, PolicyBasedAuthenticationManager ,这应该 满足大多数需求。 它根据以下合同执行身份验证。

对于每个给定的凭证做以下:

  1. 遍历所有身份验证配置处理程序。
  2. 试图验证凭证如果处理程序支持它。
  3. 在试图解决一个主要成功。
  4. 检查是否一个解析器配置为处理程序,经过身份验证的凭据。
  5. 如果找到一个合适的解析器,试图解决校长。
  6. 如果没有找到一个合适的解析器,使用主要由身份验证处理程序解决。
  7. 检查是否安全策略(如任何、所有)满意。
  8. 如果安全策略就会立即返回。
  9. 如果不满足安全策略。
  10. 毕竟凭证已经再次尝试检查安全策略,扔 AuthenticationException 如果不满意。

有一个隐含的安全政策,要求至少有一个处理器成功进行身份验证凭据, 但行为可以进一步控制设置 # setAuthenticationPolicy(AuthenticationPolicy) 下列政策之一。

AnyAuthenticationPolicy

满意如果任何处理程序成功。 支持一个 tryAll 国旗,以避免短路在步骤4.1以上,每一个尝试 处理程序之前即使成功了。 这一政策是默认和提供向后兼容的行为 AuthenticationManagerImpl CAS组件3. x。

AllAuthenticationPolicy

满足当且仅当所有凭证成功验证。 支持多种凭证 新在CAS和这个处理程序将只在多因素身份验证的情况下是可以接受的。

RequiredHandlerAuthenticationPolicy

满意的如果一个只有一个指定处理程序成功进行身份验证凭据。 支持一个 tryAll 旗帜 避免短路步骤4.1以上,每一个处理程序,即使之前成功了。 这个政策可以 用于支持多因素身份验证的情况下,例如,用户名/密码身份验证在哪里 但需要一个额外的OTP是可选的。

身份验证处理程序

CAS附带支持身份验证对许多常见类型的身份验证系统。 下面的列表提供了一个完整的列表支持身份验证技术;跳的部分(s) 的兴趣。

有一些额外的小部署和特殊情况处理程序:

默认凭证

在CAS测试默认身份验证方案, 使用 案例 和 梅隆 分别作为用户名和密码。

密码编码

密码编码器期间负责验证事件转换和编码 的证书密码身份验证源是可以接受的一种形式。

默认的编码器

<alias name="defaultPasswordEncoder" alias="passwordEncoder" />

以下设置是适用的:

# cas.authn.password.encoding.char=UTF-8
# cas.authn.password.encoding.alg=SHA-256

纯文本

<alias name="plainTextPasswordEncoder" alias="passwordEncoder" />

参数提取器

提取器负责检查http请求收到等参数描述身份验证请求的请求 服务 等。萃取器存在的支持身份验证协议和每创建适当的实例 WebApplicationService 包含提取的结果。

主要解决

请 见本指南 更多详情主要决议。

主要转换

身份验证处理程序通常处理username-password凭证 可以配置为将用户id之前执行身份验证序列。 可用以下组件:

NoOpPrincipalNameTransformer

默认的变压器,实际上没有转换的用户id。

<alias name="noOpPrincipalNameTransformer" alias="principalNameTransformer" />
PrefixSuffixPrincipalNameTransformer

转换的用户id添加后缀或后缀。

<alias name="prefixSuffixPrincipalNameTransformer" alias="principalNameTransformer" />

以下设置是适用的:

# cas.principal.transform.prefix=
# cas.principal.transform.suffix=
ConvertCasePrincipalNameTransformer

一个变压器,将uid小写或大写形式。 结果也削减了。 变压器也能够接受和处理的结果 前一个变压器可能修改的uid,这样两个可以链接。

<alias name="convertCasePrincipalNameTransformer" alias="principalNameTransformer" />

以下设置是适用的:

# cas.principal.transform.upperCase=false

身份验证元数据

AuthenticationMetaDataPopulator 组件提供一个可插入策略注入任意元数据 身份验证子系统消耗其他子系统或外部组件。 一些著名的元数据的使用 的思想:

  • 支持长期的身份验证功能
  • SAML协议支持
  • OAuth与OpenID协议支持。

默认的身份验证元数据的思想应该是足够的对于大多数部署。 组件的位置 需要支持可选的CAS特性,他们会明确地识别和配置将提供。

长期的验证

CAS支持长期票据授予票,也称为一个特性 “记住我” SSO的长度延伸会话之外的典型配置。 请 见本指南 为更多的细节。

代理身份验证

请 见本指南 为更多的细节。

多因素身份验证(MFA)

请 见本指南 为更多的细节。

登录节流

CAS提供了设备支持密码限制失败的登录尝试猜测和滥用相关的场景。 请 见本指南 更多细节在登录节流。

SSO会话Cookie

票据授予饼干是一个HTTP cookie组上,CAS建立单点登录会话。 这对客户机cookie维护登录状态,虽然它是有效的,客户端可以现在CAS的主要凭证。 请 见本指南 额外的细节。

参考资料:https://apereo.github.io/cas/4.2.x/installation/Configuring-Authentication-Components.html

转载于:https://my.oschina.net/boreboluomiduo/blog/844534

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值