«IDX10511: Ошибка проверки подписи» для приложения Azure AD SPA - PullRequest
0 голосов
/ 14 февраля 2020

У меня есть приложение SPA, полученное из примера Identity Platform, который изначально вызывает API-интерфейс Graph.

Я изменил конечную точку для вызова локального API.

SPA использует Azure AD для аутентификации.

Пример API получен из шаблона проекта VS 2019. Для API.

, NET 4.7.2 - нет. NET Core.

Я могу подтвердить подлинность OK, и при выполнении сетевой трассировки присутствуют и ID, и токены доступа.

Однако на стороне API появляется ошибка:

"IDX10511: Signature validation failed. Keys tried: 'Microsoft.IdentityModel.Tokens.X509SecurityKey, KeyId: '1E50B4475DAC931359D564309A3385FFAB7FB431', InternalId: 'f61f7746-3cff-4557-8b2c-b47fad9cf1e3'. , KeyId: 1E50B4475DAC931359D564309A3385FFAB7FB431"

Расшифровка доступа токен показывает:

"{
  "typ": "JWT",
  "nonce": "G0Q6_BuYJUfZaBnX-l1Ox1eoncxXRT4KMThFBcn1-VA",
  "alg": "RS256",
  "x5t": "HlC0R12skxNZ1WQwmjOF_6t_tDE",
  "kid": "HlC0R12skxNZ1WQwmjOF_6t_tDE"
}"

Гугл это, похоже, что подпись не работает из-за одноразового номера в заголовке, и это требует "специальной обработки".

Вся проверка выполняется OWIN .

Есть идеи, что это такое или как это исправить?

1 Ответ

0 голосов
/ 19 февраля 2020

Я не думал, что это проблема конфигурации, потому что я никогда не видел конфигурацию, в которой указана подпись.

Поэтому я начал просматривать msal. js - это открытый исходный код.

«User.Read» (область действия, определенная в используемом образце) жестко задан в нескольких местах, поэтому я удалил эту область из образца и создал фиктивную область с именем «ab c».

Я также перенастроил Azure AD для изменения объема.

И вот, все работает.

Еще интереснее, заголовок другой:

{
  "typ": "JWT",
  "alg": "RS256",
  "x5t": "HlC0R12skxNZ1WQwmjOF_6t_tDE",
  "kid": "HlC0R12skxNZ1WQwmjOF_6t_tDE"
}

Обратите внимание, что нет одноразового номера.

Поэтому я подозреваю, что, поскольку в исходном примере использовался Microsoft Graph, «User.Read» подразумевает некоторую специальную обработку Graph, которая добавляет одноразовый номер, который испортит подпись.

Для ссылка .

...