Search in sources :

Example 16 with FSMsgException

use of com.sun.identity.federation.message.common.FSMsgException in project OpenAM by OpenRock.

the class FSFederationTerminationNotification method toXMLString.

/**
     * Returns a String representation of the <samlp:Response> element.
     *
     * @param includeNS Determines whether or not the namespace qualifier
     *        is prepended to the Element when converted
     * @param declareNS Determines whether or not the namespace is declared
     *        within the Element.
     * @param includeHeader Determines whether the output include the xml
     *        declaration header.
     * @return a string containing the valid XML for this element
     * @throws FSMsgException if there is an error converting
     *         this object ot a string.
     */
public String toXMLString(boolean includeNS, boolean declareNS, boolean includeHeader) throws FSMsgException {
    if ((providerId == null) || (providerId.length() == 0)) {
        FSUtils.debug.error("FSFederationTerminationNotification.toXMLString" + ": providerId is null in the request with requestId:" + requestID);
        String[] args = { requestID };
        throw new FSMsgException("nullProviderIdWRequestId", args);
    }
    if ((requestID == null) || (requestID.length() == 0)) {
        requestID = SAMLUtils.generateID();
        if (requestID == null) {
            FSUtils.debug.error("FSFederationTerminationNotification." + "toXMLString: couldn't generate RequestID.");
            throw new FSMsgException("errorGenerateID", null);
        }
    }
    StringBuffer xml = new StringBuffer(300);
    if (includeHeader) {
        xml.append(IFSConstants.XML_PREFIX).append(IFSConstants.QUOTE).append(IFSConstants.SPACE).append(IFSConstants.QUESTION_MARK).append(IFSConstants.RIGHT_ANGLE);
    }
    String prefix = "";
    String uriSAML = "";
    String uri = "";
    if (includeNS) {
        prefix = IFSConstants.LIB_PREFIX;
    }
    if (declareNS) {
        uri = IFSConstants.LIB_NAMESPACE_STRING;
        if (minorVersion == IFSConstants.FF_12_PROTOCOL_MINOR_VERSION) {
            uri = IFSConstants.LIB_12_NAMESPACE_STRING;
        }
        uriSAML = IFSConstants.assertionDeclareStr;
    }
    String instantString = DateUtils.toUTCDateFormat(issueInstant);
    if (requestID != null) {
        xml.append(IFSConstants.LEFT_ANGLE).append(prefix).append(IFSConstants.FEDERATION_TERMINATION_NOTICFICATION).append(uri).append(uriSAML).append(IFSConstants.SPACE);
        if (minorVersion == IFSConstants.FF_11_PROTOCOL_MINOR_VERSION && id != null && !(id.length() == 0)) {
            xml.append(IFSConstants.SPACE).append("id").append(IFSConstants.EQUAL_TO).append(IFSConstants.QUOTE).append(id).append(IFSConstants.QUOTE).append(IFSConstants.SPACE);
        }
        xml.append(IFSConstants.REQUEST_ID).append(IFSConstants.EQUAL_TO).append(IFSConstants.QUOTE).append(requestID).append(IFSConstants.QUOTE).append(IFSConstants.SPACE).append(IFSConstants.MAJOR_VERSION).append(IFSConstants.EQUAL_TO).append(IFSConstants.QUOTE).append(majorVersion).append(IFSConstants.QUOTE).append(IFSConstants.SPACE).append(IFSConstants.MINOR_VERSION).append(IFSConstants.EQUAL_TO).append(IFSConstants.QUOTE).append(minorVersion).append(IFSConstants.QUOTE).append(IFSConstants.SPACE).append(IFSConstants.ISSUE_INSTANT).append(IFSConstants.EQUAL_TO).append(IFSConstants.QUOTE).append(instantString).append(IFSConstants.QUOTE).append(IFSConstants.RIGHT_ANGLE);
        if ((respondWiths != null) && (respondWiths != Collections.EMPTY_LIST)) {
            Iterator i = respondWiths.iterator();
            while (i.hasNext()) {
                xml.append(IFSConstants.LEFT_ANGLE).append(prefix).append(IFSConstants.RESPONDWITH).append(IFSConstants.RIGHT_ANGLE).append((String) i.next()).append(IFSConstants.START_END_ELEMENT).append(prefix).append(IFSConstants.RESPONDWITH).append(IFSConstants.LEFT_ANGLE);
            }
        }
        if (signed) {
            if (signatureString != null) {
                xml.append(signatureString);
            } else if (signature != null) {
                signatureString = XMLUtils.print(signature);
                xml.append(signatureString);
            }
        }
        xml.append(IFSConstants.LEFT_ANGLE).append(prefix).append(IFSConstants.PROVIDER_ID).append(uri).append(IFSConstants.RIGHT_ANGLE).append(providerId).append(IFSConstants.START_END_ELEMENT).append(prefix).append(IFSConstants.PROVIDER_ID).append(IFSConstants.RIGHT_ANGLE);
        if (nameIdentifier != null) {
            xml.append(nameIdentifier.toString());
        }
        if (relayState != null) {
            xml.append(IFSConstants.LEFT_ANGLE).append(prefix).append(IFSConstants.RELAY_STATE).append(uri).append(IFSConstants.RIGHT_ANGLE).append(providerId).append(IFSConstants.START_END_ELEMENT).append(prefix).append(IFSConstants.RELAY_STATE).append(IFSConstants.RIGHT_ANGLE);
        }
        xml.append(IFSConstants.START_END_ELEMENT).append(prefix).append(IFSConstants.FEDERATION_TERMINATION_NOTICFICATION).append(IFSConstants.RIGHT_ANGLE);
    } else {
        if (FSUtils.debug.messageEnabled()) {
            FSUtils.debug.message("FSFederationTerminationNotification." + "toString: requestID is null ");
        }
        throw new FSMsgException("nullRequestID", null);
    }
    return xml.toString();
}
Also used : FSMsgException(com.sun.identity.federation.message.common.FSMsgException) Iterator(java.util.Iterator)

