2015-04-03 3 views
3

Я пытаюсь освежить OAuth маркер с помощью Lync UCWA, следуя примерам здесь, https://msdn.microsoft.com/en-us/library/office/dn356686.aspx#sectionSection3UCWA обновить OAuth маркер с grant_type = пароль

Пример в их документации использует grant_type урну: microsoft.rtc: anonmeeting, но Я использую grant_type = пароль. Мой клиент успешно аутентифицируется на конечной точке/WebTicket/oauthtoken, и я получаю access_token просто отлично.

Через несколько часов, мне нужно, чтобы обновить маркер OAuth, разместив/WebTicket/oauthtoken снова с параметрами:

grant_type=password 
username=$my_username 
password=$my_password 
ms_rtc_renew=$access_token (cwt=AA....) 

Это возвращает статус 400, хотя, с ошибкой: invalid_request и комментарий в заголовках «Нет действительного маркера безопасности». Значение, которое я помещаю в ms_rtc_renew, - это то же значение, которое я использую во всех своих заголовках для других конечных точек, «Авторизация»: ['Bearer $ access_token'], поэтому токен работает нормально.

Я убедился, что использую заголовок Content-Type: application/x-www-form-urlencoded при отправке в конечную точку/WebTicket/oauthtoken и что я urlencoding данных перед публикацией.

Кто-нибудь еще смог обновить токен OAuth с использованием Lync UCWA 1.0 и grant_type = password? Любой опытный разработчик UCWA распознает, что мне не хватает в моем сообщении, чтобы обновить токен?

Заранее спасибо.

ответ

4

ms_rtc_renew относится к типу грантов анонимного собрания. В той же документации, он упоминает:

Refreshing a token for authenticated users is the same flow as acquiring a new token.

Это правильный ход мыслей, но это не пропустить несколько ключевых элементов информации. Если вы заинтересованы в сохранении подлинного приложения UCWA, необходимо предоставить ту же информацию при выполнении запроса POST на приложениях, иначе он будет создавать новое приложение.

развернутый ответ

Когда вы дойдете до точки, что приложение UCWA возвращается 404 на запросы и о том, что текущий маркер OAuth является недействительным, необходимо возобновить. Следуя шагам KeyTasks-CreateApplication, запросите новый токен на шаге 5. В этот момент возьмите новый токен и замените заголовок Авторизация и попытайтесь сделать сбойный запрос.

Если это не сработает, подумайте о повторном создании приложения (шаг 9) с использованием тех же данных (UserAgent, EndpointId, Culture). Вам нужно будет заменить любые сохраненные данные Json, потому что URL-адрес приложения может меняться между экземплярами (не совсем определен).

+0

Спасибо за ответ ShelbyZ. Извините, мне все еще не ясно, есть ли другой ключ/значение, которое ищет UCWA, когда я пытаюсь обновить токен, который я получил от использования grant_type = password? Что-то вроде grant_type = password & username = johndoe & password = A3ddj3w & access_token = cwt ...? – Kafonek

+1

Немного расширил свой первоначальный фрагмент, сообщите мне, если это имеет смысл. – ShelbyZ

+0

Хорошо, так что, насколько я понимаю, вы просто предполагаете, что в конце 8 часов я должен просто создать новое приложение вместо обновления access_token, которое у меня уже есть. Это вполне приемлемое решение, но, похоже, оно противоречит духу документов UCWA.Нет проблем, это UCWA 1.0 по какой-то причине! – Kafonek

Смежные вопросы