int wstVersion = data.getVersion();
// Get the document
Document doc = ((Element) env).getOwnerDocument();
SecurityContextToken sct =
new SecurityContextToken(this.getWSCVersion(data.getTokenType()), doc);
OMElement rstrElem;
if (wstVersion == RahasConstants.VERSION_05_12) {
/**
* If secure conversation version is http://docs.oasis-open.org/ws-sx/ws-trust/200512
* We have to wrap "request security token response" in a "request security token response
* collection".
* See WS-SecureConversation 1.3 spec's Section 3 - Establishing Security Contexts
* for more details.
*/
OMElement requestedSecurityTokenResponseCollection = TrustUtil
.createRequestSecurityTokenResponseCollectionElement(wstVersion, env.getBody());
rstrElem =
TrustUtil.createRequestSecurityTokenResponseElement(wstVersion,
requestedSecurityTokenResponseCollection);
} else {
rstrElem =
TrustUtil.createRequestSecurityTokenResponseElement(wstVersion,
env.getBody());
}
OMElement rstElem =
TrustUtil.createRequestedSecurityTokenElement(wstVersion, rstrElem);
rstElem.addChild((OMElement) sct.getElement());
String tokenType = data.getTokenType();
OMElement reqAttachedRef = null;
OMElement reqUnattachedRef = null;
if (config.addRequestedAttachedRef) {
reqAttachedRef = TrustUtil.createRequestedAttachedRef(wstVersion,
rstrElem,
"#" + sct.getID(),
tokenType);
}
if (config.addRequestedUnattachedRef) {
reqUnattachedRef = TrustUtil.createRequestedUnattachedRef(wstVersion,
rstrElem,
sct.getIdentifier(),
tokenType);
}
//Creation and expiration times
Date creationTime = new Date();
Date expirationTime = new Date();
expirationTime.setTime(creationTime.getTime() + config.ttl);
// Use GMT time in milliseconds
DateFormat zulu = new XmlSchemaDateFormat();
// Add the Lifetime element
TrustUtil.createLifetimeElement(wstVersion,
rstrElem,
zulu.format(creationTime),
zulu.format(expirationTime));
// Store the tokens
Token sctToken = new Token(sct.getIdentifier(),
(OMElement) sct.getElement(),
creationTime,
expirationTime);
if(config.addRequestedAttachedRef) {
sctToken.setAttachedReference(reqAttachedRef.getFirstElement());