Class OidcProvider
java.lang.Object
io.helidon.security.providers.oidc.OidcProvider
- All Implemented Interfaces:
AuthenticationProvider,OutboundSecurityProvider,SecurityProvider
public final class OidcProvider
extends Object
implements AuthenticationProvider, OutboundSecurityProvider
Open ID Connect authentication provider.
IDCS specific notes:
- If you want to use JWK to validate tokens, you must give access to the endpoint (by default only admin can access it)
- If you want to use introspect endpoint to validate tokens, you must give rights to the application to do so (Client Configuration/Allowed Operations)
- If you want to retrieve groups when using IDCS, you must add "Client Credentials" in "Allowed Grant Types" in application configuration, as well as "Grant the client access to Identity Cloud Service Admin APIs." configured to "User Administrator"
-
Nested Class Summary
Nested Classes -
Method Summary
Modifier and TypeMethodDescriptionauthenticate(ProviderRequest providerRequest) Authenticate a request.static OidcProvider.Builderbuilder()A fluent API builder to created instances of this provider.static OidcProviderLoad this provider from configuration.static OidcProvidercreate(OidcConfig config) Create a new provider based on OIDC configuration.booleanisOutboundSupported(ProviderRequest providerRequest, SecurityEnvironment outboundEnv, EndpointConfig outboundConfig) Check if the path to be executed is supported by this security provider.outboundSecurity(ProviderRequest providerRequest, SecurityEnvironment outboundEnv, EndpointConfig outboundEndpointConfig) Creates necessary updates to headers and entity needed for outbound security (e.g.Collection<Class<? extends Annotation>>Provide extension annotations supported by this provider (e.g.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface io.helidon.security.spi.SecurityProvider
supportedAttributes, supportedConfigKeys, supportedCustomObjects
-
Method Details
-
create
Load this provider from configuration.- Parameters:
config- configuration of this provider- Returns:
- a new provider configured for OIDC
-
create
Create a new provider based on OIDC configuration.- Parameters:
config- config of OIDC server and client- Returns:
- a new provider configured for OIDC
-
builder
A fluent API builder to created instances of this provider.- Returns:
- a new builder instance
-
supportedAnnotations
Description copied from interface:SecurityProviderProvide extension annotations supported by this provider (e.g.jakarta.annotation.security.RolesAllowed). Annotations will be collected according to framework in use. For JAX-RS, annotations from application class, resource class and resource methods will be collected.- Specified by:
supportedAnnotationsin interfaceSecurityProvider- Returns:
- Collection of annotations this provider expects.
-
authenticate
Description copied from interface:AuthenticationProviderAuthenticate a request. This may be just resolving headers (tokens) or full authentication (basic auth). Do not throw exception for normal processing (e.g. invalid credentials; you may throw an exception in case of misconfiguration). This method will be invoked for inbound requests ONLY.This method must provide either a
Principalor a wholeSubjecteither for a user or for service (or both).- Specified by:
authenticatein interfaceAuthenticationProvider- Parameters:
providerRequest- context of this security enforcement/validation- Returns:
- response that either authenticates the request, fails authentication or abstains from authentication
- See Also:
-
isOutboundSupported
public boolean isOutboundSupported(ProviderRequest providerRequest, SecurityEnvironment outboundEnv, EndpointConfig outboundConfig) Description copied from interface:OutboundSecurityProviderCheck if the path to be executed is supported by this security provider. Defaults to true.- Specified by:
isOutboundSupportedin interfaceOutboundSecurityProvider- Parameters:
providerRequest- context with environment, subject(s) etc. that was receivedoutboundEnv- environment for outbound calloutboundConfig- outbound endpoint configuration- Returns:
- true if this identity propagator can generate required headers for the path defined
-
outboundSecurity
public CompletionStage<OutboundSecurityResponse> outboundSecurity(ProviderRequest providerRequest, SecurityEnvironment outboundEnv, EndpointConfig outboundEndpointConfig) Description copied from interface:OutboundSecurityProviderCreates necessary updates to headers and entity needed for outbound security (e.g. identity propagation, s2s security etc.). This method will be invoked for outbound requests ONLY.- Specified by:
outboundSecurityin interfaceOutboundSecurityProvider- Parameters:
providerRequest- context with environment, subject(s) etc. that was receivedoutboundEnv- environment for outbound calloutboundEndpointConfig- outbound endpoint configuration- Returns:
- response with generated headers and other possible configuration
- See Also:
-