public void handleStatusResponseType(SAML2HandlerRequest request, SAML2HandlerResponse response) throws ProcessingException { //Handler a log out response from IDP StatusResponseType statusResponseType = (StatusResponseType) request.getSAML2Object(); HTTPContext httpContext = (HTTPContext) request.getContext(); HttpServletRequest servletRequest = httpContext.getRequest(); HttpSession session = servletRequest.getSession(false); //TODO: Deal with partial logout report StatusType statusType = statusResponseType.getStatus(); StatusCodeType statusCode = statusType.getStatusCode(); StatusCodeType secondLevelstatusCode = statusCode.getStatusCode(); if (secondLevelstatusCode.getValue().toString().equals(JBossSAMLURIConstants.STATUS_SUCCESS.get())) { //we are successfully logged out session.invalidate(); } }
/** * <p>Create a <code>StatusType</code> with a top-level <code>org.picketlink.common.constants.JBossSAMLURIConstants.STATUS_RESPONDER</code> * and a second-level code reflecting the given <code>statusCodeURI</code>.</p> * * @param statusCodeURI The second-level code. * * @return */ public static StatusType createStatusTypeForResponder(String statusCodeURI) { StatusCodeType topLevelCode = new StatusCodeType(); topLevelCode.setValue(URI.create(JBossSAMLURIConstants.STATUS_RESPONDER.get())); StatusCodeType secondLevelCode = new StatusCodeType(); secondLevelCode.setValue(URI.create(statusCodeURI)); topLevelCode.setStatusCode(secondLevelCode); StatusType statusType = new StatusType(); statusType.setStatusCode(topLevelCode); return statusType; }
/** * Create a StatusType given the status code uri * @param statusCodeURI * @return */ public static StatusType createStatusType(String statusCodeURI) { StatusCodeType sct = new StatusCodeType(); sct.setValue(URI.create(statusCodeURI)); StatusType statusType = new StatusType(); statusType.setStatusCode(sct); return statusType; }
public void processIDPResponse(HttpServletRequest httpRequest, HttpServletResponse httpResponse, StatusResponseType response, RequestContext requestContext, SamlIdentityProvider idp) { if (response.getStatus() != null && response.getStatus().getStatusCode().getValue().equals(JBossSAMLURIConstants.STATUS_SUCCESS.get())) { Identity.instance().logout(); } else { throw new RuntimeException("Single logout failed. Status code: " + (response.getStatus() == null ? "null" : response.getStatus().getStatusCode().getValue())); } try { httpResponse.sendRedirect(serviceProvider.getLoggedOutUrl()); } catch (IOException e) { throw new RuntimeException(e); } } }
public StatusResponseType createStatusResponse(RequestAbstractType request, String statusCode, String statusMessage) { ObjectFactory objectFactory = new ObjectFactory(); org.picketlink.identity.federation.saml.v2.assertion.ObjectFactory assertionObjectFactory = new org.picketlink.identity.federation.saml.v2.assertion.ObjectFactory(); StatusResponseType response = objectFactory.createStatusResponseType(); response.setID(generateId()); response.setIssueInstant(generateIssueInstant()); NameIDType issuer = assertionObjectFactory.createNameIDType(); issuer.setValue(serviceProvider.getSamlConfiguration().getEntityId()); response.setIssuer(issuer); response.setVersion(JBossSAMLConstants.VERSION_2_0.get()); response.setInResponseTo(request.getID()); StatusCodeType statusCodeJaxb = objectFactory.createStatusCodeType(); statusCodeJaxb.setValue(statusCode); StatusType statusType = objectFactory.createStatusType(); statusType.setStatusCode(statusCodeJaxb); if (statusMessage != null) { statusType.setStatusMessage(statusMessage); } response.setStatus(statusType); return response; }
/** * Create a StatusType given the status code uri * * @param statusCodeURI * * @return */ public static StatusType createStatusType(String statusCodeURI) { StatusCodeType sct = new StatusCodeType(); sct.setValue(URI.create(statusCodeURI)); StatusType statusType = new StatusType(); statusType.setStatusCode(sct); return statusType; }
public void handleStatusResponseType(SAML2HandlerRequest request, SAML2HandlerResponse response) throws ProcessingException { // Handler a log out response from IDP StatusResponseType statusResponseType = (StatusResponseType) request.getSAML2Object(); checkDestination(statusResponseType.getDestination(), getSPConfiguration().getServiceURL()); HTTPContext httpContext = (HTTPContext) request.getContext(); HttpServletRequest servletRequest = httpContext.getRequest(); HttpSession session = servletRequest.getSession(false); // TODO: Deal with partial logout report StatusType statusType = statusResponseType.getStatus(); StatusCodeType statusCode = statusType.getStatusCode(); URI statusCodeValueURI = statusCode.getValue(); boolean success = false; if (statusCodeValueURI != null) { String statusCodeValue = statusCodeValueURI.toString(); if (JBossSAMLURIConstants.STATUS_SUCCESS.get().equals(statusCodeValue)) { success = true; session.invalidate(); } } }
/** * <p>Create a <code>StatusType</code> with a top-level <code>org.picketlink.common.constants.JBossSAMLURIConstants.STATUS_RESPONDER</code> * and a second-level code reflecting the given <code>statusCodeURI</code>.</p> * * @param statusCodeURI The second-level code. * * @return */ public static StatusType createStatusTypeForResponder(String statusCodeURI) { StatusCodeType topLevelCode = new StatusCodeType(); topLevelCode.setValue(URI.create(JBossSAMLURIConstants.STATUS_RESPONDER.get())); StatusCodeType secondLevelCode = new StatusCodeType(); secondLevelCode.setValue(URI.create(statusCodeURI)); topLevelCode.setStatusCode(secondLevelCode); StatusType statusType = new StatusType(); statusType.setStatusCode(topLevelCode); return statusType; }
/** * Create a StatusType given the status code uri * @param statusCodeURI * @return */ public static StatusType createStatusType(String statusCodeURI) { StatusCodeType sct = new StatusCodeType(); sct.setValue(URI.create(statusCodeURI)); StatusType statusType = new StatusType(); statusType.setStatusCode(sct); return statusType; }
public void handleStatusResponseType(SAML2HandlerRequest request, SAML2HandlerResponse response) throws ProcessingException { // Handler a log out response from IDP StatusResponseType statusResponseType = (StatusResponseType) request.getSAML2Object(); HTTPContext httpContext = (HTTPContext) request.getContext(); HttpServletRequest servletRequest = httpContext.getRequest(); HttpSession session = servletRequest.getSession(false); // TODO: Deal with partial logout report StatusType statusType = statusResponseType.getStatus(); StatusCodeType statusCode = statusType.getStatusCode(); URI statusCodeValueURI = statusCode.getValue(); boolean success = false; if(statusCodeValueURI != null){ String statusCodeValue = statusCodeValueURI.toString(); if(JBossSAMLURIConstants.STATUS_SUCCESS.get().equals(statusCodeValue)){ success = true; } } if(success){ // we are successfully logged out session.invalidate(); } else { StatusCodeType secondLevelstatusCode = statusCode.getStatusCode(); if (secondLevelstatusCode != null && secondLevelstatusCode.getValue().toString().equals(JBossSAMLURIConstants.STATUS_SUCCESS.get())) { // we are successfully logged out session.invalidate(); } } }
public void handleStatusResponseType(SAML2HandlerRequest request, SAML2HandlerResponse response) throws ProcessingException { // Handler a log out response from IDP StatusResponseType statusResponseType = (StatusResponseType) request.getSAML2Object(); checkDestination(statusResponseType.getDestination(), getSPConfiguration().getServiceURL()); HTTPContext httpContext = (HTTPContext) request.getContext(); HttpServletRequest servletRequest = httpContext.getRequest(); HttpSession session = servletRequest.getSession(false); // TODO: Deal with partial logout report StatusType statusType = statusResponseType.getStatus(); StatusCodeType statusCode = statusType.getStatusCode(); URI statusCodeValueURI = statusCode.getValue(); boolean success = false; if (statusCodeValueURI != null) { String statusCodeValue = statusCodeValueURI.toString(); if (JBossSAMLURIConstants.STATUS_SUCCESS.get().equals(statusCodeValue)) { success = true; session.invalidate(); } } }
StatusCodeType statusCodeType = new StatusCodeType(); statusCodeType.setValue(URI.create(JBossSAMLURIConstants.STATUS_RESPONDER.get())); StatusCodeType status2ndLevel = new StatusCodeType(); status2ndLevel.setValue(URI.create(JBossSAMLURIConstants.STATUS_SUCCESS.get())); statusCodeType.setStatusCode(status2ndLevel);
/** * Create a StatusType given the status code uri * * @param statusCodeURI * @return */ public static StatusType createStatusType(String statusCodeURI) { StatusCodeType sct = new StatusCodeType(); sct.setValue(URI.create(statusCodeURI)); StatusType statusType = new StatusType(); statusType.setStatusCode(sct); return statusType; }
public void handleStatusResponseType(SAML2HandlerRequest request, SAML2HandlerResponse response) throws ProcessingException { //Handler a log out response from IDP StatusResponseType statusResponseType = (StatusResponseType) request.getSAML2Object(); HTTPContext httpContext = (HTTPContext) request.getContext(); HttpServletRequest servletRequest = httpContext.getRequest(); HttpSession session = servletRequest.getSession(false); //TODO: Deal with partial logout report StatusType statusType = statusResponseType.getStatus(); StatusCodeType statusCode = statusType.getStatusCode(); StatusCodeType secondLevelstatusCode = statusCode.getStatusCode(); if (secondLevelstatusCode.getValue().toString().equals(JBossSAMLURIConstants.STATUS_SUCCESS.get())) { //we are successfully logged out session.invalidate(); } }
throw new IllegalArgumentException(ErrorCodes.NULL_VALUE + "Status Type from the IDP"); String statusValue = statusType.getStatusCode().getValue().toASCIIString(); if (JBossSAMLURIConstants.STATUS_SUCCESS.get().equals(statusValue) == false) throw new SecurityException(ErrorCodes.IDP_AUTH_FAILED + "IDP forbid the user");
StatusCodeType statusCodeType = new StatusCodeType(); statusCodeType.setValue(URI.create(JBossSAMLURIConstants.STATUS_RESPONDER.get())); StatusCodeType status2ndLevel = new StatusCodeType(); status2ndLevel.setValue(URI.create(JBossSAMLURIConstants.STATUS_SUCCESS.get())); statusCodeType.setStatusCode(status2ndLevel);
/** * Create a StatusType given the status code uri * * @param statusCodeURI * * @return */ public static StatusType createStatusType(String statusCodeURI) { StatusCodeType sct = new StatusCodeType(); sct.setValue(URI.create(statusCodeURI)); StatusType statusType = new StatusType(); statusType.setStatusCode(sct); return statusType; }
/** * Write a {@code StatusCodeType} to stream * * @param statusCodeType * @param out * @throws ProcessingException */ public void write(StatusCodeType statusCodeType) throws ProcessingException { StaxUtil.writeStartElement(writer, PROTOCOL_PREFIX, JBossSAMLConstants.STATUS_CODE.get(), PROTOCOL_NSURI.get()); URI value = statusCodeType.getValue(); if (value != null) { StaxUtil.writeAttribute(writer, JBossSAMLConstants.VALUE.get(), value.toASCIIString()); } StatusCodeType subStatusCode = statusCodeType.getStatusCode(); if (subStatusCode != null) write(subStatusCode); StaxUtil.writeEndElement(writer); StaxUtil.flush(writer); }
throw new IllegalArgumentException(ErrorCodes.NULL_VALUE + "Status Type from the IDP"); String statusValue = statusType.getStatusCode().getValue().toASCIIString(); if (JBossSAMLURIConstants.STATUS_SUCCESS.get().equals(statusValue) == false) throw new SecurityException(ErrorCodes.IDP_AUTH_FAILED + "IDP forbid the user");
String elementTag = startElementName.getLocalPart(); StatusCodeType statusCode = new StatusCodeType(); if (valueAttr != null) statusCode.setValue(URI.create(StaxParserUtil.getAttributeValue(valueAttr))); if (JBossSAMLConstants.STATUS_CODE.get().equals(elementTag)) StatusCodeType subStatusCodeType = new StatusCodeType(); startElement = StaxParserUtil.getNextStartElement(xmlEventReader); Attribute subValueAttr = startElement.getAttributeByName(new QName("Value")); if (subValueAttr != null) subStatusCodeType.setValue(URI.create(StaxParserUtil.getAttributeValue(subValueAttr))); statusCode.setStatusCode(subStatusCodeType);