/* * JBoss, Home of Professional Open Source * * Copyright 2013 Red Hat, Inc. and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.picketlink.identity.federation.core.wstrust.wrappers; import org.picketlink.identity.federation.ws.addressing.EndpointReferenceType; import org.picketlink.identity.federation.ws.policy.AppliesTo; import org.picketlink.identity.federation.ws.policy.Policy; import org.picketlink.identity.federation.ws.policy.PolicyReference; import org.picketlink.identity.federation.ws.trust.AllowPostdatingType; import org.picketlink.identity.federation.ws.trust.AuthenticatorType; import org.picketlink.identity.federation.ws.trust.DelegateToType; import org.picketlink.identity.federation.ws.trust.EncryptionType; import org.picketlink.identity.federation.ws.trust.EntropyType; import org.picketlink.identity.federation.ws.trust.LifetimeType; import org.picketlink.identity.federation.ws.trust.OnBehalfOfType; import org.picketlink.identity.federation.ws.trust.ProofEncryptionType; import org.picketlink.identity.federation.ws.trust.RenewingType; import org.picketlink.identity.federation.ws.trust.RequestSecurityTokenResponseType; import org.picketlink.identity.federation.ws.trust.RequestedProofTokenType; import org.picketlink.identity.federation.ws.trust.RequestedReferenceType; import org.picketlink.identity.federation.ws.trust.RequestedSecurityTokenType; import org.picketlink.identity.federation.ws.trust.RequestedTokenCancelledType; import org.picketlink.identity.federation.ws.trust.StatusType; import org.picketlink.identity.federation.ws.trust.UseKeyType; import javax.xml.bind.JAXBElement; import javax.xml.namespace.QName; import java.net.URI; import java.net.URISyntaxException; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; /** * <p> * This class represents a WS-Trust {@code RequestSecurityTokenResponse}. It wraps the JAXB representation of the * security token response and offers a series of getter/setter methods that make it easy to work with elements that are * represented by the {@code Any} XML type. * </p> * <p> * The following shows the intended content model of a {@code RequestSecurityTokenResponse}: * * <pre> * <xs:element ref='wst:TokenType' minOccurs='0' /> * <xs:element ref='wst:RequestType' /> * <xs:element ref='wst:RequestedSecurityToken' minOccurs='0' /> * <xs:element ref='wsp:AppliesTo' minOccurs='0' /> * <xs:element ref='wst:RequestedAttachedReference' minOccurs='0' /> * <xs:element ref='wst:RequestedUnattachedReference' minOccurs='0' /> * <xs:element ref='wst:RequestedProofToken' minOccurs='0' /> * <xs:element ref='wst:Entropy' minOccurs='0' /> * <xs:element ref='wst:Lifetime' minOccurs='0' /> * <xs:element ref='wst:Status' minOccurs='0' /> * <xs:element ref='wst:AllowPostdating' minOccurs='0' /> * <xs:element ref='wst:Renewing' minOccurs='0' /> * <xs:element ref='wst:OnBehalfOf' minOccurs='0' /> * <xs:element ref='wst:Issuer' minOccurs='0' /> * <xs:element ref='wst:AuthenticationType' minOccurs='0' /> * <xs:element ref='wst:Authenticator' minOccurs='0' /> * <xs:element ref='wst:KeyType' minOccurs='0' /> * <xs:element ref='wst:KeySize' minOccurs='0' /> * <xs:element ref='wst:SignatureAlgorithm' minOccurs='0' /> * <xs:element ref='wst:Encryption' minOccurs='0' /> * <xs:element ref='wst:EncryptionAlgorithm' minOccurs='0' /> * <xs:element ref='wst:CanonicalizationAlgorithm' minOccurs='0' /> * <xs:element ref='wst:ProofEncryption' minOccurs='0' /> * <xs:element ref='wst:UseKey' minOccurs='0' /> * <xs:element ref='wst:SignWith' minOccurs='0' /> * <xs:element ref='wst:EncryptWith' minOccurs='0' /> * <xs:element ref='wst:DelegateTo' minOccurs='0' /> * <xs:element ref='wst:Forwardable' minOccurs='0' /> * <xs:element ref='wst:Delegatable' minOccurs='0' /> * <xs:element ref='wsp:Policy' minOccurs='0' /> * <xs:element ref='wsp:PolicyReference' minOccurs='0' /> * <xs:any namespace='##other' processContents='lax' minOccurs='0' maxOccurs='unbounded' /> * </pre> * * </p> * * @author <a href="mailto:sguilhen@redhat.com">Stefan Guilhen</a> */ /** * <p> * </p> * * @author <a href="mailto:sguilhen@redhat.com">Stefan Guilhen</a> */ public class RequestSecurityTokenResponse implements BaseRequestSecurityTokenResponse { private final RequestSecurityTokenResponseType delegate; private URI tokenType; private URI requestType; private RequestedSecurityTokenType requestedSecurityToken; private AppliesTo appliesTo; private RequestedReferenceType requestedAttachedReference; private RequestedReferenceType requestedUnattachedReference; private RequestedProofTokenType requestedProofToken; private RequestedTokenCancelledType requestedTokenCancelled; private EntropyType entropy; private Lifetime lifetime; private StatusType status; private AllowPostdatingType allowPostDating; private RenewingType renewing; private OnBehalfOfType onBehalfOf; private EndpointReferenceType issuer; private URI authenticationType; private AuthenticatorType authenticator; private URI keyType; private long keySize; private URI signatureAlgorithm; private EncryptionType encryption; private URI encryptionAlgorithm; private URI canonicalizationAlgorithm; private ProofEncryptionType proofEncryption; private UseKeyType useKey; private URI signWith; private URI encryptWith; private DelegateToType delegateTo; private boolean forwardable; private boolean delegatable; private Policy policy; private PolicyReference policyReference; private final List<Object> extensionElements = new ArrayList<Object>(); /** * <p> * Creates an instance of {@code RequestSecurityTokenResponse}. * </p> */ public RequestSecurityTokenResponse() { this.delegate = new RequestSecurityTokenResponseType(); } /** * <p> * Creates an instance of {@code RequestSecurityTokenResponse} using the specified delegate. * </p> * * @param delegate the JAXB {@code RequestSecurityTokenResponseType} that represents a WS-Trust response. */ public RequestSecurityTokenResponse(RequestSecurityTokenResponseType delegate) { this.delegate = delegate; // parse the delegate's Any contents. try { for (Object obj : this.delegate.getAny()) { if (obj instanceof AppliesTo) { this.appliesTo = (AppliesTo) obj; } else if (obj instanceof Policy) { this.policy = (Policy) obj; } else if (obj instanceof PolicyReference) { this.policyReference = (PolicyReference) obj; } else if (obj instanceof JAXBElement) { JAXBElement<?> element = (JAXBElement<?>) obj; String localName = element.getName().getLocalPart(); if (localName.equalsIgnoreCase("TokenType")) this.tokenType = new URI((String) element.getValue()); else if (localName.equalsIgnoreCase("RequestType")) this.requestType = new URI((String) element.getValue()); else if (localName.equalsIgnoreCase("RequestedSecurityToken")) this.requestedSecurityToken = (RequestedSecurityTokenType) element.getValue(); else if (localName.equalsIgnoreCase("RequestedAttachedReference")) this.requestedAttachedReference = (RequestedReferenceType) element.getValue(); else if (localName.equalsIgnoreCase("RequestedUnattachedReference")) this.requestedUnattachedReference = (RequestedReferenceType) element.getValue(); else if (localName.equalsIgnoreCase("RequestedProofToken")) this.requestedProofToken = (RequestedProofTokenType) element.getValue(); else if (localName.equalsIgnoreCase("RequestedTokenCancelled")) this.requestedTokenCancelled = (RequestedTokenCancelledType) element.getValue(); else if (localName.equalsIgnoreCase("Entropy")) this.entropy = (EntropyType) element.getValue(); else if (localName.equalsIgnoreCase("Lifetime")) this.lifetime = new Lifetime((LifetimeType) element.getValue()); else if (localName.equalsIgnoreCase("Status")) this.status = (StatusType) element.getValue(); else if (localName.equalsIgnoreCase("AllowPostdating")) this.allowPostDating = (AllowPostdatingType) element.getValue(); else if (localName.equalsIgnoreCase("Renewing")) this.renewing = (RenewingType) element.getValue(); else if (localName.equalsIgnoreCase("OnBehalfOf")) this.onBehalfOf = (OnBehalfOfType) element.getValue(); else if (localName.equalsIgnoreCase("Issuer")) this.issuer = (EndpointReferenceType) element.getValue(); else if (localName.equalsIgnoreCase("AuthenticationType")) this.authenticationType = new URI((String) element.getValue()); else if (localName.equalsIgnoreCase("Authenticator")) this.authenticator = (AuthenticatorType) element.getValue(); else if (localName.equalsIgnoreCase("KeyType")) this.keyType = new URI((String) element.getValue()); else if (localName.equalsIgnoreCase("KeySize")) this.keySize = (Long) element.getValue(); else if (localName.equalsIgnoreCase("SignatureAlgorithm")) this.signatureAlgorithm = new URI((String) element.getValue()); else if (localName.equalsIgnoreCase("Encryption")) this.encryption = (EncryptionType) element.getValue(); else if (localName.equalsIgnoreCase("EntropyAlgorithm")) this.encryptionAlgorithm = new URI((String) element.getValue()); else if (localName.equalsIgnoreCase("CanonicalizationAlgorithm")) this.canonicalizationAlgorithm = new URI((String) element.getValue()); else if (localName.equalsIgnoreCase("ProofEncryption")) this.proofEncryption = (ProofEncryptionType) element.getValue(); else if (localName.equalsIgnoreCase("UseKey")) this.useKey = (UseKeyType) element.getValue(); else if (localName.equalsIgnoreCase("SignWith")) this.signWith = new URI((String) element.getValue()); else if (localName.equalsIgnoreCase("EncryptWith")) this.encryptWith = new URI((String) element.getValue()); else if (localName.equalsIgnoreCase("DelegateTo")) this.delegateTo = (DelegateToType) element.getValue(); else if (localName.equalsIgnoreCase("Forwardable")) this.forwardable = (Boolean) element.getValue(); else if (localName.equalsIgnoreCase("Delegatable")) this.delegatable = (Boolean) element.getValue(); else this.extensionElements.add(element.getValue()); } else { this.extensionElements.add(obj); } } } catch (URISyntaxException e) { throw new RuntimeException(e.getMessage(), e); } } /** * <p> * Obtains the {@code URI} that identifies the token type. * </p> * * @return a {@code URI} that represents the token type. */ public URI getTokenType() { return tokenType; } /** * <p> * Sets the token type. * </p> * * @param tokenType a {@code URI} that identifies the token type. */ public void setTokenType(URI tokenType) { this.tokenType = tokenType; this.delegate.addAny(tokenType.toString()); } /** * <p> * Obtains the request type. * </p> * * @return a {@code URI} that identifies the request type. */ public URI getRequestType() { return requestType; } /** * <p> * Sets the request type. The type must be one of the request types described in the WS-Trust specification. * </p> * * @param requestType a {@code URI} that identifies the request type. */ public void setRequestType(URI requestType) { this.requestType = requestType; this.delegate.addAny(requestType.toString()); } /** * <p> * Obtains the requested security token that has been set in the response. * </p> * * @return a reference to the {@code RequestedSecurityTokenType} that contains the token. */ public RequestedSecurityTokenType getRequestedSecurityToken() { return requestedSecurityToken; } /** * <p> * Sets the requested security token in the response. * </p> * * @param requestedSecurityToken the {@code RequestedSecurityTokenType} instance to be set. */ public void setRequestedSecurityToken(RequestedSecurityTokenType requestedSecurityToken) { this.requestedSecurityToken = requestedSecurityToken; this.delegate.addAny(requestedSecurityToken); } /** * <p> * Obtains the scope to which the security token applies. * </p> * * @return a reference to the {@code AppliesTo} instance that represents the token scope. */ public AppliesTo getAppliesTo() { return appliesTo; } /** * <p> * Sets the scope to which the security token applies. * </p> * * @param appliesTo a reference to the {@code AppliesTo} object that represents the scope to be set. */ public void setAppliesTo(AppliesTo appliesTo) { this.appliesTo = appliesTo; this.delegate.addAny(appliesTo); } /** * <p> * Obtains the {@code RequestedAttachedReference} that indicate how to reference the returned token when that token * doesn't * support references using URI fragments (XML ID). * </p> * * @return a {@code RequestedReferenceType} that represents the token reference. */ public RequestedReferenceType getRequestedAttachedReference() { return requestedAttachedReference; } /** * <p> * Sets the {@code RequestedAttachedReference} that indicate how to reference the returned token when that token * doesn't * support references using URI fragments (XML ID). * </p> * * @param requestedAttachedReference the {@code RequestedReferenceType} instance to be set. */ public void setRequestedAttachedReference(RequestedReferenceType requestedAttachedReference) { this.requestedAttachedReference = requestedAttachedReference; this.delegate.addAny(requestedAttachedReference); } /** * <p> * Obtains the {@code RequestedUnattachedReference} that specifies to indicate how to reference the token when it is * not * placed inside the message. * </p> * * @return a {@code RequestedReferenceType} that represents the unattached reference. */ public RequestedReferenceType getRequestedUnattachedReference() { return requestedUnattachedReference; } /** * <p> * Sets the {@code RequestedUnattachedReference} that specifies to indicate how to reference the token when it is * not placed * inside the message. * </p> * * @param requestedUnattachedReference the {@code RequestedReferenceType} instance to be set. */ public void setRequestedUnattachedReference(RequestedReferenceType requestedUnattachedReference) { this.requestedUnattachedReference = requestedUnattachedReference; this.delegate.addAny(requestedUnattachedReference); } /** * <p> * Obtains the proof of possession token that has been set in the response. * </p> * * @return a reference to the {@code RequestedProofTokenType} that contains the token. */ public RequestedProofTokenType getRequestedProofToken() { return requestedProofToken; } /** * <p> * Sets the proof of possesion token in the response. * </p> * * @param requestedProofToken the {@code RequestedProofTokenType} instance to be set. */ public void setRequestedProofToken(RequestedProofTokenType requestedProofToken) { this.requestedProofToken = requestedProofToken; this.delegate.addAny(requestedProofToken); } /** * <p> * Obtains the {@code RequestedTokenCancelled} section of the response, if it has been set. The presence of this * element * indicates that the security token specified in the cancel request has been successfully canceled by the STS. * </p> * * @return a reference to the {@code RequestedTokenCancelledType}, or {@code null} if the response doesn't have a * {@code RequestedTokenCancelled} section. */ public RequestedTokenCancelledType getRequestedTokenCancelled() { return this.requestedTokenCancelled; } /** * <p> * Sets the {@code RequestedTokenCancelled} section of the response. This element is used to inform the client that * the * token specified in a cancel request has been successfully canceled by the STS. * </p> * * @param requestedTokenCancelled a reference to the {@code RequestedTokenCancelledType}. */ public void setRequestedTokenCancelled(RequestedTokenCancelledType requestedTokenCancelled) { this.requestedTokenCancelled = requestedTokenCancelled; this.delegate.addAny(requestedTokenCancelled); } /** * <p> * Obtains the entropy that has been used in creating the key. * </p> * * @return a reference to the {@code EntropyType} that represents the entropy. */ public EntropyType getEntropy() { return entropy; } /** * <p> * Sets the entropy that has been used in creating the key. * </p> * * @param entropy the {@code EntropyType} representing the entropy to be set. */ public void setEntropy(EntropyType entropy) { this.entropy = entropy; this.delegate.addAny(entropy); } /** * <p> * Obtains the lifetime of the security token. * </p> * * @return a reference to the {@code Lifetime} that represents the lifetime of the security token. */ public Lifetime getLifetime() { return lifetime; } /** * <p> * Sets the lifetime of the security token. * </p> * * @param lifetime the {@code Lifetime} object representing the lifetime to be set. */ public void setLifetime(Lifetime lifetime) { this.lifetime = lifetime; this.delegate.addAny(lifetime.getDelegate()); } /** * <p> * Obtains the result of a security token validation. * </p> * * @return a referece to the {@code StatusType} instance that represents the status of the validation. */ public StatusType getStatus() { return status; } /** * <p> * Sets the result of a security token validation. * </p> * * @param status the {@code StatusType} instance to be set. */ public void setStatus(StatusType status) { this.status = status; this.delegate.addAny(status); } /** * <p> * Checks whether the returned token is a postdated token or not. * </p> * * @return {@code null} if the token is not postdated; a {@code AllowPostdatingType} otherwise. */ public AllowPostdatingType getAllowPostDating() { return allowPostDating; } /** * <p> * Specifies whether the returned token is a postdated token or not. * </p> * * @param allowPostDating {@code null} if the token is not postdated; a {@code AllowPostdatingType} otherwise. */ public void setAllowPostDating(AllowPostdatingType allowPostDating) { this.allowPostDating = allowPostDating; this.delegate.addAny(allowPostDating); } /** * <p> * Obtains the renew semantics for the token request. * </p> * * @return a reference to the {@code RenewingType} that represents the renew semantics for the request. */ public RenewingType getRenewing() { return renewing; } /** * <p> * Sets the renew semantics for the token request. * </p> * * @param renewing the {@code RenewingType} object representing the semantics to be set. */ public void setRenewing(RenewingType renewing) { this.renewing = renewing; this.delegate.addAny(renewing); } /** * <p> * Obtains the identity on whose behalf the token request was made. * </p> * * @return a reference to the {@code OnBehalfOfType} that represents the identity on whose behalf the token request * was * made. */ public OnBehalfOfType getOnBehalfOf() { return onBehalfOf; } /** * <p> * Specifies the identity on whose behalf the token request was made. * </p> * * @param onBehalfOf the {@code OnBehalfOfType} object representing the identity to be set. */ public void setOnBehalfOf(OnBehalfOfType onBehalfOf) { this.onBehalfOf = onBehalfOf; this.delegate.addAny(onBehalfOf); } /** * <p> * Obtains the issuer of the token included in the request in the scenarios where the requestor is obtaining a token * on * behalf of another party. * </p> * * @return a reference to the {@code EndpointReferenceType} that represents the issuer. */ public EndpointReferenceType getIssuer() { return this.issuer; } /** * <p> * Sets the issuer of the token included in the request in scenarios where the requestor is obtaining a token on * behalf of * another party. * </p> * * @param issuer the {@code EndpointReferenceType} object representing the issuer to be set. */ public void setIssuer(EndpointReferenceType issuer) { this.issuer = issuer; this.delegate.addAny(issuer); } /** * <p> * Obtains the type of authentication that is to be conducted. * </p> * * @return a {@code URI} that identifies the authentication type. */ public URI getAuthenticationType() { return authenticationType; } /** * <p> * Sets the authentication type in the response. * </p> * * @param authenticationType a {@code URI} that identifies the authentication type to be set. */ public void setAuthenticationType(URI authenticationType) { this.authenticationType = authenticationType; this.delegate.addAny(authenticationType.toString()); } /** * <p> * Obtains the authenticator that must be used in authenticating exchanges. * </p> * * @return a reference to the {@code AuthenticatorType} that represents the authenticator. */ public AuthenticatorType getAuthenticator() { return authenticator; } /** * <p> * Sets the authenticator that must be used in authenticating exchanges. * </p> * * @param authenticator the {@code AuthenticatorType} instance to be set. */ public void setAuthenticator(AuthenticatorType authenticator) { this.authenticator = authenticator; this.delegate.addAny(authenticator); } /** * <p> * Obtains the type of the key that has been set in the response. * </p> * * @return a {@code URI} that identifies the key type. */ public URI getKeyType() { return keyType; } /** * <p> * Sets the key type in the response. * </p> * * @param keyType a {@code URI} that specifies the key type. */ public void setKeyType(URI keyType) { this.keyType = keyType; this.delegate.addAny(keyType.toString()); } /** * <p> * Obtains the size of they key that has been set in the response. * </p> * * @return a {@code long} representing the key size in bytes. */ public long getKeySize() { return keySize; } /** * <p> * Sets the size of the key in the response. * </p> * * @param keySize a {@code long} representing the key size in bytes. */ public void setKeySize(long keySize) { this.keySize = keySize; this.delegate.addAny(keySize); } /** * <p> * Obtains the signature algorithm that has been set in the response. * </p> * * @return a {@code URI} that represents the signature algorithm. */ public URI getSignatureAlgorithm() { return signatureAlgorithm; } /** * <p> * Sets the signature algorithm in the response. * </p> * * @param signatureAlgorithm a {@code URI} that represents the algorithm to be set. */ public void setSignatureAlgorithm(URI signatureAlgorithm) { this.signatureAlgorithm = signatureAlgorithm; this.delegate.addAny(signatureAlgorithm.toString()); } /** * <p> * Obtains the {@code Encryption} section of the response. The {@code Encryption} element indicates that the * requestor * desires any returned secrets in issued security tokens to be encrypted. * </p> * * @return a reference to the {@code EncryptionType} object. */ public EncryptionType getEncryption() { return encryption; } /** * <p> * Sets the {@code Encryption} section of the response. The {@code Encryption} element indicates that the requestor * desires * any returned secrets in issued security tokens to be encrypted. * </p> * * @param encryption the {@code EncryptionType} to be set. */ public void setEncryption(EncryptionType encryption) { this.encryption = encryption; this.delegate.addAny(encryption); } /** * <p> * Obtains the encryption algorithm that has been set in the response. * </p> * * @return a {@code URI} that represents the encryption algorithm. */ public URI getEncryptionAlgorithm() { return encryptionAlgorithm; } /** * <p> * Sets the encryption algorithm in the response. * </p> * * @param encryptionAlgorithm a {@code URI} that represents the encryption algorithm to be set. */ public void setEncryptionAlgorithm(URI encryptionAlgorithm) { this.encryptionAlgorithm = encryptionAlgorithm; this.delegate.addAny(encryptionAlgorithm.toString()); } /** * <p> * Obtains the canonicalization algorithm that has been set in the response. * </p> * * @return a {@code URI} that represents the canonicalization algorithm. */ public URI getCanonicalizationAlgorithm() { return canonicalizationAlgorithm; } /** * <p> * Sets the canonicalization algorithm in the response. * </p> * * @param canonicalizationAlgorithm a {@code URI} that represents the algorithm to be set. */ public void setCanonicalizationAlgorithm(URI canonicalizationAlgorithm) { this.canonicalizationAlgorithm = canonicalizationAlgorithm; this.delegate.addAny(canonicalizationAlgorithm.toString()); } /** * <p> * Obtains the {@code ProofEncryption} section of the response. The {@code ProofEncryption} indicates that the * requestor * desires any returned secrets in issued security tokens to be encrypted. * </p> * * @return a reference to the {@code ProofEncryptionType} object. */ public ProofEncryptionType getProofEncryption() { return proofEncryption; } /** * <p> * Sets the {@code ProofEncryption} section of the response. The {@code ProofEncryption} indicates that the * requestor * desires any returned secrets in issued security tokens to be encrypted. * </p> * * @param proofEncryption the {@code ProofEncryptionType} to be set. */ public void setProofEncryption(ProofEncryptionType proofEncryption) { this.proofEncryption = proofEncryption; this.delegate.addAny(proofEncryption); } /** * <p> * Obtains the key that used in the returned token. * </p> * * @return a reference to the {@code UseKeyType} instance that represents the key used. */ public UseKeyType getUseKey() { return useKey; } /** * <p> * Sets the key that used in the returned token. * </p> * * @param useKey the {@code UseKeyType} instance to be set. */ public void setUseKey(UseKeyType useKey) { this.useKey = useKey; this.delegate.addAny(useKey); } /** * <p> * Obtains the signature algorithm used with the issued security token. * </p> * * @return a {@code URI} representing the algorithm used. */ public URI getSignWith() { return signWith; } /** * <p> * Sets the signature algorithm used with the issued security token. * </p> * * @param signWith a {@code URI} representing the algorithm used. */ public void setSignWith(URI signWith) { this.signWith = signWith; this.delegate.addAny(signWith.toString()); } /** * <p> * Obtains the encryption algorithm used with the issued security token. * </p> * * @return a {@code URI} representing the encryption algorithm used. */ public URI getEncryptWith() { return encryptWith; } /** * <p> * Sets the encryption algorithm used with the issued security token. * </p> * * @param encryptWith a {@code URI} representing the algorithm used. */ public void setEncryptWith(URI encryptWith) { this.encryptWith = encryptWith; this.delegate.addAny(encryptWith.toString()); } /** * <p> * Obtains the identity to which the requested token should be delegated. * </p> * * @return a reference to the {@code DelegateToType} instance that represents the identity. */ public DelegateToType getDelegateTo() { return delegateTo; } /** * <p> * Sets the identity to which the requested token should be delegated. * </p> * * @param delegateTo the {@code DelegateToType} object representing the identity to be set. */ public void setDelegateTo(DelegateToType delegateTo) { this.delegateTo = delegateTo; this.delegate.addAny(delegateTo); } /** * <p> * Indicates whether the requested token has been marked as "forwardable" or not. In general, this flag is used when * a token * is normally bound to the requestor's machine or service. Using this flag, the returned token MAY be used from any * source * machine so long as the key is correctly proven. * </p> * * @return {@code true} if the requested token has been marked as "forwardable"; {@code false} otherwise. */ public boolean isForwardable() { return forwardable; } /** * <p> * Specifies whether the requested token has been marked as "forwardable" or not. In general, this flag is used when * a token * is normally bound to the requestor's machine or service. Using this flag, the returned token MAY be used from any * source * machine so long as the key is correctly proven. * </p> * * @param forwardable {@code true} if the requested token has been marked as "forwardable"; {@code false} * otherwise. */ public void setForwardable(boolean forwardable) { this.forwardable = forwardable; this.delegate.addAny(forwardable); } /** * <p> * Indicates whether the requested token has been marked as "delegatable" or not. Using this flag, the returned * token MAY be * delegated to another party. * </p> * * @return {@code true} if the requested token has been marked as "delegatable"; {@code false} otherwise. */ public boolean isDelegatable() { return delegatable; } /** * <p> * Specifies whether the requested token has been marked as "delegatable" or not. Using this flag, the returned * token MAY be * delegated to another party. * </p> * * @param delegatable {@code true} if the requested token has been marked as "delegatable"; {@code false} * otherwise. */ public void setDelegatable(boolean delegatable) { this.delegatable = delegatable; this.delegate.addAny(delegatable); } /** * <p> * Obtains the {@code Policy} that was associated with the request. The policy specifies defaults that can be * overridden by * the previous properties. * </p> * * @return a reference to the {@code Policy} that was associated with the request. */ public Policy getPolicy() { return policy; } /** * <p> * Sets the {@code Policy} in the response. The policy specifies defaults that can be overridden by the previous * properties. * </p> * * @param policy the {@code Policy} instance to be set. */ public void setPolicy(Policy policy) { this.policy = policy; this.delegate.addAny(policy); } /** * <p> * Obtains the reference to the {@code Policy} that was associated with the request. * </p> * * @return a {@code PolicyReference} that specifies where the {@code Policy} can be found. */ public PolicyReference getPolicyReference() { return policyReference; } /** * <p> * Sets the reference to the {@code Policy} that was associated with the request. * </p> * * @param policyReference the {@code PolicyReference} object to be set. */ public void setPolicyReference(PolicyReference policyReference) { this.policyReference = policyReference; this.delegate.addAny(policyReference); } /** * <p> * Obtains the list of request elements that are not part of the standard content model. * </p> * * @return a {@code List<Object>} containing the extension elements. */ public List<Object> getExtensionElements() { return Collections.unmodifiableList(this.extensionElements); } /** * <p> * Obtains the response context. * </p> * * @return a {@code String} that identifies the original request. */ public String getContext() { return this.delegate.getContext(); } /** * <p> * Sets the response context. * </p> * * @param context a {@code String} that identifies the original request. */ public void setContext(String context) { this.delegate.setContext(context); } /** * <p> * Obtains a map that contains attributes that aren't bound to any typed property on the response. This is a live * reference, * so attributes can be added/changed/removed directly. For this reason, there is no setter method. * </p> * * @return a {@code Map<QName, String>} that contains the attributes. */ public Map<QName, String> getOtherAttributes() { return this.delegate.getOtherAttributes(); } /** * <p> * Gets a reference to the list that holds all response element values. * </p> * * @return a {@code List<Object>} containing all values specified in the response. */ public List<Object> getAny() { return this.delegate.getAny(); } /** * <p> * Obtains a reference to the {@code RequestSecurityTokenResponseType} delegate. * </p> * * @return a reference to the delegate instance. */ public RequestSecurityTokenResponseType getDelegate() { return this.delegate; } }