Example 17 with FSMsgException

use of com.sun.identity.federation.message.common.FSMsgException in project OpenAM by OpenRock.

the class FSFederationTerminationNotification method parseXML.

/**
     * Returns the <code>FSAuthnRequest</code> object.
     *
     * @param xml the XML string to be parsed.
     * @return <code>FSAuthnRequest</code> object created from the XML string.
     * @throws FSMsgException if there is
     *         error creating the object.
     */
public static FSFederationTerminationNotification parseXML(String xml) throws FSMsgException {
    Document doc = XMLUtils.toDOMDocument(xml, FSUtils.debug);
    if (doc == null) {
        if (FSUtils.debug.messageEnabled()) {
            FSUtils.debug.message("FSFederationTerminationNotification.parseXML:Error " + "while parsing input xml string");
        }
        throw new FSMsgException("parseError", null);
    }
    Element root = doc.getDocumentElement();
    return new FSFederationTerminationNotification(root);
}
Also used : FSMsgException(com.sun.identity.federation.message.common.FSMsgException) Element(org.w3c.dom.Element) Document(org.w3c.dom.Document)

Example 18 with FSMsgException

use of com.sun.identity.federation.message.common.FSMsgException in project OpenAM by OpenRock.

the class FSLogoutNotification method toURLEncodedQueryString.

/**
     * Returns an URL Encoded String.
     *
     * @return a url encoded query string.
     * @throws FSMsgException if there is an error.
     */
