【问题标题】:Tridion UGC service and oAuth authenticationTridion UGC 服务和 oAuth 认证
【发布时间】:2013-02-26 18:04:33
【问题描述】:

我在尝试向 UGC 发出网络请求并使用 oAuth 进行身份验证时遇到问题。我正在发出一个网络请求,例如:-

WebRequest wr = WebRequest.Create("http://ugc.service/odata.svc/Ratings(Id=200)");
wr.Headers["authorization"] = "OAuth " + auth;

其中 auth 是我从 access_token.svc 返回的令牌。根据文档,从服务返回的令牌应该是这样的:-

HufXeuUt%2FYYElA8SYjJOkUkrXxV9dyXRirmKhjW%2Fb%2FU%3D

但是,我从 access_token.svc 返回的更像是:-

{"access_token":"client_id%3dtestuser%26expiresOn%3d1361898714646%26digest%3d%2fW%2fvyhQneZHrm1aGhwOlgLtA9xGWd77hkxWbjmindtM%3d","expires_in":300}

我已解析 JSON 以提取各种字符串并尝试将这些字符串传递给授权,但无论我尝试什么,我都会在日志中收到错误 - “ERROR OAuth2AccessToken - Digest is wrong”。我应该通过令牌的哪一部分以及以什么格式进行授权?

非常感谢

约翰

【问题讨论】:

  • 难题,我对 OAuth 几乎没有任何经验。但我确实知道通过标头传递的属性以 oauth_ 为前缀,例如oauth_consumer_key,oauth_token。在我看来,返回的属性可用于查询字符串。使用 OAuth 库可能会对您有所帮助。 oauth.net/code
  • 我已经重新标记为包括 oauth 和 odata,因为这似乎是一个问题,而不是 Tridion。尝试搜索有关这些主题的问题。

标签: oauth tridion odata tridion-2011 tridion-content-delivery


【解决方案1】:

就像你提到的,协议是这样的:

  1. 您向访问令牌端点发出 post 请求以获取令牌(您需要在此处提供您的 client_id 和您的 client_secret 作为标头或查询参数);

  2. 你会得到类似这样的答案:{"access_token":"sometoken","expires_in":300}; 2.1 值得知道的是,令牌是 url 编码的,并且是 UTF-8 格式,所以在 Java 端你需要做 URLDecoder.decode("sometoken", "UTF-8"); 而在 .NET 端你需要做 HttpUtility.UrlDecode("sometoken", System.Text.Encoding.UTF8);;

  3. 您的下一个请求需要包含授权标头。在 Java 端你可以使用 builder.header("authorization", "OAuth " + decodedTokenString); 而在 .NET 端你可以使用Client.Headers["authorization"] = "OAuth " + DecodedTokenString;

值得一提的是,TokenAccessPoint 的 cd_webservice_conf.xml (/Configuration/AuthenticationServer/SharedSecret/) 中定义的 SharedSecret 需要与 (WebService)EndPoint 的 cd_ambient_conf.xml (/Configuration/Security/SharedSecret/) 中定义的 SharedSecret 相同。

您确定您正确解码了从服务器获取的令牌吗?您确定在两个配置文件中配置了正确的 SharedSecret 吗?

希望这会有所帮助。

【讨论】:

  • 嗨丹尼尔,很抱歉没有尽快更新。正如您正确指出的那样,正是令牌的解码以及不正确的配置值导致了我们的问题。现在一切都好。谢谢,约翰
猜你喜欢
  • 2013-02-03
  • 2013-01-14
  • 2012-04-13
  • 2018-02-14
  • 1970-01-01
  • 2012-06-07
  • 2012-07-25
  • 2019-08-10
  • 2011-05-03
相关资源
最近更新 更多