Azure: как получить токен обновления? использование Curl, когда вывод соединения дает только токен доступа

Мне не удается получить токен обновления с помощью субъекта-службы 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"
}

Поскольку на выходе нет токена обновления (как его получить)

Просьба предоставить любую возможную информацию

Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
2
0
1 754
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Измените 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 прав. Обратите внимание, что вы используете client_credentials вместо grant_type. Если вас действительно интересует пользовательский поток, в котором токен обновления будет действительным, рассмотрите поток кода авторизации, как описано здесь. с точки зрения OAuth (не конкретно реализации Azure AD) stackoverflow.com/questions/43340580/…

Rohit Saigal 08.04.2019 18:11

Большое спасибо, Джунас, Тони Джу и Рохит Сайгал.

Madhanan Balaram 16.04.2019 12:58

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

Pankaj Lilan 15.10.2019 10:30

Какой поток вы используете? Если это неявно, вы можете использовать MSAL.js для автоматического обновления токенов.

juunas 15.10.2019 10:31

Другие вопросы по теме