Необходимо ПОЛУЧИТЬ токен OAuth только с идентификатором клиента, без секретного кода клиента и URL-адресом перенаправления

Я настроил API, и мой клиент может только передать client_id, чтобы получить обратно токен OAuth в качестве ответа. Он не может передать секрет клиента и redirect_url. Я попробовал использовать неявный тип и вижу приведенный ниже URL-адрес перенаправления. может кто-нибудь помочь?

{
    "error": "invalid_request",
    "error_description": "Redirect URI specified in the request is not configured in the client subscription"
}

Есть ли альтернативный способ?

Как установить 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...
0
0
51
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Обратите внимание: для неявного потока грантов в качестве параметра требуется URL-адрес перенаправления. Обратитесь сюда MsDoc

Если вы не хотите передавать секрет клиента и URL-адрес перенаправления в запросе, вы можете использовать поток ROPC или поток кода устройства

  • Поток ROPC имеет ограничения и не рекомендуется Microsoft из-за проблем с безопасностью.
  • Он не поддерживает личные учетные записи Microsoft и учетные записи, включенные с помощью MFA.
  • Поток ROPC небезопасен, поскольку вы будете передавать имя пользователя и пароль в запросе напрямую и без секрета клиента.

Следовательно, чтобы сгенерировать токен доступа, передавая только ClientID, включите Allow public client flows как ДА.

И передайте следующий запрос:

https://login.microsoftonline.com/TenantID/oauth2/v2.0/token

client_id=ClientID
grant_type=password
username=UserName
password=Password
scope=user.read openid offline_access profile

В противном случае вы также можете использовать запрос авторизации устройства, как показано ниже:

https://login.microsoftonline.com/TenantID/oauth2/v2.0/devicecode

client_id=ClientID
scope=user.read

Это создаст verification_uri и user_code:

Теперь нажмите на verification_uri в браузере и введите код:

То есть вставьте этот URL в браузерhttps://microsoft.com/devicelogin и введите код.

И войдите в систему для аутентификации:

Создайте токен доступа, используя следующие параметры:

https://login.microsoftonline.com/TenantID/oauth2/v2.0/token

grant_type:urn:ietf:params:oauth:grant-type:device_code
client_id:ClientID
device_code:DeviceCodeFromAboveRequest

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