토큰 및 클레임 개요

중앙 집중식 ID 공급자는 기업 네트워크에서 반드시 로그인할 필요가 없는 전 세계 사용자가 있는 앱에 특히 유용합니다. Microsoft ID 플랫폼은 사용자를 인증하며 액세스 토큰, 새로 고침 토큰 및 ID 토큰 등의 보안 토큰을 제공합니다. 보안 토큰을 사용하면 클라이언트 애플리케이션이 리소스 서버에서 보호되는 리소스에 액세스할 수 있습니다.

  • 액세스 토큰 - 액세스 토큰은 OAuth 2.0 흐름의 일환으로 권한 부여 서버를 통해 발급되는 보안 토큰입니다. 토큰에 사용할 사용자 및 리소스에 대한 정보를 포함합니다. 이 정보를 사용하여 웹 API 및 기타 보호되는 리소스에 액세스할 수 있습니다. 리소스는 클라이언트 애플리케이션에 대한 액세스 권한을 부여하기 위해 액세스 토큰의 유효성을 검사합니다. 자세한 내용은 Microsoft ID 플랫폼의 액세스 토큰을 참조하세요.
  • 새로 고침 토큰 - 액세스 토큰은 단기간 동안에만 유효하기 때문에 권한 부여 서버가 액세스 토큰을 발급하는 동시에 새로 고침 토큰을 발급하는 경우도 있습니다. 클라이언트 애플리케이션은 필요한 경우 새 액세스 토큰을 이 새로 고침 토큰으로 교환할 수 있습니다. 자세한 내용은 Microsoft ID 플랫폼의 토큰 새로 고침을 참조하세요.
  • ID 토큰 - ID 토큰은 OpenID Connect 흐름의 일환으로 클라이언트 애플리케이션에 전송됩니다. 액세스 토큰 대신 또는 함께 전송할 수 있습니다. ID 토큰은 클라이언트에서 사용자를 인증하는 데 사용됩니다. Microsoft ID 플랫폼에서 ID 토큰을 발급하는 방법에 대해 자세히 알아보려면 Microsoft ID 플랫폼의 ID 토큰을 참조하세요.

많은 엔터프라이즈 애플리케이션이 SAML을 사용하여 사용자를 인증합니다. SAML 어설션에 대한 자세한 내용은 SAML 토큰 참조를 확인합니다.

토큰 유효성 검사

이는 토큰이 생성된 애플리케이션, 사용자가 로그인한 웹앱 또는 토큰의 유효성을 검사하기 위해 호출되는 웹 API에 따라 결정됩니다. 권한 부여 서버는 프라이빗 키로 토큰에 서명합니다. 권한 부여 서버는 해당하는 공개 키를 게시합니다. 토큰의 유효성을 검사하기 위해 앱은 권한 부여 서버 공개 키를 사용하여 서명을 확인하고 프라이빗 키를 사용하여 서명을 만들었는지 확인합니다. 자세한 내용은 클레임 문서의 유효성을 검사하여 보안 애플리케이션 및 API를 검사.

가능한 경우 지원되는 MSAL(Microsoft 인증 라이브러리) 을 사용하는 것이 좋습니다. 이렇게 하면 토큰 획득, 새로 고침 및 유효성 검사가 구현됩니다. 또한 테넌트의 OpenID 잘 알려진 검색 문서를 사용하여 테넌트 설정 및 키의 표준 규격 검색을 구현합니다. MSAL은 .NET, JavaScript, Java, Python, Android 및 iOS를 비롯한 다양한 애플리케이션 아키텍처 및 플랫폼을 지원합니다.

토큰은 제한된 시간 동안만 유효하므로 권한 부여 서버는 종종 한 쌍의 토큰을 제공합니다. 애플리케이션 또는 보호된 리소스에 액세스하는 액세스 토큰이 제공됩니다. 액세스 토큰이 만료될 때 액세스 토큰을 새로 고치는 데 사용되는 새로 고침 토큰이 제공됩니다.

액세스 토큰은 웹 API에 Authorization 헤더의 전달자 토큰으로 전달됩니다. 앱은 권한 부여 서버에 새로 고침 토큰을 제공할 수 있습니다. 앱에 대한 사용자 액세스가 철회되지 않은 경우 새 액세스 토큰과 새 새로 고침 토큰을 받습니다. 권한 부여 서버가 새로 고침 토큰을 받으면 사용자에게 여전히 권한이 부여된 경우에만 다른 액세스 토큰을 발급합니다.

JSON Web Token 및 클레임

Microsoft ID 플랫폼은 클레임을 포함하는 JWT(JSON Web Token)로 보안 토큰을 구현합니다. JWT는 보안 토큰으로 사용되므로 이러한 형식의 인증을 JWT 인증이라고도 합니다.

