我正在使用TLS对登录到我的服务器的客户端进行身份验证。
我想设置一些基于角色的访问,这样当他们登录时,他们只能根据自己的角色访问某些信息。
实现这一目标的最佳方法是什么?您可以在创建客户端证书时指定角色吗?你是根据客户的其他属性来做的吗?
谢谢!
您可以将角色信息放入证书中(作为自定义X.509v3扩展(,但如果您需要更改他们的角色,则需要吊销并重新颁发证书。这似乎让人头疼。
最好将"身份验证"one_answers"授权"分开处理。将证书用作"身份验证";即证书证明他们是DN和SAN中列出的用户,然后您在"授权"服务/数据库中查找该DN,该服务/数据库告诉您该用户应该拥有什么权限。如果你真的很喜欢,授权服务可以返回一个带有用户名/DN和权限的签名JWT,有点像自定义的SAML/OIDC声明。
作为奖励,如果您决定在未来添加替代身份验证方法,如API密钥、MFA等,该系统将很好地扩展。