Ролловер клавиш был реализован для вас в различных библиотеках; разумной стратегией является использование одного из них, а не сворачивание собственного.
Документ JSON из https://login.microsoftonline.com/[TENANT-ID]/discovery/v2.0/keys
соответствует спецификации JSON Web Key (JWK) ( RF C 7517) ). Spe c не определяет порядок ключей в массиве keys
:
Значение параметра "keys"
является массивом значений JWK. По умолчанию порядок значений JWK в массиве не подразумевает порядок предпочтения между ними, хотя приложения наборов JWK могут при желании присвоить значение порядку для своих целей.
Похоже, что Microsoft реализует смену ключей для добавления новых клавиш в верхнюю часть списка. Там нет документально подтвержденной гарантии этого, и мы не рекомендуем полагаться на это. Что касается того, когда ключи выпадают из списка, опять-таки нет опубликованной спецификации c. Если сертификат отозван или срок его действия истек, его нельзя использовать для проверки подписи. Здравый смысл подсказывает, что он должен быть удален из списка в тот момент. Microsoft при смене ключа на c отмечает, что
в случае чрезвычайной ситуации [ключи] могут быть немедленно перенесены.
Перевод: решение то, как часто вам следует go вернуться к опубликованному «основному» списку ключей на https://login.microsoftonline.com/[TENANT-ID]/discovery/v2.0/keys
, зависит от важности / последствий невозможности проверки токена в вашем приложении.
x5c
- это массив, потому что он представляет цепочку сертификатов . Реализация Microsoft использует один сертификат (длина цепочки = 1), но ничто не мешает им перейти в более длинную цепочку в какой-то момент в будущем. С практической точки зрения, вряд ли они это сделают, потому что это повлияет на ряд несоответствующих приложений, а также на их собственные библиотеки.