用户角色管理
RBAC模型
RBAC(role based access control)是一种设计模式,用来设计和管理权限相关数据的一种模型。
RBAC中主要定义了三类规则:
1. 角色分配:一个主体只能在已经分配到拥有某许可的角色时才能使用该许可。
2. 角色授权:一个主体必须通过授权才可获取角色。在规则1的基础上,这一规则保证了一个主体只能获取已经通过授权的角色。
3. 许可授权:只有当某个许可已经通过授权分配给某个角色,获得该角色授权的主体才能使用这个许可。
项目中权限管理的实现
在项目中,我们使用OAuth2的4种模式中的密码模式来进行权限管理。
用户登录流程
1. 用户通过UI登录,request被转到gateway。
2. gateway将request转到admin微服务。
3. admin微服务将request转到auth-center微服务。
4. auth-center微服务检验用户的用户名和密码,如果正确,则返回一个令牌(JWT)给用户。该令牌的signature部分用auth-center专有的私钥加密,需用公钥解密。
5. 至此,完成登录。
6. 用户可以在访问其他服务时,比如购买车票,在request中注入令牌,这样即可访问服务。
7. 被访问的服务会解析request中的令牌,将其中的signature用公钥解密,查对里面的信息是否与payload中的信息一致。如果一致,验证成功,提供服务;否则,拒绝服务。
credit:截图来自刘雪松老师的PPT