Зарегистрированное в Azure Active Directory приложение java Spring возвращает код вместо токена после входа в систему

#azure #oauth-2.0 #azure-active-directory #spring-oauth2

#azure #oauth-2.0 #azure-active-directory #spring-oauth2

Вопрос:

Я зарегистрировал приложение Java Spring в Azure active Directory для входа в систему с проверкой подлинности Microsoft. Предполагается, что Microsoft login api возвращает токен в redirect_uri (определенный в Azure, где клиентский браузер перенаправляется после успешного входа в систему).

Azure предоставляет токен, прикрепленный к redirect_uri?token={az_token}

но вместо этого я получаю redirect_uri?code={some_code}, который не является JWT

ожидаемый = http://127.0.0.1:4200?token ={az_token} получение = http://127.0.0.1:4200?code ={some_code}

Комментарии:

1. Привет, у вас была возможность ознакомиться с моим ответом? Какие-либо обновления?

Ответ №1:

Во-первых, вам необходимо понять различия между потоком кода авторизации OAuth 2.0 и потоком неявного предоставления.

Для потока кода авторизации мы должны запросить код авторизации, а затем запросить токен доступа, используя код аутентификации. Пожалуйста, обратите внимание amp;response_type=code в запросе. В этом случае вы получите http://127.0.0.1:4200?code={some_code} . Затем вы можете использовать этот код для вызова /token конечной точки для получения токена доступа.

Если вы хотите получить токен доступа /authorize напрямую от конечной точки, вам следует рассмотреть неявный поток предоставления. Посмотрите этот пример.

// Разрывы строк только для удобства чтения

 https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize?
client_id=6731de76-14a6-49ae-97bc-6eba6914391e
amp;response_type=token
amp;redirect_uri=http://localhost/myapp/
amp;scope=https://graph.microsoft.com/user.read
amp;response_mode=fragment
amp;state=12345
amp;nonce=678910
amp;prompt=none
amp;login_hint=myuser@mycompany.com
 

amp;response_type=token В этом случае он включает в себя, который вернет токен доступа следующим образом: http://127.0.0.1:4200?token={access_token} .

Помните, что вам необходимо включить неявный поток в вашем приложении Java Spring.