클레임은 클라이언트 애플리케이션과 같은 한 엔터티 또는 리소스 소유자와 같은 다른 엔터티에 대한 어설션을 제공합니다. 클레임은 JWT 클레임 또는 JSON Web Token 클레임이라고 할 수도 있습니다.

클레임은 토큰 주체에 대한 팩트를 릴레이하는 이름 또는 값 쌍입니다. 예를 들어, 클레임에는 권한 부여 서버가 인증한 보안 주체에 대한 팩트가 포함될 수 있습니다. 특정 토큰에 있는 클레임은 토큰 유형, 주체를 인증하는 데 사용되는 자격 증명 유형 및 애플리케이션 구성과 같은 다양한 사항에 따라 달라 집니다.

애플리케이션은 다음과 같은 다양한 작업에 클레임을 사용할 수 있습니다.

  • 토큰 유효성 검사
  • 토큰 주체의 테넌트를 식별합니다.
  • 사용자 정보 표시
  • 주체의 권한 부여 확인

클레임은 다음 형식의 정보를 제공하는 키-값 쌍으로 구성됩니다.

  • 토큰을 생성한 보안 토큰 서버
  • 토큰이 생성된 날짜
  • 제목(사용자와 비슷하지만 디먼은 아님)
  • 토큰이 생성된 앱인 대상
  • 토큰을 요청한 앱(클라이언트)

토큰 엔드포인트 및 발급자

Microsoft Entra ID는 내부 사용을 위한 인력 구성과 직원 및 비즈니스 게스트를 관리하는 직원 구성, 제한된 외부 연결 디렉터리에서 소비자와 파트너를 격리하기 위해 최적화된 고객 구성의 두 가지 테넌트 구성 을 지원합니다. 기본 ID 서비스는 테넌트 구성에 대해 동일하지만 외부 테넌트에 대한 로그인 기본 및 토큰 발급 기관은 다릅니다. 이를 통해 애플리케이션은 필요한 경우 인력 및 외부 ID 워크플로를 분리할 수 있습니다.

Microsoft Entra 직원 테넌트는 sts.windows.net 발급한 토큰을 사용하여 login.microsoftonline.com 인증합니다. 직원 테넌트 토큰은 일반적으로 기본 트러스트 관계가 이러한 상호 운용성을 허용하는 한 테넌트 및 다중 테넌트 애플리케이션 간에 교환할 수 있습니다. Microsoft Entra 외부 테넌트는 {tenantname}.ciamlogin.com 형식의 테넌트 엔드포인트를 사용합니다. 토큰을 올바르게 받고 유효성을 검사하려면 외부 테넌트에 등록된 애플리케이션은 이러한 분리를 알고 있어야 합니다.

모든 Microsoft Entra 테넌트는 표준 규격의 잘 알려진 메타데이터를 게시합니다. 이 문서에는 발급자 이름, 인증 및 권한 부여 엔드포인트, 지원되는 범위 및 클레임에 대한 정보가 포함되어 있습니다. 외부 테넌트에서 문서는 https://{tenantname}.ciamlogin.com/{tenantid}/v2.0/.well-known/openid-configuration에서 공개적으로 사용할 수 있습니다. 이 엔드포인트는 발급자 값 https://{tenantid}.ciamlogin.com/{tenantid}/v2.0을 반환합니다.

인증 흐름 및 인증 코드

클라이언트를 구축하는 방법에 따라 Microsoft ID 플랫폼에서 지원되는 인증 흐름 중 하나 이상을 사용할 수 있습니다. 지원되는 흐름은 다양한 토큰과 인증 코드를 생성할 수 있으며 이를 작동하려면 다양한 토큰이 필요합니다. 다음 표에서는 개요를 제공합니다.

Flow 필요 ID 토큰 액세스 토큰 새로 고침 토큰 인증 코드
인증 코드 흐름 x x x x
암시적 흐름 x x
하이브리드 OIDC 흐름 x x
새로 고침 토큰 상환 새로 고침 토큰 x x x
On-Behalf-Of 흐름 액세스 토큰 x x x
클라이언트 자격 증명 x(앱 전용)

암시적 흐름을 사용하여 발급된 토큰은 URL을 사용하여 브라우저에 다시 전달되기 때문에 길이 제한 사항이 있습니다. 여기서 response_modequery 또는 fragment입니다. 일부 브라우저는 브라우저 표시줄에 배치할 수 있는 URL의 크기에 제한이 있으며 너무 길면 실패할 수 있습니다. 따라서 이러한 토큰에는 groups 또는 wids 클레임이 없습니다.

참고 항목

다음 단계