public String toURLEncodedQueryString() throws FSMsgException {
    if ((providerId == null) || (providerId.length() == 0)) {
        FSUtils.debug.error("FSLogoutNotification.toURLEncodedQueryString: " + "providerId is null in the request with requestId:" + requestID);
        String[] args = { requestID };
        throw new FSMsgException("nullProviderIdWRequestId", args);
    }
    if ((requestID == null) || (requestID.length() == 0)) {
        requestID = SAMLUtils.generateID();
        if (requestID == null) {
            FSUtils.debug.error("FSLogoutNotification.toURLEncodedQueryString: " + "couldn't generate RequestID.");
            throw new FSMsgException("errorGenerateID", null);
        }
    }
    StringBuffer urlEncodedAuthnReq = new StringBuffer(300);
    urlEncodedAuthnReq.append(IFSConstants.REQUEST_ID).append(IFSConstants.EQUAL_TO).append(URLEncDec.encode(requestID)).append(IFSConstants.AMPERSAND).append(IFSConstants.MAJOR_VERSION).append(IFSConstants.EQUAL_TO).append(majorVersion).append(IFSConstants.AMPERSAND).append(IFSConstants.MINOR_VERSION).append(IFSConstants.EQUAL_TO).append(minorVersion).append(IFSConstants.AMPERSAND);
    if (issueInstant != null) {
        urlEncodedAuthnReq.append(IFSConstants.ISSUE_INSTANT).append(IFSConstants.EQUAL_TO).append(URLEncDec.encode(DateUtils.toUTCDateFormat(issueInstant))).append(IFSConstants.AMPERSAND);
        if (minorVersion == IFSConstants.FF_12_PROTOCOL_MINOR_VERSION) {
            notOnOrAfter = new Date(issueInstant.getTime() + IFSConstants.ASSERTION_TIMEOUT_ALLOWED_DIFFERENCE);
            urlEncodedAuthnReq.append(IFSConstants.NOT_ON_OR_AFTER).append(IFSConstants.EQUAL_TO).append(URLEncDec.encode(DateUtils.toUTCDateFormat(notOnOrAfter))).append(IFSConstants.AMPERSAND);
        }
    } else {
        FSUtils.debug.error("FSLogoutNotification." + "toURLEncodedQueryString: issueInstant missing");
        String[] args = { IFSConstants.ISSUE_INSTANT };
        throw new FSMsgException("missingAttribute", args);
    }
    if (providerId != null && providerId.length() != 0) {
        urlEncodedAuthnReq.append(IFSConstants.PROVIDER_ID).append(IFSConstants.EQUAL_TO).append(URLEncDec.encode(providerId)).append(IFSConstants.AMPERSAND);
    }
    if (sessionIndex != null && sessionIndex.length() != 0) {
        urlEncodedAuthnReq.append(IFSConstants.SESSION_INDEX).append(IFSConstants.EQUAL_TO).append(URLEncDec.encode(sessionIndex)).append(IFSConstants.AMPERSAND);
    }
    if (relayState != null && relayState.length() != 0) {
        urlEncodedAuthnReq.append(IFSConstants.RELAY_STATE).append(IFSConstants.EQUAL_TO).append(URLEncDec.encode(relayState)).append(IFSConstants.AMPERSAND);
    }
    if (nameIdentifier != null) {
        if (nameIdentifier.getName() != null && nameIdentifier.getName().length() != 0) {
            urlEncodedAuthnReq.append(IFSConstants.NAME).append(IFSConstants.EQUAL_TO).append(URLEncDec.encode(nameIdentifier.getName())).append(IFSConstants.AMPERSAND).append(IFSConstants.NAME_IDENTIFIER).append(IFSConstants.EQUAL_TO).append(URLEncDec.encode(nameIdentifier.getName())).append(IFSConstants.AMPERSAND);
        }
        if (nameIdentifier.getNameQualifier() != null && nameIdentifier.getNameQualifier().length() != 0) {
            urlEncodedAuthnReq.append(IFSConstants.NAME_QUALIFIER).append(IFSConstants.EQUAL_TO).append(URLEncDec.encode(nameIdentifier.getNameQualifier())).append(IFSConstants.AMPERSAND);
        }
        if (nameIdentifier.getFormat() != null && nameIdentifier.getFormat().length() != 0) {
            urlEncodedAuthnReq.append(IFSConstants.NAME_FORMAT).append(IFSConstants.EQUAL_TO).append(URLEncDec.encode(nameIdentifier.getFormat())).append(IFSConstants.AMPERSAND);
        }
    }
    return urlEncodedAuthnReq.toString();
}
Also used : FSMsgException(com.sun.identity.federation.message.common.FSMsgException) Date(java.util.Date)

Example 19 with FSMsgException

use of com.sun.identity.federation.message.common.FSMsgException in project OpenAM by OpenRock.

the class FSLogoutNotification method parseURLEncodedRequest.

/**
     * Returns <code>FSLogoutNotification</code> object. The
     * object is created by parsing the <code>HttpServletRequest</code>
     * object.
     *
     * @param request the <code>HttpServletRequest</code> object.
     * @return <code>FSLogoutNotification</code> object.
     * @throws FSMsgException if there is an error
     *         creating <code>FSAuthnRequest</code> object.
     */
