3.8.3.2. 使用带有客户端的 WS-Trust 安全令牌服务(STS)
若要将客户端配置为从 STS 获取安全令牌,您需要使用 org.picketlink.identity.federation.api.wstrust.WSTrustClient 类以连接到 STS 并请求签发令牌。
首先,您需要实例化客户端:
示例:创建 WSTrustClient
WSTrustClient client = new WSTrustClient("PicketLinkSTS", "PicketLinkSTSPort",
"http://localhost:8080/SecureTokenService/PicketLinkSTS",
new SecurityInfo(username, password));
接下来,您需要使用 WSTrustClient 来要求提供令牌,如 SAML 断言:
示例:包含 Assertion
org.w3c.dom.Element assertion = null;
try {
assertion = client.issueToken(SAMLUtil.SAML2_TOKEN_TYPE);
} catch (WSTrustException wse) {
System.out.println("Unable to issue assertion: " + wse.getMessage());
wse.printStackTrace();
}
断言后,可以通过两种方式将它包含在 并通过 SOAP 消息发送:
客户端可以将 SAML2
Assertion推送到密钥org.picketlink.trust.saml.assertion下的 SOAPMessageContext中。例如:bindingProvider.getRequestContext().put(SAML2Constants.SAML2_ASSERTION_PROPERTY, assertion);-
SAML2
Assertion在安全上下文中作为 JAAS 主题的一部分提供。如果 JAAS 与 PicketLink STS 登录模块的使用进行了交互,则会出现此情况。