Class SecurityHttpFeature
- All Implemented Interfaces:
io.helidon.common.Weighted,HttpFeature,HttpSecurity,ServerLifecycle,Comparable<io.helidon.common.Weighted>,Supplier<HttpFeature>
Methods that start with "from" are to register WebSecurity with WebServer
- to create SecurityContext for requests:
Example:
// WebServer routing builder - this is our integration pointHttpRoutingrouting = HttpRouting.builder() // register the WebSecurity to create context (shared by all routes) .register(SecurityHttpFeature.from(security))
Other methods are to create security enforcement points (gates) for routes (e.g. you are expected to use them for a get, post
etc. routes on specific path).
These methods are starting points that provide an instance of SecurityHandler that has finer grained methods to
control the gate behavior.
Note that if any gate is configured, auditing will be enabled by default except for GET and HEAD methods - if you want
to audit any method, invoke SecurityFeature.audit() to create a gate that will always audit the route.
If you want to create a gate and not audit it, use SecurityHandler.skipAudit() on the returned instance.
SecurityFeature.secure()- authentication and authorizationSecurityFeature.rolesAllowed(String...)- role based access control (implies authentication and authorization)SecurityFeature.authenticate()- authentication onlySecurityFeature.authorize()- authorization onlySecurityFeature.allowAnonymous()- authentication optionalSecurityFeature.audit()- audit all requests (including GET and HEAD)SecurityFeature.authenticator(String)- use explicit authenticator (named - as configured in config or through builder)SecurityFeature.authorizer(String)- use explicit authorizer (named - as configured in config or through builder)SecurityFeature.enforce()- use defaults (e.g. no authentication, authorization, audit calls except for GET and HEAD); this also give access to more fine-grained methods ofSecurityHandler
Example:
// continue from example above...
// create a gate for method GET: authenticate all paths under /user and require role "user" for authorization
.get("/user[/{*}]", WebSecurity.rolesAllowed("user"))
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final StringSecurity can accept additional headers to be added to security request.Fields inherited from interface io.helidon.common.Weighted
DEFAULT_WEIGHT -
Method Summary
Modifier and TypeMethodDescriptionbooleanauthenticate(ServerRequest request, ServerResponse response, boolean requiredHint) booleanauthorize(ServerRequest request, ServerResponse response, String... roleHint) static SecurityHttpFeaturecreate(io.helidon.common.config.Config config) Create a consumer of routing config to beregisteredwith web server routing to process security requests.static SecurityHttpFeatureCreate a consumer of routing config to beregisteredwith web server routing to process security requests.securityDefaults(SecurityHandler defaultHandler) Create a new web security instance using the default handler as base defaults for all handlers used.voidsetup(HttpRouting.Builder rules) doubleweight()Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface io.helidon.webserver.http.HttpFeature
get, socket, socketRequiredMethods inherited from interface io.helidon.webserver.ServerLifecycle
afterStop, beforeStartMethods inherited from interface io.helidon.common.Weighted
compareTo
-
Field Details
-
CONTEXT_ADD_HEADERS
Security can accept additional headers to be added to security request. This will be used to obtain multivalue string map (a map of string to list of strings) from context (appropriate to the integration).- See Also:
-
-
Method Details
-
create
Create a consumer of routing config to beregisteredwith web server routing to process security requests. This method is to be used together with other routing methods to protect web resources programmatically. Example:.get("/user[/{*}]", WebSecurity.authenticate() .rolesAllowed("user"))- Parameters:
security- initialized security- Returns:
- routing config consumer
-
create
Create a consumer of routing config to beregisteredwith web server routing to process security requests. This method configures security and web server integration from a config instance.- Parameters:
config- on the node of the server configuration of security (expectspathsfor example), configuration of security is expected under root nodesecurity- Returns:
- routing config consumer
-
securityDefaults
Create a new web security instance using the default handler as base defaults for all handlers used. If handlers are loaded from config, than this is the least significant value.- Parameters:
defaultHandler- if a security handler is configured for a route, it will take its defaults from this handler- Returns:
- new instance of web security with the handler default
-
setup
- Specified by:
setupin interfaceHttpFeature
-
authenticate
public boolean authenticate(ServerRequest request, ServerResponse response, boolean requiredHint) throws io.helidon.http.UnauthorizedException - Specified by:
authenticatein interfaceHttpSecurity- Throws:
io.helidon.http.UnauthorizedException
-
authorize
public boolean authorize(ServerRequest request, ServerResponse response, String... roleHint) throws io.helidon.http.ForbiddenException - Specified by:
authorizein interfaceHttpSecurity- Throws:
io.helidon.http.ForbiddenException
-
weight
public double weight()- Specified by:
weightin interfaceio.helidon.common.Weighted
-