for (final SessionIndex index : ((LogoutRequest) message).getSessionIndexes()) { if (index != null && index.getSessionIndex() != null) { indexes.add(index.getSessionIndex());
/** {@inheritDoc} */ protected void processChildElement(XMLObject parentSAMLObject, XMLObject childSAMLObject) throws UnmarshallingException { LogoutRequest req = (LogoutRequest) parentSAMLObject; if (childSAMLObject instanceof BaseID) { req.setBaseID((BaseID) childSAMLObject); } else if (childSAMLObject instanceof NameID) { req.setNameID((NameID) childSAMLObject); } else if (childSAMLObject instanceof EncryptedID) { req.setEncryptedID((EncryptedID) childSAMLObject); } else if (childSAMLObject instanceof SessionIndex) { req.getSessionIndexes().add((SessionIndex) childSAMLObject); } else { super.processChildElement(parentSAMLObject, childSAMLObject); } } }
if (logoutRequest.getSessionIndexes().isEmpty()) { return true; for (final SessionIndex index : logoutRequest.getSessionIndexes()) { if (index.getSessionIndex() != null && index.getSessionIndex().equals(saml2Session.getSessionIndex())) {
logoutRequest.getSessionIndexes() .stream() .findFirst()
public static LogoutRequest createLogoutRequest( Issuer issuer, NameID nameId, String id, List<String> sessionIndexes) { LogoutRequest logoutRequest = logoutRequestBuilder.buildObject(); logoutRequest.setID(id); logoutRequest.setIssuer(issuer); logoutRequest.setNameID(nameId); logoutRequest.setIssueInstant(DateTime.now()); logoutRequest.setVersion(SAMLVersion.VERSION_20); SessionIndexBuilder builder = new SessionIndexBuilder(); for (String index : sessionIndexes) { SessionIndex sessionIndexObject = builder.buildObject(); sessionIndexObject.setSessionIndex(index); logoutRequest.getSessionIndexes().add(sessionIndexObject); } return logoutRequest; }
/** * Validates the SAML logout request. * * @param logoutRequest the logout request * @param context the context * @param engine the signature engine */ protected void validateLogoutRequest(final LogoutRequest logoutRequest, final SAML2MessageContext context, final SignatureTrustEngine engine) { validateSignatureIfItExists(logoutRequest.getSignature(), context, engine); // don't check because of CAS v5 //validateIssueInstant(logoutRequest.getIssueInstant()); validateIssuerIfItExists(logoutRequest.getIssuer(), context); final EncryptedID encryptedID = logoutRequest.getEncryptedID(); if (encryptedID != null) { decryptEncryptedId(encryptedID, decrypter); } final List<SessionIndex> sessionIndexes = logoutRequest.getSessionIndexes(); if (sessionIndexes == null || sessionIndexes.size() != 1) { throw new SAMLException("We must have one session index in the logout request"); } String sessionIndex = sessionIndexes.get(0).getSessionIndex(); final String bindingUri = context.getSAMLBindingContext().getBindingUri(); if (SAMLConstants.SAML2_SOAP11_BINDING_URI.equals(bindingUri)) { logoutHandler.destroySessionBack(context.getWebContext(), sessionIndex); } else { logoutHandler.destroySessionFront(context.getWebContext(), sessionIndex); } }
final SessionIndex index = indexBuilder.buildObject(); index.setSessionIndex(saml2Session.getSessionIndex()); object.getSessionIndexes().add(index);
logoutRequest.setIssuer(issuer); logoutRequest.setNameID(nameId); logoutRequest.getSessionIndexes().add(sessionIndexElement);
logoutRequest.getSessionIndexes().add(sessionIndex);
final SessionIndex sessionIdx = sessionIndexBuilder.buildObject(); sessionIdx.setSessionIndex(sessIdx); request.getSessionIndexes().add(sessionIdx);