gpt4 book ai didi

oauth - Tridion UGC 服务和 oAuth 身份验证

转载 作者:行者123 更新时间:2023-12-04 19:10:56 25 4
gpt4 key购买 nike

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

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

其中 auth 是我从 access_token.svc 返回的 token 。根据文档,从服务返回的 token 应该类似于:-

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”。我应该通过 token 的哪一部分以及以什么格式进行授权?

非常感谢

约翰

最佳答案

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

  • 您向访问 token 端点发出 post 请求以获取 token (您需要在此处提供您的 client_id 和 client_secret 作为 header 或查询参数);
  • 你会得到类似这样的答案:{"access_token":"sometoken","expires_in":300} ;
    2.1 值得知道的是 token 是 url 编码和 UTF-8 格式,所以在 Java 端你需要做 URLDecoder.decode("sometoken", "UTF-8");在 .NET 方面,您需要执行 HttpUtility.UrlDecode("sometoken", System.Text.Encoding.UTF8); ;
  • 您的下一个请求需要包含授权 header 。在 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 相同。

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

    希望这可以帮助。

    关于oauth - Tridion UGC 服务和 oAuth 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15096111/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com