首页 文章

使用App Engine Flexible(Node.js)进行Google Cloud Endpoints自定义身份验证

提问于
浏览
2

Google Cloud Endpoints文档为可扩展服务代理配置文件中的自定义安全定义提供了此规范:

securityDefinitions:
    your_custom_auth_id:
        authorizationUrl: ""
        flow: "implicit"
        type: "oauth2"
        # The value below should be unique
        x-google-issuer: "issuer of the token"
        x-google-jwks_uri: "url to the public key"
        # Optional. Replace YOUR-CLIENT-ID with your client ID
        x-google-audiences: "YOUR-CLIENT-ID"

关于如何实现这一点的文档对于App Engine Flexible 非常稀疏 . 有没有人有一个如何设置它的例子,或者他们可以证明它是可能的吗?特别是,authorizationUrl的接口是什么?我们可以放置授权服务的URL(提供由可扩展服务代理验证的JWT令牌),以便如果令牌在authorizationURL中无效, endpoints 将重定向到它吗?

1 回答

  • 2

    你是对的 . 'authorizationUrl'是OpenAPI Swagger specific annotation,它指向客户端用于检索实际JWT(JSON Web令牌)的URL endpoint of your log in form .

    一旦客户端在登录后从您的App Engine应用程序中检索JWT,他们就可以使用它来向Cloud Endpoint API授权他们的请求 .


    您的Node.js App Engine应用程序将使用任何JWT signing library生成JWT(多种语言的auth0 offers their own) .

    要生成令牌,您将提供标准的“JWT”和散列头,添加您的特定用户对象JSON有效负载(因为此令牌对于此特定用户应该是唯一的),以及您的密钥/公钥 .

    JWT库还应该在生成时自动提供所需的JWT claims,只需确保您提供库使用的颁发者以及'openapi.yaml'中的秘密/公钥'x-google-issuer'和'x-google-jwks_uri' .


    您可以按照JWT.io guide了解有关如何生成和使用JWT的更多信息 . 您还可以按照特定的App Engine Flexible guidecode your application来处理JWT .

相关问题