While using SAML SSO to log in to the system, the SAML response can be interpreted to change the default behavior to make the user log in to a specific company/partner in a specific role. Adeptia Connect allows you to do this by implementing a custom class to read and authenticate the user information. To achieve this, you need to define a new Java class and place that in the customClasses folder.
This option lets you:
Access custom attributes and relay state information present in the SAML response
Provide a specific company/partner and also a specific role for logged in user
Provide a redirect URL to which user will be redirected after successful login
Follow the steps below to create the custom class:
Create a new Java class that implements the below interface.
This interface provides the ability to define a custom implementation for providing the authenticated user information.
SAML SSO Authentication Interface
SAML SSO Authentication Interface
package com.adeptia.indigo.security.saml;
import java.util.Map;
import org.springframework.security.core.Authentication;
/**
* This interface provides the ability to define a custom implementation for
* providing the authenticated user information.
*
* The contract accepts the Authentication Object as an input which contains all
* the information of authenticated user received as a part of SAML response.
* The output delivered is the User's attributes and Target URL.
*
* @author Ranjit
*
*/
public interface SAMLSSOAuthenticationUserDetails {
/**
* Prepare the {@link SubjectInfo} for the authenticated User
*
* @param authentication
* Represents the token for an authentication request or for an
* authenticated principal
*
* @return The authenticated Subject attributes : user, Group, associated
* partner and associated role
*
*/
public SubjectInfo getSubjectInfo(Authentication authentication);
/**
* The URL the SP should redirect the user once the SSO completes.
*
* Generally the relay state present into SAML message specify the URL to which
* the user is to be redirected.
*
* @param authentication
* Represents the token for an authentication request or for an
* authenticated principal
*
* @return the relative URL fragment identifier( value after hash #) or the
* complete absolute URL. The value assumed to be absolute URL if it
* starts with http:// or https://, otherwise the value is considered as
* Fragment identifier.
*/
public String getRedirectUrl(Authentication authentication);
/**
* The user attributes received as a part of SAML assertions.
*
* The user attributes Map to be returned should have Keys in String format and
* values as Serializable objects.
*
* @param authentication
* Represents the token for an authentication request or for an
* authenticated principal
*
* @return the user attributes Map
*/
public Map<String, String> getAttributes(Authentication authentication);
}
You need to define the following environment variable to store the name of the implementation class.
For more information on how to create an environment variable on Windows or Linux, refer to this page.
Variable Name
Value
Description
SAML_SSO_IMPLEMENTATION_BEAN
SAMLUserDetailsImpl
Expand 'SAML User Details IMPL' for an example of implementation class: