449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings/*
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings * The contents of this file are subject to the terms of the Common Development and
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings * Distribution License (the License). You may not use this file except in compliance with the
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings * License.
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings *
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings * You can obtain a copy of the License at legal/CDDLv1.0.txt. See the License for the
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings * specific language governing permission and limitations under the License.
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings *
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings * When distributing Covered Software, include this CDDL Header Notice in each file and include
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings * the License file at legal/CDDLv1.0.txt. If applicable, add the following below the CDDL
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings * Header, with the fields enclosed by brackets [] replaced by your own identifying
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings * information: "Portions copyright [year] [name of copyright owner]".
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings *
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings * Copyright 2015 ForgeRock AS.
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings */
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbingspackage com.sun.identity.saml2.profile;
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbingsimport static org.forgerock.util.Reject.checkNotNull;
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbingsimport com.sun.identity.saml2.common.SAML2Constants;
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbingsimport com.sun.identity.saml2.common.SAML2Utils;
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbingsimport com.sun.identity.saml2.plugins.SAML2IdentityProviderAdapter;
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings/**
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings * Checked exception for errors that occur during federated single sign-on (SSO).
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings *
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings * @since 13.0.0
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings * @see ServerFaultException
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings * @see ClientFaultException
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings */
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbingspublic abstract class FederatedSSOException extends Exception {
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings private final String messageCode;
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings private final String detail;
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings private final SAML2IdentityProviderAdapter idpAdapter;
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings /**
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings * Constructs the FederatedSSOException with the given parameters.
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings *
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings * @param idpAdapter the identity provider adapter, if resolved - may be null.
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings * @param messageCode the message code of the error that occurred.
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings * @param detail the detail of the exception.
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings */
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings public FederatedSSOException(final SAML2IdentityProviderAdapter idpAdapter, final String messageCode,
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings final String detail) {
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings super();
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings this.messageCode = checkNotNull(messageCode, "Message code is null");
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings this.detail = detail;
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings this.idpAdapter = idpAdapter;
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings }
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings @Override
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings public String getMessage() {
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings return SAML2Utils.bundle.getString(messageCode) + (detail != null ? " (" + detail +")" : "");
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings }
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings /**
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings * Returns the message code of this error.
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings *
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings * @return the message code. Never null.
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings */
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings public String getMessageCode() {
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings return messageCode;
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings }
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings /**
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings * Returns the detail message of this error, if provided.
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings *
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings * @return the detail message - may be null.
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings */
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings public String getDetail() {
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings return detail;
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings }
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings /**
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings * The IDP adapter. This can be used to invoke hooks during error processing.
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings *
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings * @return the idp adapter. May be null.
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings */
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings public SAML2IdentityProviderAdapter getIdpAdapter() {
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings return idpAdapter;
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings }
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings /**
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings * The SOAP fault code of the error.
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings *
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings * @return one of {@link SAML2Constants#SERVER_FAULT} or {@link SAML2Constants#CLIENT_FAULT}. Never null.
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings */
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings public abstract String getFaultCode();
449854c2a07b50ea64d9d6a8b03d18d4afeeee43Ken Stubbings}