다음을 통해 공유


Microsoft ID 플랫폼의 ID 토큰

ID 토큰은 인증 증명 역할을 하는 보안 토큰의 유형으로, 사용자가 성공적으로 인증되었는지 확인합니다. ID 토큰의 정보를 통해 클라이언트는 회의에서 이름 태그와 유사하게 사용자가 자신이 주장하는 사람인지 확인할 수 있습니다. 권한 부여 서버는 사용자에 대한 정보를 전달하는 클레임을 포함하는 ID 토큰을 발급합니다. 액세스 토큰과 함께 또는 액세스 토큰 대신 보낼 수 있으며 항상 JWT(JSON 웹 토큰) 형식입니다.

ID 토큰은 권한 부여 증명 역할을 하는 액세스 토큰과 다릅니다. 기밀 클라이언트는 ID 토큰의 유효성을 검사해야 합니다. ID 토큰을 사용하여 API를 호출하면 안 됩니다.

타사 애플리케이션은 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 매개 변수와 일치해야 합니다.