/*******************************************************************************
* Copyright 2017 Graz University of Technology
* EAAF-Core Components has been developed in a cooperation between EGIZ,
* A-SIT Plus, A-SIT, and Graz University of Technology.
*
* Licensed under the EUPL, Version 1.2 or - as soon they will be approved by
* the European Commission - subsequent versions of the EUPL (the "Licence");
* You may not use this work except in compliance with the Licence.
* You may obtain a copy of the Licence at:
* https://joinup.ec.europa.eu/news/understanding-eupl-v12
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the Licence is distributed on an "AS IS" basis,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the Licence for the specific language governing permissions and
* limitations under the Licence.
*
* This product combines work with different licenses. See the "NOTICE" text
* file for details on the various modules and licenses.
* The "NOTICE" text file is part of the distribution. Any derivative works
* that you distribute must include a readable copy of the "NOTICE" text file.
*******************************************************************************/
/*******************************************************************************
*******************************************************************************/
/*******************************************************************************
*******************************************************************************/
package at.gv.egiz.eaaf.modules.pvp2.sp.api;
import java.util.List;
import org.opensaml.saml2.core.AuthnContextComparisonTypeEnumeration;
import org.opensaml.saml2.metadata.EntityDescriptor;
import org.opensaml.xml.security.credential.Credential;
import org.w3c.dom.Element;
import at.gv.egiz.eaaf.modules.pvp2.api.reqattr.EAAFRequestedAttribute;
/**
* @author tlenz
*
*/
public interface IPVPAuthnRequestBuilderConfiguruation {
/**
* Defines a unique name for this PVP Service-provider, which is used for logging
*
* @return
*/
public String getSPNameForLogging();
/**
* If true, the SAML2 isPassive flag is set in the AuthnRequest
*
* @return
*/
public Boolean isPassivRequest();
/**
* Define the ID of the AssertionConsumerService,
* which defines the required attributes in service-provider metadata.
*
* @return
*/
public Integer getAssertionConsumerServiceId();
/**
* Define the SAML2 EntityID of the service provider.
*
* @return
*/
public String getSPEntityID();
/**
* Define the SAML2 NameIDPolicy
*
* @return Service-Provider EntityID, but never null
*/
public String getNameIDPolicyFormat();
/**
* Define the AuthnContextClassRefernece of this request
*
* Example:
* http://www.ref.gv.at/ns/names/agiz/pvp/secclass/0-3
* http://www.stork.gov.eu/1.0/citizenQAALevel/4
*
*
* @return
*/
public String getAuthnContextClassRef();
/**
* Define the AuthnContextComparison model, which should be used
*
* @return
*/
public AuthnContextComparisonTypeEnumeration getAuthnContextComparison();
/**
* Define the credential, which should be used to sign the AuthnRequest
*
* @return
*/
public Credential getAuthnRequestSigningCredential();
/**
* Define the SAML2 EntityDescriptor of the IDP, which should receive the AuthnRequest
*
* @return Credential, but never null.
*/
public EntityDescriptor getIDPEntityDescriptor();
/**
* Set the SAML2 NameIDPolicy allow-creation flag
*
* @return EntityDescriptor, but never null.
*/
public boolean getNameIDPolicyAllowCreation();
/**
* Set the requested SubjectNameID
*
* @return SubjectNameID, or null if no SubjectNameID should be used
*/
public String getSubjectNameID();
/**
* Define the qualifier of the SubjectNameID
*
* Like: 'urn:publicid:gv.at:cdid+BF'
*
* @return qualifier, or null if no qualifier should be set
*/
public String getSubjectNameIDQualifier();
/**
* Define the format of the subjectNameID, which is included in authn-request
*
*
* @return nameIDFormat, of SAML2 'transient' if nothing is defined
*/
public String getSubjectNameIDFormat();
/**
* Define a SP specific SAML2 requestID
*
* @return requestID, or null if the requestID should be generated automatically
*/
public String getRequestID();
/**
* Defines the 'method' attribute in 'SubjectConformation' element
*
* @return method, or null if no method should set
*/
public String getSubjectConformationMethode();
/**
* Define the information, which should be added as 'subjectConformationDate'
* in 'SubjectConformation' element
*
* @return subjectConformation information or null if no subjectConformation should be set
*/
public Element getSubjectConformationDate();
/**
* Get the EntityId of the SP in case of a SAML2 proxy use-case
*
* @return
*/
public String getScopeRequesterId();
/**
* Get a FriendlyName for the SP that sends the request
*
* @return
*/
public String getProviderName();
/**
* Get a Set of SAML2 attributes that are requested by using SAML2 requested attributes
*
* Info: Attributes are requested by using eIDAS SAML2 extension for requested attributes
*
* @return
*/
public List getRequestedAttributes();
}