我有两个云运行服务:前端
和后端
。前端是用vue.js/nuxt.js编写的,因此使用的是节点后端。后端是用Kotlin编写的,带有Spring Boot。
为了在前端和后端之间进行经过身份验证的内部通信,我需要使用一个令牌thttps://cloud.google.com/run/docs/authenticating/service-to-service#JavaHat是从google Metaserver获取的。这里记录了这一点:https://cloud.google.com/run/docs/authenticating/service-to-service#java
我确实把一切都安排好了,而且很管用。
对于第二层安全性,我在前端和后端都集成了Auth0身份验证提供程序。在我的前台,用户可以登录。前端正在调用后端API。由于只有经过授权的用户才能调用后端,所以我集成了Spring Security来保护后端APIendpoint。
现在,后端验证调用者请求的令牌是否有效,然后才允许它传递给API逻辑。
然而,这一理论并不奏效。这仅仅是因为我通过节点后端代理委托API调用。然而,代理逻辑已经将令牌应用到后端的请求;它是google metaserver令牌。所以让我来说明一下:
由于事实上,我无法找到任何关于这个问题的文章,我想知道这是否只是因为我做的基本上是错误的。
我需要做什么才能拥有有效的云运行服务到服务的通信(由metaserver令牌保证),但同时拥有一个具有Auth0授权的安全后端API?
我认为有两个变通办法可以实现这一点:
以上任何一个我都不喜欢--尤其是后一个。我真的很想让它与我目前的设置工作,但我不知道如何。没有像多重授权令牌这样的东西,对吧?
好的,我想出了第三种方法来实现事实上的内部服务与服务之间的通信。
为了省略元服务器令牌身份验证,但仍然限制来自internet的访问,我对后端
云运行服务执行了以下操作:
这使得该服务可以从internet上获得,然而,入口阻止了任何外部人员访问该服务。该服务在没有IAM的情况下可用,但仅适用于内部通信。
但是要注意创建一个所谓的无服务器VPC访问(连接器)。这里说明:https://cloud.google.com/vpc/docs/serverless-vpc-access
创建无服务器VPC访问后,您可以在云运行服务“连接”设置中选择它。对于backend
服务,可以简单地选择它。但是,对于fronten>
服务,选择第二个选项非常重要:
至少在我的例子中,这一点很重要,因为我是通过指定的服务URL而不是私有IP调用backend
服务的。
是否可以从应用程序中创建JWT令牌,并使用GCP服务帐户在应用程序中验证它?我如何在Python中做到这一点? 这两个应用程序都部署在GCP中。应用程序可以部署在GCF、Cloud Run、AppEngine、GKE甚至GCE中。 我花了一些时间阅读Google Cloud文档,但我没有找到如何处理服务间身份验证的“通用”答案。(很可能是因为它们对每个GCP产品都不相同) 那么,考虑到我们抛开了谷
我正在做一个Android应用程序,使用Firebase云消息。
我试图创建spring rest服务,它是由我自己的oauth2资源服务器自动引诱的。我创建了资源服务器: {“error”:“server_error”,“error_description”:“java.io.NotSerializableException:org.springframework.security.crypto.bcrypt.bcryptPasswordenCoder”} 在
下面是官方指南中的GCM Android集成示例。 特别是,我对上述链接类中的以下行感到困惑: 现在,每当我的主要活动启动时,我都会调用intent服务,我相信instanceID负责启动令牌刷新。 我是否应该在每次从我的主要活动启动此GCM注册意图时检查Shared Prefs值。但是,在这种情况下刷新将失败,因为在初始令牌获取之后,条件将始终为true。 我应该放弃共享prefs逻辑吗?这样每
我尝试用angular2前端实现jwt令牌。当我尝试使用Postman接收带有post方法的令牌时,我接收到授权令牌,但在Angular中这样做返回空响应对象。这里是我使用的Angular服务的代码片段。 问题是,当我尝试记录时,令牌是空的,与响应相同。对于代码的后端部分,我遵循了jwt令牌的这个实现。
是否有任何API(Python、JS、...)可用于生成和检索Firebase云消息传递服务器令牌? 最终目标应与单击“项目设置”中的“添加服务器密钥”按钮相同。