gpt4 book ai didi

security - 从 EJB 调用 HTTP 时如何传播 WebSphere 安全 token

转载 作者:可可西里 更新时间:2023-11-01 17:11:06 25 4
gpt4 key购买 nike

我有一个 EJB,它使用 HTTP (REST api) 调用单元中的另一个服务器。

在 EJB 上下文中,用户已经过身份验证和授权,我如何才能将安全 token 传播到其他服务器而无需在请求中提供凭据?

最佳答案

可以从安全性 subject 获取 WebSphere 的 Ltpa token 并将其作为 cookie 传递给 HTTP 调用:

public static SingleSignonToken getSSOTokenFromSubject(final Subject subject) {
if (subject == null) {
return null;
}
return AccessController.doPrivileged(new PrivilegedAction<SingleSignonToken>() {
public SingleSignonToken run() {
Set<SingleSignonToken> ssoTokens = subject.getPrivateCredentials(SingleSignonToken.class);
for (SingleSignonToken ssoToken : ssoTokens) {
if (ssoToken.getName().equals("LtpaToken")) {
return ssoToken;
}
}

return null;
}
});
}

// Get cookie to add to outgoing HTTP requests
SingleSignonToken ssoToken = getSSOTokenFromSubject(subject);

String ssoTokenStr = null;
if (ssoToken != null) {
byte[] ssoTokenBytes = ssoToken.getBytes();
ssoTokenStr = com.ibm.ws.util.Base64.encode(ssoTokenBytes);
}
String ssoTokenCookie = "LtpaToken2=" + ssoTokenStr;

通过将 ssoTokenCookie 添加到请求 cookie 中,无需提供用户凭据。

关于security - 从 EJB 调用 HTTP 时如何传播 WebSphere 安全 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13949055/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com