Microsoft ID 플랫폼의 ID 토큰

권한 부여 서버는 사용자에 대한 정보를 전달하는 클레임을 포함하는 ID 토큰을 발급합니다. 액세스 토큰 대신 또는 함께 전송할 수 있습니다. ID 토큰의 정보를 통해 클라이언트는 사용자가 자신이 클레임하는 사용자인지 확인할 수 있습니다.

타사 애플리케이션은 ID 토큰을 이해하기 위한 것입니다. ID 토큰은 권한 부여 목적으로 사용되어서는 안 됩니다. 액세스 토큰은 권한 부여에 사용됩니다. ID 토큰이 제공하는 클레임은 데이터베이스의 키로 애플리케이션 내부 UX에 사용할 수 있으며 클라이언트 애플리케이션에 대한 액세스를 제공합니다. ID 토큰에 사용되는 클레임에 대한 자세한 내용은 ID 토큰 클레임 참조를 확인합니다. 클레임 기반 권한 부여에 대한 자세한 내용은 클레임의 유효성을 검사하여 애플리케이션 및 API 보안를 참조하세요.

토큰 형식

Microsoft ID 플랫폼에서는 v1.0과 v2.0이라는 두 가지 버전의 ID 토큰을 사용할 수 있습니다. 이러한 버전은 토큰에 있는 클레임을 결정합니다. V1.0 및 v2.0 ID 토큰은 전달되는 정보의 양에 차이가 있습니다. 이 버전은 요청된 위치의 엔드포인트를 기준으로 합니다. 새로운 애플리케이션은 v2.0을 사용해야 합니다.

  • v1.0: https://login.microsoftonline.com/common/oauth2/authorize
  • v2.0: https://login.microsoftonline.com/common/oauth2/v2.0/authorize

샘플 v1.0 ID 토큰

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

jwt.ms에서 이 v1.0 샘플 토큰을 확인합니다.

샘플 v2.0 ID 토큰

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

jwt.ms에서 이 v2.0 샘플 토큰을 확인합니다.

토큰 수명

기본값으로 ID 토큰은 1시간 동안 유효합니다. 1시간 후 클라이언트는 새 ID 토큰을 획득해야 합니다.

ID 토큰의 수명을 조정하여 클라이언트 애플리케이션이 애플리케이션 세션을 만료하는 빈도 및 사용자에게 자동으로 또는 대화형으로 다시 인증하도록 요구하는 빈도를 제어할 수 있습니다. 자세한 내용은 구성 가능한 토큰 수명을 참조하세요.

토큰 유효성 검사

ID 토큰의 유효성을 검사하기 위해 클라이언트는 토큰이 변조되었는지 여부의 유효성을 검사할 수 있습니다. 발급자의 유효성을 검사하여 올바른 발급자가 토큰을 다시 보냈는지 확인할 수도 있습니다. ID 토큰은 항상 JWT 토큰이므로 이러한 토큰의 유효성을 검사하는 많은 라이브러리가 있습니다. 직접 수행하기보다는 이러한 라이브러리 중 하나를 사용해야 합니다. 기밀 클라이언트만 ID 토큰의 유효성을 검사해야 합니다. 자세한 내용은 클레임 유효성 검사를 통한 애플리케이션 및 API 보안을 참조하세요.

공용 애플리케이션(사용자의 브라우저 또는 홈 네트워크처럼 사용자가 제어하지 않는 디바이스 또는 네트워크에서 실행되는 코드)에서 ID 토큰 유효성을 검사하는 것은 비효율적입니다. 이 경우 악의적인 사용자가 토큰 유효성 검사에 사용되는 키를 가로채서 편집할 수 있습니다.

토큰에서 서명의 유효성을 검사한 후에는 ID 토큰에서 다음 JWT 클레임의 유효성을 검사 해야 합니다. 토큰 유효성 검사 라이브러리는 다음 클레임도 유효성 검사할 수 있습니다.

  • 타임스탬프: iat, nbfexp 타임스탬프는 모두 적절히 현재 시간 이전이거나 이후여야 합니다.
  • 대상: aud 클레임은 애플리케이션의 앱 ID와 일치해야 합니다.
  • Nonce: 페이로드의 nonce 클레임은 초기 요청 중에 /authorize 엔드포인트에 전달된 Nonce 매개 변수와 일치해야 합니다.

참고 항목

다음 단계

  • ID 토큰을 내보내는 프로토콜을 정의하는 OpenID Connect 흐름을 검토합니다.