* Handle an RSTR returned by the Issuer and update Token information into the
* IssuedTokenContext.
*/
public void handleRSTR(
final BaseSTSRequest request, final BaseSTSResponse response, final IssuedTokenContext context) throws WSTrustException{
WSTrustVersion wstVer = WSTrustVersion.getInstance(((STSIssuedTokenConfiguration)context.getSecurityPolicy().get(0)).getProtocol());
RequestSecurityToken rst = (RequestSecurityToken)request;
RequestSecurityTokenResponse rstr = null;
if (response instanceof RequestSecurityTokenResponse){
rstr = (RequestSecurityTokenResponse)response;
}else if (response instanceof RequestSecurityTokenResponseCollection){
rstr = ((RequestSecurityTokenResponseCollection)response).getRequestSecurityTokenResponses().get(0);
}
if (rst.getRequestType().toString().equals(wstVer.getIssueRequestTypeURI())){
String appliesTo = null;
AppliesTo requestAppliesTo = rst.getAppliesTo();
if (requestAppliesTo != null){
appliesTo = WSTrustUtil.getAppliesToURI(requestAppliesTo);
}
//AppliesTo responseAppliesTo = rstr.getAppliesTo();
final RequestedSecurityToken securityToken = rstr.getRequestedSecurityToken();
// Requested References
final RequestedAttachedReference attachedRef = rstr.getRequestedAttachedReference();
final RequestedUnattachedReference unattachedRef = rstr.getRequestedUnattachedReference();
// RequestedProofToken
final RequestedProofToken proofToken = rstr.getRequestedProofToken();
// Obtain the secret key for the context
final byte[] key = getKey(wstVer, rstr, proofToken, rst, appliesTo);
if(key != null){
context.setProofKey(key);
}
//get the creation time and expires time and set it in the context
setLifetime(rstr, context);
// if securityToken == null and proofToken == null
// throw exception
if(securityToken == null && proofToken == null){
log.log(Level.SEVERE,
LogStringsMessages.WST_0018_TOKENS_NULL(appliesTo));
throw new WSTrustException(
LogStringsMessages.WST_0018_TOKENS_NULL(appliesTo));
}
if (securityToken != null){
context.setSecurityToken(securityToken.getToken());
}
if(attachedRef != null){
context.setAttachedSecurityTokenReference(attachedRef.getSTR());
}
if (unattachedRef != null){
context.setUnAttachedSecurityTokenReference(unattachedRef.getSTR());
}
}else if (rst.getRequestType().toString().equals(wstVer.getValidateRequestTypeURI())){
Status status = rstr.getStatus();
context.getOtherProperties().put(IssuedTokenContext.STATUS, status);
final RequestedSecurityToken securityToken = rstr.getRequestedSecurityToken();
if (securityToken != null){
context.setSecurityToken(securityToken.getToken());