java.lang.Object
io.helidon.webserver.security.SecurityFeature
- All Implemented Interfaces:
RuntimeType.Api<SecurityFeatureConfig>,NamedService,ServerFeature
public class SecurityFeature
extends Object
implements ServerFeature, RuntimeType.Api<SecurityFeatureConfig>
Server feature for security, to be registered with
WebServerConfig.BuilderBase.addFeature(io.helidon.webserver.spi.ServerFeature).
This feature adds a filter to register SecurityContext
in request Context,
and registers HttpRouting.Builder.security(io.helidon.webserver.http.HttpSecurity).
If configured, it also adds protection points to endpoints.
-
Nested Class Summary
Nested classes/interfaces inherited from interface io.helidon.webserver.spi.ServerFeature
ServerFeature.RoutingBuilders, ServerFeature.ServerFeatureContext, ServerFeature.SocketBuilders -
Method Summary
Modifier and TypeMethodDescriptionstatic SecurityHandlerIf called, authentication failure will not abort request and will continue as anonymous (defaults to false).static SecurityHandleraudit()Whether to audit this request - defaults to false for GET and HEAD methods, true otherwise.static SecurityHandlerIf called, request will go through authentication process - defaults to false (even if authorize is true).static SecurityHandlerauthenticator(String explicitAuthenticator) Use a named authenticator (as supported by security - if not defined, default authenticator is used).static SecurityHandlerEnable authorization for this route.static SecurityHandlerauthorizer(String explicitAuthorizer) Use a named authorizer (as supported by security - if not defined, default authorizer is used, if none defined, all is permitted).builder()Fluent API builder to set up an instance.static SecurityFeaturecreate(SecurityFeatureConfig config) Create a new instance from its configuration.static SecurityFeaturecreate(Consumer<SecurityFeatureConfig.Builder> builderConsumer) Create a new instance customizing its configuration.static SecurityHandlerenforce()Return a default instance to create a default enforcement point (or modify the result further).name()Name of this implementation, as provided inConfiguredProvider.create(Config, String).The prototype as it was received when creating this runtime object instance.static SecurityHandlerrolesAllowed(String... roles) An array of allowed roles for this path - must have a security provider supporting roles.static SecurityHandlersecure()Secure access using authentication and authorization.voidsetup(ServerFeature.ServerFeatureContext featureContext) Set up a server feature.type()Type of this implementation, to distinguish instances of same type, with differentNamedService.name().
-
Method Details
-
builder
Fluent API builder to set up an instance.- Returns:
- a new builder
-
create
Create a new instance from its configuration.- Parameters:
config- configuration- Returns:
- a new feature
-
create
Create a new instance customizing its configuration.- Parameters:
builderConsumer- consumer of configuration- Returns:
- a new feature
-
secure
Secure access using authentication and authorization. Auditing is enabled by default for methods modifying content. When using RBAC (role based access control), just userolesAllowed(String...). If you use a security provider, that requires additional data, useSecurityHandler.customObject(Object).Behavior:
- Authentication: enabled and required
- Authorization: enabled if provider configured
- Audit: not modified (default: enabled except for GET and HEAD methods)
- Returns:
SecurityHandlerinstance configured with authentication and authorization
-
authenticate
If called, request will go through authentication process - defaults to false (even if authorize is true).Behavior:
- Authentication: enabled and required
- Authorization: not modified (default: disabled)
- Audit: not modified (default: enabled except for GET and HEAD methods)
- Returns:
SecurityHandlerinstance
-
audit
Whether to audit this request - defaults to false for GET and HEAD methods, true otherwise. Request is audited with event type "request".Behavior:
- Authentication: not modified (default: disabled)
- Authorization: not modified (default: disabled)
- Audit: enabled for any method this gate is registered on
- Returns:
SecurityHandlerinstance
-
authenticator
Use a named authenticator (as supported by security - if not defined, default authenticator is used).Behavior:
- Authentication: enabled and required
- Authorization: not modified (default: disabled)
- Audit: not modified (default: enabled except for GET and HEAD methods)
SecurityHttpFeature(intentionally has the same class name, so the use cases are re-visited).This type is discovered automatically by
WebServer. To configure it, use theserver.features.securityconfiguration node (for mapping of protected paths). Configuration of security itself is still under root nodesecurity.- Parameters:
explicitAuthenticator- name of authenticator as configured inSecurity- Returns:
SecurityHandlerinstance- See Also:
-
authorizer
Use a named authorizer (as supported by security - if not defined, default authorizer is used, if none defined, all is permitted).Behavior:
- Authentication: enabled and required
- Authorization: enabled with explicit provider
- Audit: not modified (default: enabled except for GET and HEAD methods)
- Parameters:
explicitAuthorizer- name of authorizer as configured inSecurity- Returns:
SecurityHandlerinstance
-
rolesAllowed
An array of allowed roles for this path - must have a security provider supporting roles.Behavior:
- Authentication: enabled and required
- Authorization: enabled
- Audit: not modified (default: enabled except for GET and HEAD methods)
- Parameters:
roles- if subject is any of these roles, allow access- Returns:
SecurityHandlerinstance
-
allowAnonymous
If called, authentication failure will not abort request and will continue as anonymous (defaults to false).Behavior:
- Authentication: enabled and optional
- Authorization: not modified (default: disabled)
- Audit: not modified (default: enabled except for GET and HEAD methods)
- Returns:
SecurityHandlerinstance
-
authorize
Enable authorization for this route.Behavior:
- Authentication: enabled and required
- Authorization: enabled if provider is present
- Audit: not modified (default: enabled except for GET and HEAD methods)
- Returns:
SecurityHandlerinstance
-
enforce
Return a default instance to create a default enforcement point (or modify the result further).Behavior:
- Authentication: not modified (default: disabled)
- Authorization: not modified (default: disabled)
- Audit: not modified (default: enabled except for GET and HEAD methods)
- Returns:
SecurityHandlerinstance
-
prototype
Description copied from interface:RuntimeType.ApiThe prototype as it was received when creating this runtime object instance.- Specified by:
prototypein interfaceRuntimeType.Api<SecurityFeatureConfig>- Returns:
- prototype object used to create this instance
-
name
Description copied from interface:NamedServiceName of this implementation, as provided inConfiguredProvider.create(Config, String).- Specified by:
namein interfaceNamedService- Returns:
- name of this service
-
type
Description copied from interface:NamedServiceType of this implementation, to distinguish instances of same type, with differentNamedService.name(). Use for exampleConfiguredProvider.configKey()to define the type.- Specified by:
typein interfaceNamedService- Returns:
- type of this service
-
setup
Description copied from interface:ServerFeatureSet up a server feature. Server features can modify server configuration, right before the server is created. To access listener configuration, or routing, a list of all listeners is provided.- Specified by:
setupin interfaceServerFeature- Parameters:
featureContext- to access builders of webserver, listeners, and routing
-