Токены идентификации на платформе удостоверений Майкрософт
Маркеры идентификаторов — это тип маркера безопасности, который служит подтверждением проверки подлинности, убедив, что пользователь успешно прошел проверку подлинности. Сведения в маркерах идентификаторов позволяют клиенту убедиться, что пользователь является пользователем, который он утверждает, как и теги имен на конференции. Сервер авторизации выдает маркеры идентификатора, содержащие утверждения, содержащие сведения о пользователе. Они могут быть отправлены вместе или вместо маркера доступа и всегда являются форматом JWT (JSON Web Token).
Маркеры идентификаторов отличаются от маркеров доступа, которые служат подтверждением авторизации. Конфиденциальные клиенты должны проверять маркеры идентификаторов. Для вызова API не следует использовать маркер идентификатора.
Сторонние приложения предназначены для понимания маркеров идентификаторов. Маркеры идентификаторов не должны использоваться для авторизации. Для авторизации используются маркеры доступа. Утверждения, предоставляемые маркерами идентификаторов, можно использовать для пользовательского интерфейса в приложении, в качестве ключей в базе данных и для обеспечения доступа к клиентскому приложению. Дополнительные сведения о утверждениях, используемых в маркере идентификатора, см. в справочнике по утверждениям маркера идентификатора. Дополнительные сведения об авторизации на основе утверждений см. в разделе "Безопасные приложения и 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
в конечную точку во время первоначального запроса.