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 安全框架。