public static FSLogoutNotification parseURLEncodedRequest(HttpServletRequest request) throws FSMsgException {
    try {
        FSLogoutNotification retLogoutNotification = new FSLogoutNotification();
        String requestID = request.getParameter("RequestID");
        if (requestID != null) {
            retLogoutNotification.requestID = requestID;
        } else {
            String[] args = { IFSConstants.REQUEST_ID };
            throw new FSMsgException("missingAttribute", args);
        }
        try {
            retLogoutNotification.majorVersion = Integer.parseInt(request.getParameter(IFSConstants.MAJOR_VERSION));
            FSUtils.debug.message("Majorversion : " + retLogoutNotification.majorVersion);
            retLogoutNotification.minorVersion = Integer.parseInt(request.getParameter(IFSConstants.MINOR_VERSION));
            FSUtils.debug.message("Minorversion : " + retLogoutNotification.minorVersion);
        } catch (NumberFormatException ex) {
            FSUtils.debug.message("FSLogoutNotification. " + "parseURLEncodedRequest:Major/Minor version problem");
            throw new FSMsgException("invalidNumber", null);
        }
        String instantString = request.getParameter(IFSConstants.ISSUE_INSTANT);
        if (instantString == null || instantString.length() == 0) {
            String[] args = { IFSConstants.ISSUE_INSTANT };
            throw new FSMsgException("missingAttribute", args);
        }
        try {
            retLogoutNotification.issueInstant = DateUtils.stringToDate(instantString);
        } catch (ParseException e) {
            throw new FSMsgException("parseError", null);
        }
        String notAfter = request.getParameter(IFSConstants.NOT_ON_OR_AFTER);
        if (notAfter != null && notAfter.length() != 0) {
            try {
                retLogoutNotification.notOnOrAfter = DateUtils.stringToDate(notAfter);
            } catch (ParseException pe) {
                FSUtils.debug.message("FSLogoutNotification.parseURLEncoded" + "Request: parsing exception", pe);
            }
        }
        String providerId = request.getParameter(IFSConstants.PROVIDER_ID);
        if (providerId != null) {
            retLogoutNotification.providerId = providerId;
        } else {
            throw new FSMsgException("missingElement", null);
        }
        String sessionIndex = request.getParameter(IFSConstants.SESSION_INDEX);
        if (sessionIndex != null) {
            retLogoutNotification.sessionIndex = sessionIndex;
        }
        String relayState = request.getParameter(IFSConstants.RELAY_STATE);
        if (relayState != null) {
            retLogoutNotification.relayState = relayState;
        }
        String nameFormat = request.getParameter(IFSConstants.NAME_FORMAT);
        String nameQualifier = request.getParameter(IFSConstants.NAME_QUALIFIER);
        String name = request.getParameter(IFSConstants.NAME);
        if (name == null) {
            name = request.getParameter(IFSConstants.NAME_IDENTIFIER);
        }
        if (name == null) {
            throw new FSMsgException("missingElement", null);
        }
        retLogoutNotification.nameIdentifier = new NameIdentifier(name, nameQualifier, nameFormat);
        FSUtils.debug.message("Returning Logout Object");
        return retLogoutNotification;
    } catch (Exception e) {
        throw new FSMsgException("parseError", null);
    }
}
Also used : FSMsgException(com.sun.identity.federation.message.common.FSMsgException) NameIdentifier(com.sun.identity.saml.assertion.NameIdentifier) ParseException(java.text.ParseException) SAMLResponderException(com.sun.identity.saml.common.SAMLResponderException) SAMLException(com.sun.identity.saml.common.SAMLException) ParseException(java.text.ParseException) FSMsgException(com.sun.identity.federation.message.common.FSMsgException)

Example 20 with FSMsgException

use of com.sun.identity.federation.message.common.FSMsgException in project OpenAM by OpenRock.

the class FSAuthnRequest method parseXML.

/**
     * Returns the <code>FSAuthnRequest</code> object.
     *
     * @param xml the XML string.
     * @return <code>FSAuthnRequest</code> object.
     * @throws FSMsgException if there is 
     *         error creating the object.
     */
public static FSAuthnRequest parseXML(String xml) throws FSMsgException {
    Document doc = XMLUtils.toDOMDocument(xml, FSUtils.debug);
    if (doc == null) {
        FSUtils.debug.error("FSAuthnRequest.parseXML:Error " + "while parsing input xml string");
        throw new FSMsgException("parseError", null);
    }
    Element root = doc.getDocumentElement();
    return new FSAuthnRequest(root);
}
Also used : FSMsgException(com.sun.identity.federation.message.common.FSMsgException) Element(org.w3c.dom.Element) Document(org.w3c.dom.Document)

Aggregations

FSMsgException (com.sun.identity.federation.message.common.FSMsgException)46 SAMLException (com.sun.identity.saml.common.SAMLException)17 Document (org.w3c.dom.Document)15 Element (org.w3c.dom.Element)15 BaseConfigType (com.sun.identity.federation.jaxb.entityconfig.BaseConfigType)10 IDFFMetaException (com.sun.identity.federation.meta.IDFFMetaException)10 ProviderDescriptorType (com.sun.identity.liberty.ws.meta.jaxb.ProviderDescriptorType)8 Status (com.sun.identity.saml.protocol.Status)8 IOException (java.io.IOException)8 Iterator (java.util.Iterator)8 FSException (com.sun.identity.federation.common.FSException)7 ParseException (java.text.ParseException)7 SessionException (com.sun.identity.plugin.session.SessionException)6 FSNameRegistrationResponse (com.sun.identity.federation.message.FSNameRegistrationResponse)5 StatusCode (com.sun.identity.saml.protocol.StatusCode)5 FSLogoutNotification (com.sun.identity.federation.message.FSLogoutNotification)4 NameIdentifier (com.sun.identity.saml.assertion.NameIdentifier)4 List (java.util.List)4 SOAPMessage (javax.xml.soap.SOAPMessage)4 FSAccountMgmtException (com.sun.identity.federation.accountmgmt.FSAccountMgmtException)3