【问题标题】:HTTP/1.1 401 Token invalid - AuthSub token has wrong scopeHTTP/1.1 401 令牌无效 - AuthSub 令牌的范围错误
【发布时间】:2010-03-24 05:36:59
【问题描述】:

我在尝试从 Google Analytics API 获取供稿时收到此错误。但是,使用相同的令牌,我从 Google 日历中获得了成功的提要。两者之间的代码完全相同,除了提要 url。所以它一定与 Analytics 是 https 和 Calendar 只是 http 有关。

我已成功创建了一个不安全的长寿命令牌。请求初始令牌时的范围参数:

scope=http%3A%2F%2Fwww.google.com%2Fcalendar%2Ffeeds%2F%20https%3A%2F%2Fwww.google.com%2Fanalytics%2Ffeeds

我对长寿命令牌的要求:

GET /accounts/AuthSubSessionToken HTTP/1.1
Authorization: AuthSub token="CP_AgsyLDxDCtpjg-f____8B"
Content-Type: application/x-www-form-urlencoded
Host: www.google.com:443
Accept: text/html, */*
Accept-Encoding: identity
User-Agent: Mozilla/3.0 (compatible; Indy Library)

返回一个长期存在的令牌。将其用于 Google 日历:

GET /calendar/feeds/default/allcalendars/full HTTP/1.1
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Authorization: AuthSub token="CP_AgsyLDxCh2tmj-P____8B"
Host: www.google.com
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Accept-Encoding: identity
User-Agent: Mozilla/3.0 (compatible; Indy Library)

返回一个临时重定向 (302):

HTTP/1.1 302 Moved Temporarily
Expires: Sun, 01 Nov 2009 03:00:01 GMT
Date: Sun, 01 Nov 2009 03:00:01 GMT
Set-Cookie: S=calendar=mta4-_BxxANrylcSnzUatg;Expires=Mon, 01-Nov-2010 03:00:01 GMT
Location: http://www.google.com/calendar/feeds/default/allcalendars/full?gsessionid=mta4-_BxxANrylcSnzUatg

这会导致成功获取:

GET /calendar/feeds/default/allcalendars/full?gsessionid=mta4-_BxxANrylcSnzUatg HTTP/1.1
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Authorization: AuthSub token="CP_AgsyLDxCh2tmj-P____8B"
Host: www.google.com
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Accept-Encoding: identity
User-Agent: Mozilla/3.0 (compatible; Indy Library)
Cookie: S=calendar=mta4-_BxxANrylcSnzUatg

但我在尝试获取 Google Analytics 提要时收到错误 401:

GET /analytics/feeds/accounts/default HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Authorization: AuthSub token="CP_AgsyLDxCh2tmj-P____8B"
Host: www.google.com:443
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Accept-Encoding: identity
User-Agent: Mozilla/3.0 (compatible; Indy Library)

我的域需要有效的 SSL 证书吗?已经为此奋斗了好几个星期!!!
在 Apache 中使用 Indy10 和 Delphi 2007。

请求提供一些 Delphi 代码。我在这里提供的是 GET 到提要的代码。我不提供获取令牌的代码,因为我认为它们很好(我能够获取日历提要)。

var
  IdHTTP: TIdHTTP;
  IdSSLIOHandlerSocket1: TIdSSLIOHandlerSocketOpenSSL;

begin
  IdSSLIOHandlerSocket1 := TIdSSLIOHandlerSocketOpenSSL.create(nil);
  IdHTTP := TIdHTTP.create(nil);
  with IdSSLIOHandlerSocket1 do begin
    SSLOptions.Method := sslvSSLv3;
    SSLOptions.Mode :=  sslmUnassigned;
    SSLOptions.VerifyMode := [];
    SSLOptions.VerifyDepth := 2;
  end;
  with IdHTTP do begin
    IOHandler := IdSSLIOHandlerSocket1;
    ProxyParams.BasicAuthentication := False;
    Request.UserAgent := 'Mozilla/3.0 (compatible; Indy Library)';
    Request.ContentType := 'application/x-www-form-urlencoded';
    request.host := 'www.google.com/analytics';
    request.connection := 'keep-alive';
    Request.Accept := 'text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2';
  end;

  idhttp.Request.CustomHeaders.Add('Authorization: AuthSub token="'+mToken+'" ');

  IdHTTP.Get('https://www.google.com/analytics/feeds/accounts/default');  // results in the 401

【问题讨论】:

  • 展示你的一些 Delphi 代码,尤其是你如何处理 HTTPS
  • 请将用户代理设置为代表您的程序的字符串。使用通用值会使您的程序与其他不想专门化的人混为一谈,这可能导致服务器过滤您的程序,认为这只是另一种 DoS 攻击。
  • 我尝试将用户代理设置为独特的:用户代理:测试谷歌分析界面仍然是同样的问题。
  • 只是一个想法。我会尝试获取一些成功连接到谷歌分析的应用程序,我会使用一些嗅探器来分析它发送的数据包。我会将差异与您的应用程序中的数据包进行比较。也许这会有所帮助。
  • 好主意。我实际上有提琴手。然而,问题是我相信大多数“桌面应用程序”最有可能使用客户端登录形式的身份验证。而 Web 服务应用程序使用 AuthSub 或 OAuth。但由于这些是网络服务,我无法嗅探网络服务应用程序和 Google 服务之间的活动。

标签: delphi http authentication gdata-api authsub


【解决方案1】:

花了一些时间,要求我使用 Fiddler 和 Curl php 方法。找到这一行:

Host: www.google.com:443

不能有 :443。一定是这样的:

Host: www.google.com

Indy TIdHTTP 组件在看到 https 时会自动将其附加到主机。我可以绕过它的唯一方法是发布我自己的“主机”属性。

【讨论】:

  • 另一种解决方法是将 :443 包含在令牌范围内;它只需要匹配。
  • 谢谢 - 我会试试看。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-15
  • 2011-11-27
  • 2012-09-07
  • 1970-01-01
  • 1970-01-01
  • 2020-10-05
相关资源
最近更新 更多