如何使用Google的身份识别平台针对Cloud Endpoints进行身份验证?

时间:2019-06-24 21:23:53

标签: firebase-authentication google-kubernetes-engine google-cloud-endpoints google-identity google-cloud-logging

在我们的组织中,我们使用Google Kubernetes引擎(GKE)实施微服务架构。由于我们也是G-Suite用户,因此保证组织中的每个人都拥有Google帐户。因此,我们希望使用这些帐户来管理微服务的身份验证和授权。

我们已使用angularfire2客户端对登录进行原型制作,以针对Google身份平台进行身份验证。我们还将Google Cloud Endpoints配置为控制对相关服务的访问。

我们缺少的部分是如何从Google中的身份获取可用于我们的服务的访问令牌-使用Firebase API返回的访问令牌中没有声明,而{{3} }似乎很清楚,它们已加入了身份令牌。

我的期望是让JWT拥有适当的受众群体(我们的后端),其中包含足够多的声明以在服务中实现基于角色的访问控制。理想情况下,基础架构可以已经验证了声明-我们的某些服务足够小,只需要一个角色即可,可以在服务外部实施。或者,我们可以使用所需的声明注释端点(Protobuf)。

在GCP环境中,创建用于访问GKE服务的访问令牌的标准过程是什么?有什么可以支持这一点的吗?

2 个答案:

答案 0 :(得分:0)

我建议您使用服务帐户文件遵循服务之间的doc身份验证。

答案 1 :(得分:0)

  

我们缺少的是如何从Google中的身份获取   我们可以在我们的服务上使用的访问令牌-访问令牌即将到来   返回使用Firebase API的过程中没有声明,并且该文档   关于自定义声明,似乎很清楚将这些内容纳入   身份令牌。

Google OAuth访问令牌没有您要使用的身份。身份存储在身份令牌中。在对用户进行身份验证时,添加范围“电子邮件”。 Google将返回一个ID令牌。对于某些框架,您可以请求身份令牌的自定义声明。

  

在GCP环境中,创建的标准流程是什么   访问令牌以用于访问GKE服务?有没有什么   支持这个吗?

除了API密钥之类的方法外,有两种访问类型。用户帐户和服务帐户。服务到服务通常使用服务帐户访问令牌(RBAC)或服务帐户身份令牌(IBAC)。对于您的情况,您想使用Identity Platform,即用户帐户。

如果我正在设计此系统,则将使用“用户帐户”对系统进行身份验证-Firebase非常适合此目的。我将从数据库(Firestore)中查找此身份支持/允许的角色,并创建具有GCP服务所需范围的服务帐户访问令牌。然后,我将使用此访问令牌进行GCP服务到服务的授权。如果我还需要自定义角色来提供自己的服务,则可以使用自定义角色创建自定义身份令牌,并将其作为自定义HTTP标头,并将Google Access令牌包含在标准HTTP“授权:承载”标头中。我可以使用服务帐户私钥来签名我的自定义身份令牌,也可以使用GCP IAM API来为我签名,以便另一端可以使用服务帐户的公钥进行验证。这种方法可以防止客户端数据泄漏,不分发私钥,不公开范围/角色等。