Мне не удается получить токен обновления с помощью субъекта-службы Azure (с использованием идентификатора клиента и секрета клиента)
Пожалуйста, помогите мне получить токен обновления через CURL и как его использовать.
Когда я запускаю приведенную ниже команду CURL в Windows CMD Prompt, я получаю токен доступа. Принимая во внимание, что я не получаю токен обновления вместе с ним.
я что-то пропустил здесь?
Вход :
curl -X POST https://login.microsoftonline.com/12345/oauth2/token ^
-F grant_type=client_credentials ^
-F resource=https://management.core.windows.net/ ^
-F client_id=12345-abcde ^
-F client_secret=12345abcde
Выход:
{
"token_type": "Bearer",
"expires_in": "3600",
"ext_expires_in": "3600",
"expires_on": "1554368330",
"not_before": "1554364430",
"resource": "https://management.core.windows.net/",
"access_token": "XXXXXXXXXXXXX"
}
Поскольку на выходе нет токена обновления (как его получить)
Просьба предоставить любую возможную информацию
Измените grant_type на «пароль», добавьте в запрос имя пользователя и пароль.
curl -X POST https://login.microsoftonline.com/12345/oauth2/token ^
-F grant_type=password ^
-F resource=https://management.core.windows.net/ ^
-F client_id=12345-abcde ^
-F client_secret=12345abcde ^
-F [email protected] ^
-F password=******
Вы сможете получить файл refresh_token.
{
"token_type": "Bearer",
"scope": "User.ReadWrite.All",
"expires_in": "3600",
"ext_expires_in": "3600",
"expires_on": "1554711949",
"not_before": "1554708049",
"resource": "https://management.core.windows.net/",
"access_token": "******",
"refresh_token": "******"
}
Вы можете использовать refresh_token для обновить токен доступа.
Вы не получаете токены обновления с идентификатором клиента и секретом. Это не имеет смысла. Токены обновления имеют смысл только тогда, когда в них участвует пользователь. Так как это позволяет вам получать новые токены, не запрашивая у пользователя повторный вход в систему.
Вам не нужен токен обновления. Вы можете получить новые токены с идентификатором клиента и секретом, когда захотите.
Большое спасибо, Джунас, Тони Джу и Рохит Сайгал.
@juunas В моем сценарии участвуют пользователи. И я не могу перенаправлять на веб-страницу каждый час. Итак, мне понадобится токен обновления. Есть идеи, как мы это реализуем?
Какой поток вы используете? Если это неявно, вы можете использовать MSAL.js для автоматического обновления токенов.
Я думаю, что @juunas прав. Обратите внимание, что вы используете
client_credentials
вместоgrant_type
. Если вас действительно интересует пользовательский поток, в котором токен обновления будет действительным, рассмотрите поток кода авторизации, как описано здесь. с точки зрения OAuth (не конкретно реализации Azure AD) stackoverflow.com/questions/43340580/…