GCP Endpoint 使用多重身份验证
GCP Endpoint's using multiple authentication
我在 swagger 文件中为方法定义了以下安全方案:
...
get:
...
security:
- api_key: []
- firebase: []
securityDefinitions:
api_key:
in: query
name: key
type: apiKey
firebase:
authorizationUrl: ''
flow: implicit
type: oauth2
x-google-audiences: project-id
x-google-issuer: https://securetoken.google.com/project-id
x-google-jwks_uri: https://www.googleapis.com/service_accounts/v1/metadata/x509/securetoken@system.gserviceaccount.com
但是,如果我尝试使用 api 密钥发送请求,它将不起作用,但如果我使用 firebase 令牌(即使我不提供 api 密钥,它会起作用).
回复:
{
"code": 16,
"message": "JWT validation failed: Missing or invalid credentials",
"details": [
{
"@type": "type.googleapis.com/google.rpc.DebugInfo",
"stackEntries": [],
"detail": "auth"
}
]
}
如果我从安全定义中删除 firebase,那么它将使用 api 键工作。
如果还有用于相同方法的 oauth2,api 密钥安全方案将不起作用,这是一个已知问题吗?
当备选方案之一是 API 密钥时,"OR" 安全要求 are not supported 会发生什么。因此,您的行为是正确的。
如果您同时提供这两种选择,API 密钥将被忽略,但如果 OAuth2 被删除并且它只接受 API 密钥,它会起作用。
根据我附加的 documentation,您可能需要使用 "AND" 条件的两种身份验证方法。像这样:
...
security:
- api_key: []
firebase: []
....
我在 swagger 文件中为方法定义了以下安全方案:
...
get:
...
security:
- api_key: []
- firebase: []
securityDefinitions:
api_key:
in: query
name: key
type: apiKey
firebase:
authorizationUrl: ''
flow: implicit
type: oauth2
x-google-audiences: project-id
x-google-issuer: https://securetoken.google.com/project-id
x-google-jwks_uri: https://www.googleapis.com/service_accounts/v1/metadata/x509/securetoken@system.gserviceaccount.com
但是,如果我尝试使用 api 密钥发送请求,它将不起作用,但如果我使用 firebase 令牌(即使我不提供 api 密钥,它会起作用).
回复:
{
"code": 16,
"message": "JWT validation failed: Missing or invalid credentials",
"details": [
{
"@type": "type.googleapis.com/google.rpc.DebugInfo",
"stackEntries": [],
"detail": "auth"
}
]
}
如果我从安全定义中删除 firebase,那么它将使用 api 键工作。
如果还有用于相同方法的 oauth2,api 密钥安全方案将不起作用,这是一个已知问题吗?
当备选方案之一是 API 密钥时,"OR" 安全要求 are not supported 会发生什么。因此,您的行为是正确的。
如果您同时提供这两种选择,API 密钥将被忽略,但如果 OAuth2 被删除并且它只接受 API 密钥,它会起作用。
根据我附加的 documentation,您可能需要使用 "AND" 条件的两种身份验证方法。像这样:
...
security:
- api_key: []
firebase: []
....