因此,我们正在GCE实例上运行的谷歌云上构建RESTful服务。此服务将在内部使用,即web服务器。我正在考虑使用Oauth来保护此服务。
与其维护我们自己的消费者密钥/机密数据库,还有可能利用谷歌已经提供的身份验证吗?所以我设想如下:
- Web服务器使用服务帐户向Google进行身份验证,并获得一些访问令牌作为响应
- Web服务器使用此访问令牌请求Rest服务
- Rest服务使用Google验证此访问令牌,只有在验证了访问令牌时才返回有效响应
我在谷歌云文档中找不到这样的东西,我想把它扔在这里,看看SO是否更清楚:)
谢谢!
对于任何遇到这个问题的人来说,你可能正在寻找Identity Aware Proxy-https://cloud.google.com/iap/docs/authentication-howto
它将在您的服务前面放置一个托管代理,该服务需要oAuth2和谷歌帐户才能通过。同时具有浏览器和程序流。
然后,它通过头传递到您的服务,您可以使用它来查看用户是谁,并验证他们是否通过了
您的用例正是Google Cloud端点将为您提供的:-使用服务帐户进行身份验证-控制台中的API指标
Cloud Endpoints是一个API管理系统,可帮助您使用Google为自己的API使用的相同基础设施来保护、监控、分析和设置API配额。将API部署到云端点后,您可以使用云端点门户创建开发人员门户,API用户可以访问该网站以查看文档并与API交互。
在身份验证部分,您可以找到有关如何使用服务帐户(其他可用方法)进行安全保护的相关文档。
这里需要考虑一些事情。
首先,我们通过OAuth提供服务器到服务器的身份验证,但这是针对GoogleAPI的。
第二,我们提供云端点服务器到服务器的身份验证,但这是托管在云端点上的API,而不是托管在您自己的GCE虚拟机上的自定义API。
我想了解的是,您在VM端使用什么框架或代码来处理OAuth。你想允许/不允许谁?你不可能真的没有任何身份验证码,否则有什么意义?任何服务帐户都可以通过。你如何控制范围?服务帐户如何知道请求的范围?您的API如何处理授权部分?如果你正在制作一个全面的API,你最好使用云端点,因为我之前提到的所有东西都将在我们的端上处理。
如果您正在设计一个简单的HTTP API,它基本上是一个处理GET/POST请求并在Google Cloud上向您自己的服务吐出响应的处理程序,那么您只需设置安全的服务到服务通信