Доставка Контента — Tridion 2011 Sp1 Hr1 — Odata Access_Token

  • Автор темы Svk49
  • Обновлено
  • 23, Oct 2024
  • #1

онлайн-документы упоминают(требует входа в систему), что JSON access_token, возвращаемый вызовом access_token.svc, возвращает что-то вроде:

 
 
 client_id=testuser
&expiresOn=1361873823640
&digest=IaiLIug+RRYeEszC5syFvlHod9qXWUi0fx4aZFiaS2c=
 

Однако когда мы попробовали это, мы получили следующее:

{"access_token":"client_id%3dtestuser%26expiresOn%3d1361873823640%26digest%3dIaiLIug%2bRRYeEszC5syFvlHod9qXWUi0fx4aZFiaS2c%3d","expires_in":300}

Правая строка декодируется как:

{"access_token":"HufXeuUt%2FYYElA8SYjJOkUkrXxV9dyXRirmKhjW%2Fb%2FU%3D","expires_in":300}

Когда мы пытаемся передать это последующему вызову OData, мы получаем исключение:

System.IO.IOException: невозможно прочитать данные из транспорта

соединение: Соединение было закрыто.

Должны ли мы извлечь что-то из закодированной строки, возможно, бит «дайджеста»?

Если да, то документация нуждается в обновлении!

РЕДАКТИРОВАТЬ

Наши журналы показывают:

2013-02-26 12:52:46,700 ОШИБКА OAuth2AccessToken - дайджест неправильный

Понятия не имею, почему?

Svk49


Рег
26 Jan, 2009

Тем
82

Постов
195

Баллов
625
  • 26, Oct 2024
  • #2

Как вы упомянули, протокол такой:

  1. Вы отправляете запрос на конечную точку токена доступа, чтобы получить токен (вам необходимо указать здесь ваш client_id и ваш client_secret в качестве заголовков или параметров запроса);

  2. Вы получите ответ, подобный этому: /Configuration/Security/SharedSecret/ ; 2.1 Worth knowing is that the token is url encoded and in UTF-8 format so, on Java side you need to do /Configuration/AuthenticationServer/SharedSecret/ в то время как на стороне .NET вам нужно сделать Client.Headers["authorization"] = "OAuth " + DecodedTokenString; ;

  3. Ваш следующий запрос должен включать заголовок авторизации. На стороне Java вы делаете builder.header("authorization", "OAuth " + decodedTokenString); while on .NET side you can use HttpUtility.UrlDecode("sometoken", System.Text.Encoding.UTF8);

Стоит отметить, что SharedSecret, определенный в файле cd_webservice_conf.xml ( URLDecoder.decode("sometoken", "UTF-8"); ) of the TokenAccessPoint needs to be the same as the SharedSecret defined in the cd_ambient_conf.xml ( {"access_token":"sometoken","expires_in":300} ) конечной точки (WebService).

Вы уверены, что правильно декодировали токен, полученный с сервера? Вы уверены, что настроили правильный SharedSecret в двух файлах конфигурации?

Надеюсь, это поможет.

 

Kamcad


Рег
12 Dec, 2004

Тем
94

Постов
212

Баллов
702
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно