【问题标题】:OpenId Connect endpoint returns 'not found'OpenId Connect 端点返回“未找到”
【发布时间】:2015-03-30 18:42:23
【问题描述】:

我正在将 OpenID 2.0 迁移到 OAuth 2.0 登录(请参阅 https://developers.google.com/accounts/docs/OpenID?hl=ja)。我想将新的 OpenID 2.0 标识符映射到我的数据库中的旧的/现有的 OpenID Connect 标识符。

我正在处理 OAuth 响应 (redirect_uri),我想使用 https://www.googleapis.com/oauth2/v3/token 端点来交换访问令牌和 openid_id 字段的授权代码,我将使用它来选择一个我的数据库中的现有用户。

但是,我对https://www.googleapis.com/oauth2/v3/token 的调用返回“未找到”。有什么线索吗?

我使用的是 scribe 1.3.7,这是我的代码:

OAuthService service = new ServiceBuilder().provider(Google2Api.class).apiKey(xxxxxxxx).apiSecret(yyyyyyyyyyyyyyy).callback(zzzzzzzzzzzzzzzzzzzz).scope("openid profile https://mail.google.com/ https://www.googleapis.com/auth/userinfo.email").build();
Token accessToken = service.getAccessToken(null, new Verifier(oauth_verifier);
OAuthRequest request = new OAuthRequest(Verb.GET, "https://www.googleapis.com/oauth2/v3/token");
request.addQuerystringParameter("format","json");
request.addQuerystringParameter(OAuthConstants.REALM, "http://*.unclestock.com");
service.signRequest(accessToken, request); 
Response response = request.send(); 
// result -> not found

【问题讨论】:

  • 代码片段是无意义的:它是 service.getAccessToken() 必须使用令牌端点交换访问令牌的授权代码。该操作确实触发了 POST。该请求用于访问受保护的资源。所以我更新了 Google2Api 以解决 v3/token 端点。

标签: google-app-engine google-oauth scribe google-openid openid-connect


【解决方案1】:

GEThttps://www.googleapis.com/oauth2/v3/token 的请求返回“未找到”。您需要使用 HTTP POST 进行请求。

将代码的第 3 行更新为以下内容,然后重试:

OAuthRequest request = new OAuthRequest(Verb.POST, "https://www.googleapis.com/oauth2/v3/token");

您可以在official docs 中阅读有关将代码交换为访问令牌和 ID 令牌的更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-08
    • 2012-09-06
    • 1970-01-01
    • 1970-01-01
    • 2020-08-24
    • 1970-01-01
    相关资源
    最近更新 更多