首页 > 解决方案 > 使用 TLS 连接时如何向客户端授予权限?

问题描述

我正在使用 TLS 对登录到我的服务器的客户端进行身份验证。

我想设置一些基于角色的访问权限,这样当他们登录时,他们只能根据他们的角色访问某些信息。

实现这一目标的最佳方法是什么?您可以在创建客户端证书时指定角色吗?你是根据客户的其他一些属性来做的吗?

谢谢!

标签: securityauthenticationsslcertificateauthorization

解决方案


可以将角色信息放入证书中(作为自定义 X.509v3 扩展),但是如果您需要更改其角色,则需要撤销并重新颁发证书。这似乎很头疼。

最好将“身份验证”和“授权”分开处理。使用证书作为“认证”;即证书证明他们是 DN 和 SAN 中列出的用户,然后您在“授权”服务/数据库中查找该 DN,告诉您该用户应具有哪些权限。如果您想要真正花哨,授权服务可以返回带有用户名/DN 和权限的签名 JWT,有点像自定义 SAML/OIDC 声明。

作为奖励,如果您决定在未来添加其他身份验证方法(例如 API 密钥、MFA 等),该系统将很好地扩展。


推荐阅读