- Based RBAC, User-Role-Resource.
- We treat API requests as a resource, resource format like
That is the request uri + request method(
post,get,put,delete...) is considered as a resource as a whole.
- User belongs some Role -- Role owns Resource -- User can access the resource.
Resource path matching see: URI Match
When use maven or gradle build project, add coordinate
The default configuration -
DefaultSurenessConfig uses the document datasource
sureness.yml as the auth datasource.
It supports JWT auth, Basic auth, Digest authentication.
Sureness authentication requires us to provide our own account data, role permission data, etc. These data may come from text, relational databases, non-relational databases, annotations, etc.
We provide interfaces
PathTreeProvider for user implement to load data from the dataSource where they want.
SurenessAccountProvider- Account datasource provider interface.
PathTreeProvider- Resource uri-role datasource provider interface.
If the configuration resource data comes from text, please refer to Sureness integration Spring Boot sample(configuration file scheme)
If the configuration resource data comes from dataBase, please refer to Sureness integration Spring Boot sample(database scheme)
The essence of Sureness is to intercept all rest requests for authenticating and authorizing.
The interceptor can be a filter or a Spring interceptor, it intercepts all request to check them.
Sureness uses exception handling process:
- If auth success, method -
checkInwill return a
SubjectSumobject containing user information.
- If auth failure, method -
checkInwill throw different types of auth exceptions.
Users need to continue the subsequent process based on these exceptions.(eg: return the request response)
Here we need to customize the exceptions thrown by
checkIn, passed directly when auth success, catch exception when auth failure and do something:
Detail see: Default Sureness Auth Exception