我们正在使用 Apigee 平台来托管我们的 api。我们在 Apigee 中的 Api 代理配置为使用 Oauth 2.0 client_credentials 和隐式授权类型。
我们正在创建 Console To Go,为我们的 API 提供测试控制台给开发人员,并将控制台配置为使用 Oauth 2.0 Implicit Grant Flow。
当我们测试实际调用时,我们总是从 Apigee 得到 401。这是回复
HTTP/1.1 401 API is secure. Needs security Credentials
WWW-Authenticate:
Bearer realm="null",error='invalid_token",error_description='oauth.v2.InvalidAccessToken: Invalid access token"
Content-Length:101
Content-Type:application/json
{
"fault": {
"faultstring": "Invalid access token",
"detail": {
"errorcode": "oauth.v2.InvalidAccessToken"
}
}
}
发送到我们 API 的实际请求是:
GET /whodini/v1/discovery?email=puneet%40whodini.com HTTP/1.1
Authorization: OAuth M********N (Masked for security)
Host: whodiniinc-test.apigee.net
X-Target-URI: http://whodiniinc-test.apigee.net
Connection:
Keep-Alive
Apigee 的 ValidateAccessToken 策略在Authorization: Bearer {token}
标头中查找令牌值,我怀疑它因 401 而失败,因为控制台发出的实际请求 go contains Authorization: Oauth {token}
。
有什么办法 1. 使用 Oauth 隐式授予流时控制授权标头值,以便在进行 API 调用时使用控制台Authorization: Bearer M********N
而不是Authorization: OAuth M********N
- 在 Apigee 代理的 ValidateAccessToken 政策中添加一条规则以解释
Authorization: OAuth M********N (Masked for security)