在keydape和springrestapi中管理用户权限
TL;DR在keydape和springrestapi中管理用户权限,spring,rest,spring-security,keycloak,openid-connect,Spring,Rest,Spring Security,Keycloak,Openid Connect,TL;DR 目标:管理api权限: OIDC授权直接授权流 用户联合和身份验证源:LDAP 权限存储:旧数据库 客户机管理和身份验证:keydrope 问题:管理keydape和restapi用户权限的最佳实践是什么? 上下文 我们正在用spring实现一个RESTAPI,供移动应用程序和SPA使用。我们的用户帐户、权限、规则……和所有数据都存储在一个自定义数据库中,由不同的单片应用程序使用。为了保护我们的api,我们决定使用KeyClope KeyClope服务器配置有用于用户联合的现
- 目标:管理api权限:
- OIDC授权直接授权流
- 用户联合和身份验证源:LDAP
- 权限存储:旧数据库
- 客户机管理和身份验证:keydrope
- 问题:管理keydape和restapi用户权限的最佳实践是什么?
- 客户端应用程序应该知道显示/隐藏功能的用户权限
- api应该能够验证用户使用不同端点的权限
- 用户权限基于数据库中的某些规则,并且经常更改
"resource_access": {
“My-client”: {
“permissions”: [
“Show-products”,
“Buy-something”,
“Display-prices”
]
}
},
"username": “myUser”
然后,移动应用程序应该能够基于令牌了解用户权限,并且我的无状态服务器端(API)应该能够在每次调用时访问用户权限,以使用spring注释进行检查:
@PreAuthorize("hasRole('Show-products')")
问题
在第一次试验后,我的解决方案似乎运行良好,但我仍然对这个选择有一些安全顾虑,因为它超出了KeyClope标准,并且在KeyClope映射器中包含对不同后端的rest调用
所以我想知道:
- 将用户权限放在访问令牌声明上是否安全
- 如何保护对外部系统(rest调用)的KeyClope访问 检索权限
- 我是否应该依靠令牌声明来验证每个服务器上的用户权限 我的资源服务器中的请求
- 是否有其他干净的解决方案/最佳做法来处理用户问题 keydepeat中来自外部源的权限
- Springboot 1.5.13.1版本
- Keyclope适配器bom表3.4.3.1最终版本
- 独立密钥斗篷服务器3.4.3.Final
致意。Hi@wadi3,你实施了这个吗?你能准确地说出两者之间的区别吗