我们正在构建一个微服务架构的Web应用程序 我们有一个处理授权的服务(即用户的权限,访问凭证,角色等......),我们正在考虑如何在系统中传递这些凭据。
我们有2个选项:
1.使用JWT在网关(身份验证和代理服务)中签署这些凭据并传递所有信息,以便每个服务都可以验证它(使用其公钥)并阅读用户的信息。
2.每个服务都应向授权服务部门请求查询用户对每个操作的访问权限。
我们在决定哪种方式在高内聚和松耦合方面更好方面遇到困难,当然也很容易进行服务开发。
答案 0 :(得分:0)
您还有其他一些选择:您可以使用开箱即用的OAuth 2.0身份提供商/代理,而不是重新发明轮子。
Keycloak是一个免费的开源身份提供商和代理商,提供所有这些功能。
Auth0是一种托管商业服务,也提供所有这些功能。
我确信OAuth 2.0协议还有许多其他服务。
至于你的两个选择:
您可以使用自定义授权声明(角色或权限)扩展JWT,并且由于JWT将被签名,因此可以安全地假设您的服务数据是正确的。假设JWT是一个短命的令牌,需要每隔几分钟更新一次。