In spring security, or RBAC, the Authority is described as a string, such as "download-file" means user can download file. If I need to limit user maximum daily download times and assign different values to different user, means the Authority contains dynamic values, how can I do this in spring security?
spring security: what's the best practice for include value in permission?
307 Views Asked by De Liu At
2
There are 2 best solutions below
0
Ashish
On
Please refer this link Spring Boot : Custom Role - Permission Authorization using SpEL
You can add new permission , like "DOWNLOAD_FILE" and authenticate if the current user has that permission using -
@PreAuthorize("hasPermission('DOWNLOAD_FILE')")
You can also limit access for Roles as well
@PreAuthorize("hasRole('ADMIN') and hasPermission('DOWNLOAD_FILE')")
Related Questions in SPRING-SECURITY
- AndroidAnnotations how to use setBearerAuth
- Show login dialog when not authenticated yet
- LDAP user attributes from CAS
- Spring security /j_spring_security_login 404 error
- Use thymeleaf template for some pages and rest for some for building gradle project
- Spring MVC + Tiles + Spring Security = The requested resource is not available
- The type javax.servlet.ServletContext and javax.servlet.ServletException cannot be resolved
- Intercepting springsecurity behavior in grails
- Basic Auth to Receive Token in Spring Security
- Spring LDAP Context.REFERRAL to follow
- Fail to locate j_spring_security_check in Spring Security
- Accessing resource with expired bearer token fails with 500 http code
- Spring security not authenticate the user
- Remove "Using default security password" on Spring Boot
- Is a SecurityContext shared between requests when using Spring Security?
Related Questions in PERMISSIONS
- Android M requesting permissions with permission_groups
- Is it possible to clone a private git repo without adding ssh keys
- Concrete5 5.7 Block permissions
- Unix not checking file permissions properly
- How to share home directory for different users of GUI desktop application?
- INTERNET permissions in Android M
- "restricted" folder/files in OS X El Capitan
- Magento list all products out of stock after showing all products in stock the day before
- Android Uses-Feature VS. Uses-Permision Optimization
- Cannot list device files in Ubuntu/Debian using QDir in Qt5
- How to use SFTP with PhpStorm to access server /var/www folder
- maven-rpm-plugin set folders permission differently from files when mapping
- Set Per-Model Permissions in Django
- Why rsAccessDenied error on SSRS when using Chrome but not in IE
- Where to apply domain level permissioning
Related Questions in RBAC
- Automated tools for applying formal methods to verify security policy in existing software
- Cannot insert the value NULL into column 'user_id', table 'dbo.role_user'; column does not allow nulls
- How to updateOwnPost on function in yii2-admin
- I am using laravel to display the item in view page
- Access control of a Module in Yii2
- Yii2 RBAC: which checks should be put into rules
- Can you use RBAC to set individual permissions for each group?
- How to create users/groups restricted to namespace in Kubernetes using RBAC API?
- How to pass parameters to the rbac rule when using a permission name in yii\filter\AccesControl?
- Yii2 RBAC DbManager error Call to a member function getRole() on null
- RBAC in Yii2 with PhpManager
- How can we use custom RBAC in yii2
- WSO2 Identity server GUI creating different attribute id for policy and request
- yii rights extension rights.php
- How to prevent unauthorized users from specific actions by assigning a role to them?
Related Questions in AUTHORITY
- The difference between authority and scheme in an Android URI
- ant command needs sudo authority to run on OSX?
- How to use Authority package for Laravel
- Android Fileprovider: IllegalArgumentException: Failed to find configured root that contains
- Why not SSL enable Apache with own CA?
- android duplicate provider authority
- What is the semantics of the double slash following the scheme in a URI?
- Android - Having Provider authority in the app project
- spring security: what's the best practice for include value in permission?
- Microservice intercommunication and authority
- Laravel 4 How to use Authority package
- Appropriate use of Authority in rails app
- Envoy Lua Filter - How to make HTTP request?
- Set ':authority' header in Postman
- Ionic - Android authorities: FacebookContentProvider undefined in android manifest
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
As you are alluding to there is a difference between authorities (i.e. roles) and permissions. Authorities tend to broadly apply for an application and have no state while permissions tend to be on specific objects and contain state.
This seems more like a domain problem than a permissions problem. Putting the logic into security feels a bit like having a form that must contain a valid email and checking the email format in security. I'd consider moving the logic outside of the security code.
If you really want to do this with Spring Security, I'd use a custom Bean that performs the check:
Then you can autowire the Bean into your code and check the permission by invoking the code. If you prefer, you can also integrate into Spring Security's method security to perform the checks. To enable it you need to specify
@EnableGlobalMethodSecurity(prePostEnabled = true)at the top of one of your configuration classes. Then you can use something like this on a Spring managed Bean: