Токены идентификации на платформе удостоверений Майкрософт

Сервер авторизации выдает маркеры идентификатора, содержащие утверждения, содержащие сведения о пользователе. Их можно отправлять вместе с маркером доступа или вместо него. Сведения в маркерах идентификаторов позволяют клиенту убедиться, что пользователь является тем, кто они утверждают.

Сторонние приложения предназначены для понимания маркеров идентификаторов. Маркеры идентификаторов не должны использоваться для авторизации. Для авторизации используются маркеры доступа. Утверждения, предоставляемые маркерами идентификаторов, можно использовать для пользовательского интерфейса в приложении, в качестве ключей в базе данных и для обеспечения доступа к клиентскому приложению. Дополнительные сведения о утверждениях, используемых в маркере идентификатора, см. в справочнике по утверждениям маркера идентификатора. Дополнительные сведения об авторизации на основе утверждений см. в разделе "Безопасные приложения и API", проверяя утверждения.

Форматы маркеров

В платформа удостоверений Майкрософт доступны две версии маркеров идентификатора: версии 1.0 и версии 2.0. Эти версии определяют утверждения, которые находятся в маркере. Маркеры идентификаторов версий 1.0 и 2.0 содержат разную информацию. Версия зависит от конечной точки, из которой поступил запрос. Новые приложения должны использовать версию 2.0.

  • Версия 1.0: https://login.microsoftonline.com/common/oauth2/authorize
  • v2.0: https://login.microsoftonline.com/common/oauth2/v2.0/authorize

Пример маркера идентификатора версии 1.0

eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6IjdfWnVmMXR2a3dMeFlhSFMzcTZsVWpVWUlHdyIsImtpZCI6IjdfWnVmMXR2a3dMeFlhSFMzcTZsVWpVWUlHdyJ9.eyJhdWQiOiJiMTRhNzUwNS05NmU5LTQ5MjctOTFlOC0wNjAxZDBmYzljYWEiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkvIiwiaWF0IjoxNTM2Mjc1MTI0LCJuYmYiOjE1MzYyNzUxMjQsImV4cCI6MTUzNjI3OTAyNCwiYWlvIjoiQVhRQWkvOElBQUFBcXhzdUIrUjREMnJGUXFPRVRPNFlkWGJMRDlrWjh4ZlhhZGVBTTBRMk5rTlQ1aXpmZzN1d2JXU1hodVNTajZVVDVoeTJENldxQXBCNWpLQTZaZ1o5ay9TVTI3dVY5Y2V0WGZMT3RwTnR0Z2s1RGNCdGsrTExzdHovSmcrZ1lSbXY5YlVVNFhscGhUYzZDODZKbWoxRkN3PT0iLCJhbXIiOlsicnNhIl0sImVtYWlsIjoiYWJlbGlAbWljcm9zb2Z0LmNvbSIsImZhbWlseV9uYW1lIjoiTGluY29sbiIsImdpdmVuX25hbWUiOiJBYmUiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMWRiNDcvIiwiaXBhZGRyIjoiMTMxLjEwNy4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJub25jZSI6IjEyMzUyMyIsIm9pZCI6IjA1ODMzYjZiLWFhMWQtNDJkNC05ZWMwLTFiMmJiOTE5NDQzOCIsInJoIjoiSSIsInN1YiI6IjVfSjlyU3NzOC1qdnRfSWN1NnVlUk5MOHhYYjhMRjRGc2dfS29vQzJSSlEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6IkFiZUxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJMeGVfNDZHcVRrT3BHU2ZUbG40RUFBIiwidmVyIjoiMS4wIn0=.UJQrCA6qn2bXq57qzGX_-D3HcPHqBMOKDPx4su1yKRLNErVD8xkxJLNLVRdASHqEcpyDctbdHccu6DPpkq5f0ibcaQFhejQNcABidJCTz0Bb2AbdUCTqAzdt9pdgQvMBnVH1xk3SCM6d4BbT4BkLLj10ZLasX7vRknaSjE_C5DI7Fg4WrZPwOhII1dB0HEZ_qpNaYXEiy-o94UJ94zCr07GgrqMsfYQqFR7kn-mn68AjvLcgwSfZvyR_yIK75S_K37vC3QryQ7cNoafDe9upql_6pB2ybMVlgWPs_DmbJ8g0om-sPlwyn74Cc1tW3ze-Xptw_2uVdPgWyqfuWAfq6Q

Просмотрите этот пример маркера версии 1.0 в jwt.ms.

Пример маркера идентификатора версии 2.0

eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IjFMVE16YWtpaGlSbGFfOHoyQkVKVlhlV01xbyJ9.eyJ2ZXIiOiIyLjAiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vOTEyMjA0MGQtNmM2Ny00YzViLWIxMTItMzZhMzA0YjY2ZGFkL3YyLjAiLCJzdWIiOiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFJa3pxRlZyU2FTYUZIeTc4MmJidGFRIiwiYXVkIjoiNmNiMDQwMTgtYTNmNS00NmE3LWI5OTUtOTQwYzc4ZjVhZWYzIiwiZXhwIjoxNTM2MzYxNDExLCJpYXQiOjE1MzYyNzQ3MTEsIm5iZiI6MTUzNjI3NDcxMSwibmFtZSI6IkFiZSBMaW5jb2xuIiwicHJlZmVycmVkX3VzZXJuYW1lIjoiQWJlTGlAbWljcm9zb2Z0LmNvbSIsIm9pZCI6IjAwMDAwMDAwLTAwMDAtMDAwMC02NmYzLTMzMzJlY2E3ZWE4MSIsInRpZCI6IjkxMjIwNDBkLTZjNjctNGM1Yi1iMTEyLTM2YTMwNGI2NmRhZCIsIm5vbmNlIjoiMTIzNTIzIiwiYWlvIjoiRGYyVVZYTDFpeCFsTUNXTVNPSkJjRmF0emNHZnZGR2hqS3Y4cTVnMHg3MzJkUjVNQjVCaXN2R1FPN1lXQnlqZDhpUURMcSFlR2JJRGFreXA1bW5PcmNkcUhlWVNubHRlcFFtUnA2QUlaOGpZIn0.1AFWW-Ck5nROwSlltm7GzZvDwUkqvhSQpm55TQsmVo9Y59cLhRXpvB8n-55HCr9Z6G_31_UbeUkoz612I2j_Sm9FFShSDDjoaLQr54CreGIJvjtmS3EkK9a7SJBbcpL1MpUtlfygow39tFjY7EVNW9plWUvRrTgVk7lYLprvfzw-CIqw3gHC-T7IK_m_xkr08INERBtaecwhTeN4chPC4W3jdmw_lIxzC48YoQ0dB1L9-ImX98Egypfrlbm0IBL5spFzL6JDZIRRJOu8vecJvj1mq-IUhGt0MacxX8jdxYLP-KUu2d9MbNKpCKJuZ7p8gwTL5B7NlUdh_dmSviPWrw

Просмотрите этот пример маркера версии 2.0 в jwt.ms.

Время существования маркера

По умолчанию маркер идентификатора действителен в течение одного часа, после чего клиент должен получить новый маркер идентификатора.

Вы можете настроить время существования маркера идентификатора, чтобы управлять тем, как часто срок действия клиентского приложения истекает сеанс приложения, и как часто пользователю требуется выполнить проверку подлинности повторно или интерактивно. Дополнительные сведения см. в статье о настройке времени существования маркеров.

Проверка маркеров

Чтобы проверить маркер идентификатора, клиент может проверка, был ли маркер изменен. Он также может проверить подлинность издателя, отправившего маркер. Так как маркеры идентификаторов всегда являются маркером JWT, многие библиотеки существуют для проверки этих маркеров, следует использовать одну из этих библиотек, а не самостоятельно. Только конфиденциальные клиенты должны проверять маркеры идентификатора. Дополнительные сведения см. в разделе "Безопасные приложения и API", проверяя утверждения.

Общедоступным приложениям (это код, выполняющийся полностью на устройстве или в сети, которые вы не контролируете, например в браузере или в домашней сети пользователя) нет смысла проверять маркер идентификатора. В этом случае злоумышленник может перехватывать и изменять ключи, используемые для проверки маркера.

Следующие утверждения JWT должны быть проверены в маркере идентификатора после проверки подписи маркера. Библиотека проверки маркеров может также проверить следующие утверждения:

  • Метки времени. Метки времени iat, nbf, и exp следует соответственно выполнить до или после текущего момента времени.
  • Аудитория. Утверждение aud должно соответствовать идентификатору вашего приложения.
  • Nonce: nonce утверждение в полезных данных должно соответствовать параметру nonce, передаваемому /authorize в конечную точку во время первоначального запроса.

См. также

Следующие шаги

  • Просмотрите поток OpenID Connect, который определяет протоколы, выдающие токен ИД.