Package net.shibboleth.idp.authn.impl
Class JAASCredentialValidator
- java.lang.Object
-
- net.shibboleth.utilities.java.support.component.AbstractInitializableComponent
-
- net.shibboleth.utilities.java.support.component.AbstractIdentifiedInitializableComponent
-
- net.shibboleth.idp.authn.AbstractCredentialValidator
-
- net.shibboleth.idp.authn.AbstractUsernamePasswordCredentialValidator
-
- net.shibboleth.idp.authn.impl.JAASCredentialValidator
-
- All Implemented Interfaces:
net.shibboleth.idp.authn.CredentialValidator,net.shibboleth.idp.authn.principal.PrincipalSupportingComponent,net.shibboleth.utilities.java.support.component.Component,net.shibboleth.utilities.java.support.component.DestructableComponent,net.shibboleth.utilities.java.support.component.IdentifiableComponent,net.shibboleth.utilities.java.support.component.IdentifiedComponent,net.shibboleth.utilities.java.support.component.InitializableComponent
@ThreadSafe public class JAASCredentialValidator extends net.shibboleth.idp.authn.AbstractUsernamePasswordCredentialValidatorA password validator that authenticates against JAAS.Support for complex chaining of JAAS modules remains supported but should be avoided in favor of the new support for chaining validators in most cases.
- Since:
- 4.0.0
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected classJAASCredentialValidator.SimpleCallbackHandlerA callback handler that provides name and password data to a JAAS login process, along with other miscellany.
-
Field Summary
Fields Modifier and Type Field Description private org.slf4j.LoggerlogClass logger.private Configuration.ParametersloginConfigParametersType-specific configuration parameters.private Function<org.opensaml.profile.context.ProfileRequestContext,Collection<net.shibboleth.utilities.java.support.collection.Pair<String,Subject>>>loginConfigStrategyStrategy function to dynamically derive the login config(s) to use.private StringloginConfigTypeType of JAAS Configuration to instantiate.private Collection<net.shibboleth.utilities.java.support.collection.Pair<String,Subject>>loginConfigurationsApplication name(s) in JAAS configuration to use.
-
Constructor Summary
Constructors Constructor Description JAASCredentialValidator()Constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private Subjectauthenticate(String loginConfigName, net.shibboleth.idp.authn.context.UsernamePasswordContext usernamePasswordContext)Create a JAAS configuration and attempt a login with it.protected SubjectdoValidate(org.opensaml.profile.context.ProfileRequestContext profileRequestContext, net.shibboleth.idp.authn.context.AuthenticationContext authenticationContext, net.shibboleth.idp.authn.context.UsernamePasswordContext usernamePasswordContext, net.shibboleth.idp.authn.CredentialValidator.WarningHandler warningHandler, net.shibboleth.idp.authn.CredentialValidator.ErrorHandler errorHandler)Configuration.ParametersgetLoginConfigParameters()Get the type-specific parameters of the JAASConfigurationto use.StringgetLoginConfigType()Get the type of JAASConfigurationto use.protected SubjectpopulateSubject(Subject subject, Subject derivedSubject, net.shibboleth.idp.authn.context.UsernamePasswordContext usernamePasswordContext)Finish decorating the result.voidsetLoginConfigNames(Collection<String> names)Set the JAAS application name(s) to use.voidsetLoginConfigParameters(Configuration.Parameters params)Set the type-specific parameters of the JAASConfigurationto use.voidsetLoginConfigStrategy(Function<org.opensaml.profile.context.ProfileRequestContext,Collection<net.shibboleth.utilities.java.support.collection.Pair<String,Subject>>> strategy)Set the strategy function to use to obtain the JAAS application configuration(s) to use.voidsetLoginConfigType(String type)Set the type of JAASConfigurationto use.voidsetLoginConfigurations(Collection<net.shibboleth.utilities.java.support.collection.Pair<String,Collection<Principal>>> configs)Set the JAAS application name(s) to use, along with an optional collection of custom principals to apply to the result.-
Methods inherited from class net.shibboleth.idp.authn.AbstractUsernamePasswordCredentialValidator
applyTransforms, doValidate, populateSubject, removeContextAfterValidation, savePasswordToCredentialSet, setLowercase, setMatchExpression, setRemoveContextAfterValidation, setSavePasswordToCredentialSet, setTransforms, setTrim, setUppercase, setUsernamePasswordContextLookupStrategy
-
Methods inherited from class net.shibboleth.idp.authn.AbstractCredentialValidator
getLogPrefix, getSupportedPrincipals, isAcceptable, populateSubject, setActivationCondition, setId, setSupportedPrincipals, validate
-
Methods inherited from class net.shibboleth.utilities.java.support.component.AbstractIdentifiedInitializableComponent
doInitialize, getId
-
Methods inherited from class net.shibboleth.utilities.java.support.component.AbstractInitializableComponent
destroy, doDestroy, initialize, isDestroyed, isInitialized
-
-
-
-
Field Detail
-
log
@Nonnull private final org.slf4j.Logger log
Class logger.
-
loginConfigType
@Nullable private String loginConfigType
Type of JAAS Configuration to instantiate.
-
loginConfigParameters
@Nullable private Configuration.Parameters loginConfigParameters
Type-specific configuration parameters.
-
loginConfigurations
@Nonnull private Collection<net.shibboleth.utilities.java.support.collection.Pair<String,Subject>> loginConfigurations
Application name(s) in JAAS configuration to use.
-
loginConfigStrategy
@Nullable private Function<org.opensaml.profile.context.ProfileRequestContext,Collection<net.shibboleth.utilities.java.support.collection.Pair<String,Subject>>> loginConfigStrategy
Strategy function to dynamically derive the login config(s) to use.
-
-
Method Detail
-
getLoginConfigType
@Nullable public String getLoginConfigType()
Get the type of JAASConfigurationto use.- Returns:
- the type of JAAS configuration to use
-
setLoginConfigType
public void setLoginConfigType(@Nullable String type)Set the type of JAASConfigurationto use.- Parameters:
type- the type of JAAS configuration to use
-
getLoginConfigParameters
@Nullable public Configuration.Parameters getLoginConfigParameters()
Get the type-specific parameters of the JAASConfigurationto use.- Returns:
- the JAAS configuration parameters to use
-
setLoginConfigParameters
public void setLoginConfigParameters(@Nullable Configuration.Parameters params)Set the type-specific parameters of the JAASConfigurationto use.- Parameters:
params- the JAAS configuration parameters to use
-
setLoginConfigurations
public void setLoginConfigurations(@Nullable Collection<net.shibboleth.utilities.java.support.collection.Pair<String,Collection<Principal>>> configs)Set the JAAS application name(s) to use, along with an optional collection of custom principals to apply to the result.- Parameters:
configs- list of JAAS application names and custom principals to use
-
setLoginConfigNames
public void setLoginConfigNames(@Nullable @NonnullElements Collection<String> names)Set the JAAS application name(s) to use.- Parameters:
names- list of JAAS application names to use
-
setLoginConfigStrategy
public void setLoginConfigStrategy(@Nullable Function<org.opensaml.profile.context.ProfileRequestContext,Collection<net.shibboleth.utilities.java.support.collection.Pair<String,Subject>>> strategy)Set the strategy function to use to obtain the JAAS application configuration(s) to use.- Parameters:
strategy- strategy function
-
doValidate
@Nullable protected Subject doValidate(@Nonnull org.opensaml.profile.context.ProfileRequestContext profileRequestContext, @Nonnull net.shibboleth.idp.authn.context.AuthenticationContext authenticationContext, @Nonnull net.shibboleth.idp.authn.context.UsernamePasswordContext usernamePasswordContext, @Nullable net.shibboleth.idp.authn.CredentialValidator.WarningHandler warningHandler, @Nullable net.shibboleth.idp.authn.CredentialValidator.ErrorHandler errorHandler) throws Exception
- Specified by:
doValidatein classnet.shibboleth.idp.authn.AbstractUsernamePasswordCredentialValidator- Throws:
Exception
-
authenticate
@Nonnull private Subject authenticate(@Nonnull @NotEmpty String loginConfigName, @Nonnull net.shibboleth.idp.authn.context.UsernamePasswordContext usernamePasswordContext) throws LoginException, NoSuchAlgorithmException
Create a JAAS configuration and attempt a login with it.- Parameters:
loginConfigName- the application name to useusernamePasswordContext- input context- Returns:
- the JAAS result
- Throws:
LoginException- if the JAAS login process failsNoSuchAlgorithmException- if a JAAS configuration cannot be created
-
populateSubject
@Nonnull protected Subject populateSubject(@Nonnull Subject subject, @Nullable Subject derivedSubject, @Nonnull net.shibboleth.idp.authn.context.UsernamePasswordContext usernamePasswordContext)
Finish decorating the result.- Parameters:
subject- the JAAS resultderivedSubject- container for additional principalsusernamePasswordContext- input context- Returns:
- final result
-
-