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 回答
你是对的 . '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 guide到code your application来处理JWT .