CAS认证策略

原文:https://apereo.github.io/cas/4.2.x/installation/Configuring-Authentication-Components.html

认证

CAS的认证过程和下面几个组件有关:

PrincipalNameTransformer
把用户输入的id字符串转换为Principal Name,用具体类型的Authentication Handler认证。

AuthenticationManager
认证子系统的入口点,它接收一个或多个凭证和代理认证,传给设置的AuthenticationHandler组件。它收集每次尝试认证的结果和决定安全策略的有效性。

AuthenticationHandler
认证单一的凭证并且报告一个可能的结果: success, failure, not attempted.

PrincipalResolver
转换认证凭据中的信息为一个安全策略,通常包括附加的元属性(例如用户细节:affiliations, group membership, email, display name).

AuthenticationMetaDataPopulator
设置关于一个成功认证事件的任意元数据的组件,通常用于设置具体协议的数据。

除非单独说明,这个配置所有的认证组件都在deployerConfigContext.xml中。

Authentication Manager

CAS提供了一个灵活的授权管理器PolicyBasedAuthenticationManager可以满足大多数需求,它根据下列步骤进行认证。

对每特认证凭据按照下列步骤执行:

1.遍历所有设置的authentication handlers
2.如果一个handler支持,就尝试验证凭据。
3.如果成功,尝试解析规则。
4.检查是否有一个已经为这个handler配置的解析器。
5.如果有合适的解析器,尝试解析。
6.如果没有找到合适的解析器,使用主解析器。
7.检查是否满足安全策略(例如any, all)。
8.如果满足立刻返回。
9.如果不满足,就继续继续

当所有的凭据都尝试过后,再次检查安全策略并,如果不满足抛出AuthenticationException。
这里有一个隐式的安全策略要求至少一个handler成功验证凭证,但是这个行为可以在之后的设置中被改变为下面任何一个。#setAuthenticationPolicy(AuthenticationPolicy)

AnyAuthenticationPolicy
任何一个handler成功就可以满足。支持tryAll的设置来避免在4.1步短路,这个策略是默认的,并且向后兼容。在CAS 3.x版本的AuthenticationManagerImpl中

AllAuthenticationPolicy
当前仅当给的所有凭据都成功的时候才会满足。支持多凭据,并且只在多阶认证情况下才会被接受。

RequiredHandlerAuthenticationPolicy
一个指定的handler成功验证的时候就可以满足。支持tryAll的设置来避免在4.1步短路。这个策略可以被用来支持多阶认证的情况。比如当用户名密码认证是必需的,但是附加的OTP是可选的。

Authentication Handlers

CAS 提供很多类型的认证系统支持,下面的列表完整提供了支持的认证技术,跳转到具体的章节查看详细信息。

Database
JAAS
LDAP
OAuth 1.0/2.0, OpenID
RADIUS
SPNEGO (Windows)
Trusted (REMOTE_USER)
X.509 (client SSL certificate)
Remote Address
YubiKey
Apache Shiro
pac4j

这里有一些附加的handler用于小型部署和特殊的场景:

Whilelist
Blacklist

Default Credentials
要测试默认认证,使用casuser和Mellon作为用户名和密码就可以了。

Password Encoding

密码加密负责在认证事件中转换和编码凭据中的密码到认证源可接收的格式。

Default Encoder

下面的设置可以被使用

Plain Text

参数提取

提取器负责从http请求中提取描述了认证请求的参数,比如请求的服务。提取器存在多个支持的认证协议,每个创建合适的 WebApplicationService类实例,里面包括了提取的结果

Principal Resolution

请看这个知道获得详细的信息

Principal Transformation

认证handlers通常处理username-password凭据,它可以被配置用来在执行认证前转换user id。下面的组件可以被使用:

NoOpPrincipalNameTransformer
默认转换器,实际上不做任何转换。

PrefixSuffixPrincipalNameTransformer
转换用户ID,增加前缀和后缀

下面的设置可以被使用了:

ConvertCasePrincipalNameTransformer
转换输入为全大写或小写,可以和前面的配合。

下面的设置可以被使用了:

认证元数据

AuthenticationMetaDataPopulator组件提供了可扩展的策略,可以注入任意元数据到认证子系统或其他子系统和外部系统 metadata populators一些使用:

支持长期认证特性
SAML协议支持
OAuth和OpenID协议支持

默认元数据populators应该满足大多数需求了,那些需要额外特性的组件他们应该额外的配置。

Long Term Authentication

CAS支持长期的TGT,登录时候“记住我”的特性延长了SSO会话的时间,并且超出了通常的配置,详见这个指导。

Proxy Authentication

详见这个指导

Multi-factor Authentication (MFA)

详见这个指导

Login Throttling

详见这个指导

SSO Session Cookie

详见这个指导

0 Comments
Leave a Reply