5

UGC에 웹 요청을하고 oAuth를 사용하여 인증하려고 할 때 문제가 있습니다. 다음과 같은 웹 요청을합니다. -Tridion 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을 구문 분석했는데 승인을 통과하려고 시도했지만 무엇이든지 시도해 본다. gs - "ERROR OAuth2AccessToken - 다이제스트가 잘못되었습니다." 토큰의 어떤 부분과 어떤 형식으로 승인해야합니까?

많은 감사

+0

어려운 질문입니다. OAuth에 대한 경험이 거의 없습니다. 하지만 헤더를 통과 한 속성에는 oauth_와 같은 접두어가 붙습니다. oauth_consumer_key, oauth_token. 반환 된 속성은 쿼리 문자열에서 사용할 수있는 것 같습니다. OAuth 라이브러리를 사용하면 약간의 도움이 될 수 있습니다. http://oauth.net/code/ –

+1

oauth 및 odata를 포함하도록 태그를 다시 지정했습니다. Tridion이 아니라 오히려 문제가있는 것 같습니다. 해당 주제에 관한 질문을 검색해보십시오. –

답변

5

당신이 언급 한 것처럼, 프로토콜이 있습니다 :

  1. 당신은 당신이 필요로하는 (액세스 토큰 엔드 포인트에 POST 요청 토큰을 얻을 수 있도록 여기서 client_id와 client_secret을 헤더 또는 쿼리 매개 변수로 제공).

  2. 다음과 비슷한 대답을 얻을 수 있습니다. {"access_token":"sometoken","expires_in":300}; 2.1 토큰은 UTF-8 형식으로 인코딩되어 있기 때문에 Java 측에서 URLDecoder.decode("sometoken", "UTF-8");을 수행해야하며 .NET 측에서는 HttpUtility.UrlDecode("sometoken", System.Text.Encoding.UTF8);을 수행해야합니다.

  3. 다음 요청에 인증 헤더를 포함시켜야합니다. 자바에 당신은 언급 할 가치가 Client.Headers["authorization"] = "OAuth " + DecodedTokenString;

이 TokenAccessPoint의 cd_webservice_conf.xml (/Configuration/AuthenticationServer/SharedSecret/)에 정의 된 sharedSecret에이 sharedSecret에가에 정의 된 동일 할 필요가 있다는 것입니다 사용할 수있는 .NET 측 builder.header("authorization", "OAuth " + decodedTokenString); 동안을 (WebService) Endpoint의 cd_ambient_conf.xml (/Configuration/Security/SharedSecret/).

서버에서 가져온 토큰을 올바르게 디코딩 했습니까? 두 개의 구성 파일에서 적절한 SharedSecret을 구성 했습니까?

희망이 도움이됩니다.

+0

Daniel 님, 죄송합니다. 더 빨리 업데이트하지 마세요. 올바르게 지적한대로 토큰을 디코딩하고 잘못된 구성 값으로 인해 문제가 발생했습니다. 좋아. 고마워, 존 – John