3.3. 使用 STS 的 SSO
JBoss EAP 为 SP 提供多个登录模块,用于连接 STS。它还可以运行 STS(PicketLinkSTS
)。更具体地说,PicketLinkSTS
定义了多个与其他安全令牌服务的接口,并提供扩展点。可以使用配置插入实施,并通过配置为某些属性指定默认值。这意味着 PicketLinkSTS
生成和管理安全令牌,但不发布特定类型的令牌。相反,它定义允许插入多个令牌提供程序的通用接口。因此,只要每种令牌类型的令牌提供程序存在,就可以将其配置为处理各种类型的令牌。它还指定安全令牌请求和响应消息的格式。
下列步骤是使用 JBoss EAP STS 时处理安全令牌请求的顺序。
-
客户端向
PicketLinkSTS
发送安全令牌请求。 -
PicketLinkSTS
解析请求消息并生成 Jakarta XML Binding 对象模型。 -
PicketLinkSTS
读取配置文件并根据需要创建STSConfiguration
对象。它从配置中获取WSTrustRequestHandler
的引用,并将请求处理委派给处理程序实例。 -
请求处理程序在需要时使用
STSConfiguration
来设置默认值,例如当请求没有指定令牌生命周期值时。 -
WSTrustRequestHandler
创建WSTrustRequestContext
,并设置 Jakarta XML Binding 请求对象及其从PicketLinkSTS
收到的调用者主体。 -
WSTrustRequestHandler
使用STSConfiguration
获取SecurityTokenProvider
,必须用于根据所请求的令牌类型来处理请求。它调用提供程序,并将构建的WSTrustRequestContext
作为参数传递。 -
SecurityTokenProvider
实例处理令牌请求,并将发布的令牌存储在请求上下文中。 -
WSTrustRequestHandler
从上下文获取令牌,根据需要对其进行加密,并构建包含安全令牌的 WS-Trust 响应对象。 -
PicketLinkSTS
指示请求处理程序生成的响应,并将它返回到客户端。
STS 登录模块(如 STSIssuingLoginModule、STSValidatingLoginModule、SAML2STSLoginModule 等)通常被配置为 JEE 容器安全设置的一部分,以使用 STS 来验证用户。STS 可以和登录模块位于同一个容器上,或者通过 Web 服务调用或其他技术远程访问。