1
我有一個使用HTTP(REST API)調用單元中另一服務器的EJB。如何在從EJB調用HTTP時佔用WebSphere安全性令牌
在EJB上下文中,用戶已經過身份驗證和授權,如何將安全令牌傳播到其他服務器,從而避免在請求中提供憑據?
我有一個使用HTTP(REST API)調用單元中另一服務器的EJB。如何在從EJB調用HTTP時佔用WebSphere安全性令牌
在EJB上下文中,用戶已經過身份驗證和授權,如何將安全令牌傳播到其他服務器,從而避免在請求中提供憑據?
有可能從安全subject
獲得WebSphere的Ltpa
令牌,並把它作爲一個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
請求餅乾沒有必要提供用戶憑據。