2012-12-19 59 views

回答

2

有可能從安全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請求餅乾沒有必要提供用戶憑據。