本文解释了如何使用Identity Platform处理来自最终用户的身份验证。
关键似乎是客户端应该通过身份平台进行身份验证以获得令牌。这很简单,我已经能够从客户端代码检索令牌。服务器端应该在请求头中接收来自客户端的令牌。但这篇文章似乎并没有解释在这之后该怎么做。我们可以使用Identity Platform SDK获得用户,但是如果令牌无效怎么办?我们是否应该抛出一个异常,以便gRPC调用错误?
有一个Java示例,你可以,这就是它在这里做的。在示例中,它返回一个Forbidden 403 HTTP状态。
但是,我的假设是,Cloud Run将有一个比这更自动化的集成水平。这需要Cloud Run网关向gRPC服务发送请求,并获得响应。从理论上讲,这将允许恶意行为者不断使用垃圾邮件令牌攻击网关,这可能会造成损失。如果我们只是返回一个错误,我们如何保护我们的服务免受恶意行为者的攻击?如果gRPC服务返回错误过多,网关是否会自动阻断该IP地址?它如何知道哪些错误应该触发它?HTTP错误403可能会警告网关端点受到攻击,但是gRPC呢?
第一部分
那么让我们澄清一些事实来了解为什么你需要另一层。
Cloud Run只是HTTP服务。正如你所提到的,如果你让流量撞击它,你就会为所有的流量买单,这就是为什么你需要在设计之前再加一层。为了一个特定的目的。还有其他层可以放在前面,比如云装甲、负载平衡器、身份感知代理。这些都是独立的产品,有自己的文档/配置,和自己的按使用付费模式。
第二部分。
还可以查看gRPC的API网关,您可以使用API网关的API管理功能来添加监控,托管,跟踪,认证等到Cloud Run上的gRPC服务。
此外,一旦你指定了特殊的映射规则,API网关会通过HTTP将RESTful JSON转换为gRPC请求。这意味着您可以部署由API网关管理的gRPC服务器,并使用gRPC或JSON/HTTP客户端调用其API,从而为您提供更大的灵活性和与其他系统集成的便利性。
您可以使用任何支持gRPC的语言为API Gateway创建gRPC服务。