2016-10-12 4 views
2

В настоящее время я пытаюсь реализовать авторизацию пользователя в приложении iOS. Поэтому мы используем Active Directory B2C.Azure Active Directory B2C: как обновить токен

Все работает нормально, кроме обновления моих истекших жетонов. Я вызываю запрос url (fabrikamb2c.onmicrosoft.com/oauth2/v2.0/token?p=b2c_1_sign_in), чтобы получить access_token и refresh_token. Ответ кажется действительным, и access_token работает очень хорошо, пока он не истек.

Но если я хочу, чтобы получить новый маркер (как описано здесь: OAuth 2.0 authorization code flow, смотри главу 4) запрос просто получает откликнулся с 400: Bad Request.

Я не могу узнать, что я делаю неправильно. Вы, ребята, теперь способ, как отлаживать эти запросы или иметь какой-то контрольный список, который нужно настроить на портале Azure?

Спасибо!

Edit: это запрос я использую:

POST /xxx.onmicrosoft.com/oauth2/v2.0/token?p=b2c_1_local-account-signupin HTTP/1.1 
HOST: login.microsoftonline.com 
content-type: application/x-www-form-urlencoded 
content-length: 1148 

client_id=xxx&refresh_token=xxx&grant_type=refresh_token&redirect_uri=urn:ietf:wg:oauth:2.0:oob 
+0

Можете ли вы поделиться кодом, который вы используете, чтобы запросить обновленный токен? –

+0

Спасибо за ваш комментарий. Я редактировал свой вопрос. – ErBeEn

+0

И вы уверены, что ваш 'HOST' подобен тому, что вы разместили здесь? Потому что в ссылочной документации он остается как «HOST: https: // login.microsoftonline.com», что действительно вызывает 400 Server Error без дальнейших сообщений. Я пробовал с несколькими разными арендаторами AAD B2C, в том числе один очень старый (созданный в начале предварительного просмотра), и все работает так, как ожидалось. Убедитесь, что ваш параметр HOST действительно не имеет значения «https», а длина вашего контента соответствует длине запроса. – astaykov

ответ

0

Спасибо всем за попытку решить мою проблему! Вышло, что использованный refresh_token был недопустимым. Поэтому, если вы уверены, что запрос правильный, и вы получаете только Неверный запрос ответ, проверьте параметры еще раз.

0

Я считаю, нужно задать значение для параметра scope. Параметр scope используется для информирования B2C, на какой ресурс вы запрашиваете токен. В это время вы, скорее всего, захотите использовать scope=<client_id> или scope=openid.

+0

Большое спасибо за ваш ответ. Я уже пытался установить несколько параметров для 'scope'. К сожалению, я все еще получаю ошибку 400. Люди на этой странице: https://azure.microsoft.com/en-us/documentation/articles/active-directory-b2c-reference-oauth-code/, похоже, имеют похожие проблемы, упомянутые в области комментариев. – ErBeEn

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

  • Нет связанных вопросов^_^