5.3. 关于 PicketLink STS 登录模块
PicketLink 登录模块通常被配置为 JEE 容器的安全设置的一部分,从而使用安全令牌服务(Security Token Service,STS)来验证用户。STS 可以在和登录模块相同的容器一起工作,或者通过 Web Services 调用或其他技术远程访问。PicketLink 登录模块支持使用标准 WS-Trust 调用的非 PicketLink STS 实现。
STS 登录模块的类型
下面是不同类型的 STS 登录模块。
STSIssuingLoginModule
- 调用配置的 STS 并请求安全令牌。成功后收到
RequestedSecurityToken
,它将标记验证为成功。 - 对 STS 的调用通常需要验证。这个验证模块使用来自下列来源之一的凭证:
- 如果
useOptionsCredentials
模块选项被设置为true
,就是它的属性文件。 - 如果
password-stacking
模块选项被设置为useFirstPass
,则是之前的登录模块凭证。 - 来自配置的
CallbackHandler
(通过提供名称和密码的回调方法)。
- 在成功验证后,如果未发现具有相同 Assertion 的凭证时,
SamlCredential
将插入主题的公共凭证。
STSValidatingLoginModule
- 调用配置的 STS 并检验可用的安全令牌。
- 对 STS 的调用通常需要验证。这个验证模块使用来自下列来源之一的凭证:
- 如果
useOptionsCredentials
模块选项被设置为true
,就是它的属性文件。 - 如果
password-stacking
模块选项被设置为useFirstPass
,则是之前的登录模块凭证。 - 来自配置的
CallbackHandler
(通过提供名称和密码的回调方法)。
- 在成功验证后,如果未发现具有相同 Assertion 的凭证时,SamlCredential 将插入主题的公共凭证。
SAML2STSLoginModule
- 这个登录模块提供一个
ObjectCallback
到配置的CallbackHandler
,并期望返回SamlCredential
对象。Assertion 根据已配置的 STS 来进行校验。 - 如果用户 ID 和 SAML 令牌是被共享的,当位于另外一个已经成功验证的登录模块之上时,这个登录模块将忽略检验。
- 在成功验证后,
SamlCredential
里分别设置为用户的 ID 和角色的NameID
和多重值的角色属性将被检查。
SAML2LoginModule
- 这个登录模块和其他组建一起用于 SAML 验证,其自身不执行验证。
SPRedirectFormAuthenticator
将这个登录模块用在 SAML V2 HTTP 重定向配置集的 PicketLink 实现里。- Tomcat authenticator valve 通过重定向到标识符提供者并获取 SAML 判断来执行验证。
- 这个等录模块被用来传递用户 ID 和角色到 JAAS 主题里填充的 JBoss 安全框架。