package org.pac4j.oidc.client; import org.pac4j.core.client.IndirectClient; import org.pac4j.core.context.WebContext; import org.pac4j.core.util.CommonHelper; import org.pac4j.oidc.config.OidcConfiguration; import org.pac4j.oidc.credentials.OidcCredentials; import org.pac4j.oidc.credentials.authenticator.OidcAuthenticator; import org.pac4j.oidc.credentials.extractor.OidcExtractor; import org.pac4j.oidc.logout.OidcLogoutActionBuilder; import org.pac4j.oidc.profile.OidcProfile; import org.pac4j.oidc.profile.creator.OidcProfileCreator; import org.pac4j.oidc.redirect.OidcRedirectActionBuilder; /** * This class is the client to authenticate users with an OpenID Connect 1.0 provider. * By default, this implementation relies on the * "code" response type. (http://openid.net/specs/openid-connect-core-1_0.html). * * @author Michael Remond * @author Jerome Leleu * @since 1.7.0 */ public class OidcClient<U extends OidcProfile> extends IndirectClient<OidcCredentials, U> { private OidcConfiguration configuration = new OidcConfiguration(); public OidcClient() { } public OidcClient(final OidcConfiguration configuration) { setConfiguration(configuration); } public OidcConfiguration getConfiguration() { return configuration; } public void setConfiguration(final OidcConfiguration configuration) { this.configuration = configuration; } @Override protected void clientInit(final WebContext context) { CommonHelper.assertNotNull("configuration", configuration); configuration.setCallbackUrl(computeFinalCallbackUrl(context)); configuration.init(context); defaultRedirectActionBuilder(new OidcRedirectActionBuilder(configuration)); defaultCredentialsExtractor(new OidcExtractor(configuration, getName())); defaultAuthenticator(new OidcAuthenticator(configuration)); defaultProfileCreator(new OidcProfileCreator<>(configuration)); defaultLogoutActionBuilder(new OidcLogoutActionBuilder<U>(configuration)); } @Override public String toString() { return CommonHelper.toString(this.getClass(), "name", getName(), "callbackUrl", this.callbackUrl, "urlResolver", this.urlResolver, "ajaxRequestResolver", getAjaxRequestResolver(), "redirectActionBuilder", getRedirectActionBuilder(), "credentialsExtractor", getCredentialsExtractor(), "authenticator", getAuthenticator(), "profileCreator", getProfileCreator(), "logoutActionBuilder", getLogoutActionBuilder(), "configuration", configuration); } }