Хотя учетные записи MSA не возвращают JWT на основе access_token
, вы можете запросить JWT на основе id_token
, используя OpenID Connect .
Самый простойПодумать о потоке OpenID - это вариант предоставления кода авторизации OAuth 2.0.Он использует ту же общую модель с несколькими дополнительными параметрами.
При первоначальном вызове провайдера:
Добавьте id_token
к параметру запроса response_type
.
Добавитьopenid
, email
и profile
для параметра запроса scope
Окончательный результат должен выглядеть примерно так:
https://login.microsoftonline.com/common/oauth2/v2.0/authorize?
client_id={ID}&response_type=id_token+code&
redirect_uri={URI}&scope=openid+email+profile+offline_access+user.read
Youзатем завершите тот же рабочий процесс, который вы используете сегодня, с предоставлением кода авторизации.Однако последний шаг теперь будет включать дополнительное свойство id_token
в полезную нагрузку JSON:
{
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik5HVEZ2ZEstZnl0aEV1Q...",
"token_type": "Bearer",
"expires_in": 3599,
"scope": "https%3A%2F%2Fgraph.microsoft.com%2Fmail.read",
"refresh_token": "AwABAAAAvPM1KaPlrEqdFSBzjqfTGAMxZGUTdM0t4B4...",
"id_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJub25lIn0.eyJhdWQiOiIyZDRkMTFhMi1mODE0LTQ2YTctOD...",
}
Этот id_token
также будет токеном на основе JWT и может быть легко декодирован так же, как выделая с JWT access_token
, вы возвращаетесь из AAD.