首页 新闻 会员 周边

asp.net core 微服务的gRpc服务有必要使用授权吗

0
悬赏园豆:10 [待解决问题]

有两个接口,一个是A微服务的,一个是B微服务的,A微服务接口需要调用B微服务的接口。现在有一个用户登录(只有A服务的接口权限),它访问了A接口(A调B),B服务直接拒绝,返回403,这是否合理?还是说设计为服务内部使用gRpc通讯,这时候gRpc服务不设置权限,也就是A服务接口通过gRpc调用B服务接口,让它们能彼此调通?大佬们遇到这种问题是如何设计的?

对不起,我要起飞的主页 对不起,我要起飞 | 初学一级 | 园豆:23
提问于:2024-01-25 17:32
< >
分享
所有回答(4)
0

我觉得, 如果每个微服务都设计合理, 那么直接调用B会被拒绝的话,那间接调用B也应该被拒绝. 但是也不绝对, 毕竟系统刚开始设计的内容与后面增加的内容无法预料, 很有可能导致你说的这种情况, 实际问题实际分析

百鸟朝凤 | 园豆:260 (菜鸟二级) | 2024-01-25 18:00
0

在微服务架构中,gRPC服务之间的通信是否需要授权取决于你的安全需求和设计决策。以下是一些建议:

服务内部通信:
如果A服务和B服务是同一组织内的内部服务,可以考虑不使用授权机制。在这种情况下,服务之间的通信被认为是信任的,因为它们属于同一组织。在gRPC服务内部通信时,可以省略授权验证,以减轻开发和运维的复杂性。

服务之间的授权:
如果A服务和B服务不属于同一组织,或者存在安全隐患,建议使用授权机制确保服务之间的通信是受保护的。可以考虑使用gRPC提供的认证和授权机制,例如使用TLS/SSL进行加密和身份验证,以及使用gRPC的认证和授权拦截器来实现更精细的访问控制。

服务代理:
另一种方法是通过在微服务架构中引入API网关或服务代理来处理授权。API网关可以负责验证用户的身份和权限,并在服务之间转发请求。这种方式将授权的逻辑集中在一个地方,减轻了每个服务的负担。

JWT令牌:
在微服务架构中,使用JWT(JSON Web Token)作为身份验证和授权的机制也是一种常见的选择。通过在gRPC的元数据中传递JWT令牌,可以在服务之间进行认证和授权。

最终,决定是否在gRPC服务之间使用授权取决于你的具体需求和安全策略。如果服务之间的通信是受信任的,可能不需要复杂的授权机制。但如果你需要更细粒度的访问控制或者服务不属于同一组织,考虑引入授权机制是一个明智的选择。

Technologyforgood | 园豆:5686 (大侠五级) | 2024-01-25 19:40

如果是来自 AIGC 的回答,建议注明一下

支持(0) 反对(0) 博客园团队 | 园豆:5329 (大侠五级) | 2024-01-25 20:30
0

终极方案:ESB

0Behavior | 园豆:197 (初学一级) | 2024-01-26 16:45

啥是ESB

支持(0) 反对(0) 对不起,我要起飞 | 园豆:23 (初学一级) | 2024-01-26 16:57
0

一般来说服务都是通过网关提供对外访问的端口a,这样客户端访问微服务就要走网关,就需要鉴权,微服务之间访问通过etcd/consul服务注册来获取对方地址和实际端口,不需要鉴权

我才不是老家伙 | 园豆:266 (菜鸟二级) | 2024-02-22 09:45

但是每个接口标记了Authorize特性,就算获取实际地址也得走授权这一块吧

支持(0) 反对(0) 对不起,我要起飞 | 园豆:23 (初学一级) | 2024-03-21 10:02
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册