페더레이션 메타데이터

Microsoft Entra ID는 Microsoft Entra ID에서 발급하는 보안 토큰을 수락하도록 구성된 서비스에 대한 페더레이션 메타데이터 문서를 게시합니다. 페더레이션 메타데이터 문서 형식은 Web Services Federation Language(WS-Federation) 버전 1.2에서 설명하며, OASIS SAML(Security Assertion Markup Language) v2.0의 메타데이터를 확장합니다.

테넌트별 및 테넌트에 독립적인 메타데이터 엔드포인트

Microsoft Entra ID는 테넌트 관련 엔드포인트와 테넌트에 독립적인 엔드포인트를 게시합니다.

테넌트별 엔드포인트는 특정 테넌트에 대해 설계되었습니다. 테넌트별 페더레이션 메타데이터에는 테넌트별 발급자 및 엔드포인트 정보를 포함하는 테넌트에 관한 정보가 포함됩니다. 테넌트별 엔드포인트를 사용하는 단일 테넌트에 대한 액세스를 제한하는 애플리케이션입니다.

테넌트에 독립적인 엔드포인트는 모든 Microsoft Entra 테넌트에 공통적인 정보를 제공합니다. 이 정보는 login.microsoftonline.com 에서 호스트되는 테넌트에 적용되며 테넌트 간에 공유됩니다. 테넌트 독립적 엔드포인트는 특정 테넌트와 연결되어있지 않으므로 다중 테넌트 애플리케이션에 좋습니다.

페더레이션 메타데이터 엔드포인트

Microsoft Entra ID는 https://login.microsoftonline.com/<TenantDomainName>/FederationMetadata/2007-06/FederationMetadata.xml에 페더레이션 메타데이터를 게시합니다.

테넌트별 엔드포인트의 경우, TenantDomainName은(는) 다음 유형 중 하나가 될 수 있습니다.

  • Microsoft Entra 테넌트의 등록된 도메인 이름(예: contoso.onmicrosoft.com).
  • 도메인의 변경할 수 없는 ID, 예: aaaabbbb-0000-cccc-1111-dddd2222eeee.

테넌트에 독립적인 엔드포인트의 경우 TenantDomainName은(는) common입니다. 이 문서에는 login.microsoftonline.com에서 호스트되는 모든 Microsoft Entra 테넌트에 공통적인 페더레이션 메타데이터 요소만 나열되어 있습니다.

예를 들어, 테넌트별 엔드포인트는 https://login.microsoftonline.com/contoso.onmicrosoft.com/FederationMetadata/2007-06/FederationMetadata.xml일 수 있습니다. 테넌트 독립적 엔드포인트는 https://login.microsoftonline.com/common/FederationMetadata/2007-06/FederationMetadata.xml입니다. 브라우저에서 이 URL을 입력하여 페더레이션 메타데이터 문서를 볼 수 있습니다.

페더레이션 메타데이터의 내용

다음 섹션에서는 Microsoft Entra ID에서 발급한 토큰을 사용하는 서비스에 필요한 정보를 제공합니다.

엔터티 ID

EntityDescriptor 요소는 EntityID 특성을 포함하고 있습니다. EntityID 특성의 값은 발급자, 즉, 토큰을 발행한 보안 토큰 서비스(STS)를 나타냅니다. 토큰을 받을 때 발급자 유효성을 검사해야 합니다.

다음 메타데이터는 EntityID 요소가 있는 샘플 테넌트별 EntityDescriptor 요소를 보여줍니다.

<EntityDescriptor
xmlns="urn:oasis:names:tc:SAML:2.0:metadata"
ID="_00aa00aa-bb11-cc22-dd33-44ee44ee44ee"
entityID="https://sts.windows.net/11bb11bb-cc22-dd33-ee44-55ff55ff55ff/">

테넌트 독립적 엔드포인트의 테넌트 ID를 사용자의 테넌트 ID로 바꾸어 테넌트별 EntityID 값을 만들 수 있습니다. 결과 값은 토큰 발급자와 동일합니다. 이 전략을 통해 다중 테넌트 애플리케이션이 지정된 테넌트에 대한 발급자의 유효성을 검사할 수 있습니다.

다음 메타데이터는 샘플 테넌트 독립적 EntityID 요소를 보여줍니다. {tenant} 는 자리 표시자가 아니라 문자 그대로의 의미를 나타냅니다.

<EntityDescriptor
xmlns="urn:oasis:names:tc:SAML:2.0:metadata"
ID="="_11bb11bb-cc22-dd33-ee44-55ff55ff55ff"
entityID="https://sts.windows.net/{tenant}/">

토큰 서명 인증서

서비스가 Microsoft Entra 테넌트에서 발급한 토큰을 수신하면 페더레이션 메타데이터 문서에 게시된 서명 키를 사용하여 토큰 서명의 유효성을 검사해야 합니다. 페더레이션 메타데이터는 테넌트를 토큰 서명에 사용하는 인증서의 공개 부분을 포함합니다. 인증서 원시 바이트는 KeyDescriptor 요소에 표시됩니다. 토큰 서명 인증서는 use 특성의 값이 signing인 경우의 서명에만 유효합니다.

Microsoft Entra ID가 게시한 페더레이션 메타데이터 문서에는 Microsoft Entra ID가 서명 인증서 업데이트를 준비하는 경우와 같이 여러 서명 키가 있을 수 있습니다. 페더레이션 메타데이터 문서가 둘 이상의 인증서를 포함하는 경우, 토큰의 유효성을 검사하는 서비스는 문서에서 모든 인증서를 지원해야 합니다.

다음 메타데이터는 서명 키가 있는 샘플 KeyDescriptor 요소를 보여줍니다.

<KeyDescriptor use="signing">
<KeyInfo xmlns="https://www.w3.org/2000/09/xmldsig#">
<X509Data>
<X509Certificate>
MIIDPjCCAiqgAwIBAgIQVWmXY/+9RqFA/OG9kFulHDAJBgUrDgMCHQUAMC0xKzApBgNVBAMTImFjY291bnRzLmFjY2Vzc2NvbnRyb2wud2luZG93cy5uZXQwHhcNMTIwNjA3MDcwMDAwWhcNMTQwNjA3MDcwMDAwWjAtMSswKQYDVQQDEyJhY2NvdW50cy5hY2Nlc3Njb250cm9sLndpbmRvd3MubmV0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArCz8Sn3GGXmikH2MdTeGY1D711EORX/lVXpr+ecGgqfUWF8MPB07XkYuJ54DAuYT318+2XrzMjOtqkT94VkXmxv6dFGhG8YZ8vNMPd4tdj9c0lpvWQdqXtL1TlFRpD/P6UMEigfN0c9oWDg9U7Ilymgei0UXtf1gtcQbc5sSQU0S4vr9YJp2gLFIGK11Iqg4XSGdcI0QWLLkkC6cBukhVnd6BCYbLjTYy3fNs4DzNdemJlxGl8sLexFytBF6YApvSdus3nFXaMCtBGx16HzkK9ne3lobAwL2o79bP4imEGqg+ibvyNmbrwFGnQrBc1jTF9LyQX9q+louxVfHs6ZiVwIDAQABo2IwYDBeBgNVHQEEVzBVgBCxDDsLd8xkfOLKm4Q/SzjtoS8wLTErMCkGA1UEAxMiYWNjb3VudHMuYWNjZXNzY29udHJvbC53aW5kb3dzLm5ldIIQVWmXY/+9RqFA/OG9kFulHDAJBgUrDgMCHQUAA4IBAQAkJtxxm/ErgySlNk69+1odTMP8Oy6L0H17z7XGG3w4TqvTUSWaxD4hSFJ0e7mHLQLQD7oV/erACXwSZn2pMoZ89MBDjOMQA+e6QzGB7jmSzPTNmQgMLA8fWCfqPrz6zgH+1F1gNp8hJY57kfeVPBiyjuBmlTEBsBlzolY9dd/55qqfQk6cgSeCbHCy/RU/iep0+UsRMlSgPNNmqhj5gmN2AFVCN96zF694LwuPae5CeR2ZcVknexOWHYjFM0MgUSw0ubnGl0h9AJgGyhvNGcjQqu9vd1xkupFgaN+f7P3p3EVN5csBg5H94jEcQZT7EKeTiZ6bTrpDAnrr8tDCy8ng
</X509Certificate>
</X509Data>
</KeyInfo>
</KeyDescriptor>

KeyDescriptor 요소는 페더레이션 메타데이터 문서에서 WS-Federation 관련 섹션 및 SAML 관련 섹션의 두 곳에 표시됩니다. 두 섹션 모두에서 게시된 인증서는 동일해야 합니다.

WS-Federation 관련 섹션에서 WS-Federation 메타데이터 판독기는 SecurityTokenServiceType 형식을 가진 RoleDescriptor 요소에서 인증서를 읽습니다.

다음 메타데이터는 샘플 RoleDescriptor 요소를 보여줍니다.

<RoleDescriptor xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xmlns:fed="https://docs.oasis-open.org/wsfed/federation/200706" xsi:type="fed:SecurityTokenServiceType" protocolSupportEnumeration="https://docs.oasis-open.org/wsfed/federation/200706">

SAML 관련 섹션에서 WS-Federation 메타데이터 판독기는 IDPSSODescriptor 요소에서 인증서를 읽습니다.

다음 메타데이터는 샘플 IDPSSODescriptor 요소를 보여줍니다.

<IDPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">

테넌트 관련 및 테넌트 독립적 인증서의 형식에는 차이가 없습니다.

WS-Federation 엔드포인트 URL

Microsoft Entra ID가 WS-Federation 프로토콜의 단일 로그인 및 단일 로그아웃에 사용하는 URL이 페더레이션 메타데이터에 포함되어 있습니다. 이 엔드포인트가 PassiveRequestorEndpoint 요소에 나타납니다.

다음 메타데이터는 테넌트별 엔드포인트에 대한 샘플 PassiveRequestorEndpoint 요소를 보여줍니다.

<fed:PassiveRequestorEndpoint>
<EndpointReference xmlns="https://www.w3.org/2005/08/addressing">
<Address>
https://login.microsoftonline.com/aaaabbbb-0000-cccc-1111-dddd2222eeee/wsfed
</Address>
</EndpointReference>
</fed:PassiveRequestorEndpoint>

테넌트 독립적 엔드포인트의 경우, 다음 예제와 같이 WS-Federation URL은 WS-Federation 엔드포인트에 나타납니다.

<fed:PassiveRequestorEndpoint>
<EndpointReference xmlns="https://www.w3.org/2005/08/addressing">
<Address>
https://login.microsoftonline.com/common/wsfed
</Address>
</EndpointReference>
</fed:PassiveRequestorEndpoint>

SAML 프로토콜 엔드포인트 URL

Microsoft Entra ID가 SAML 2.0 프로토콜의 단일 로그인 및 단일 로그아웃에 사용하는 URL이 페더레이션 메타데이터에 포함되어 있습니다. 이 엔드포인트는 IDPSSODescriptor 요소에 나타납니다.

로그인 및 로그아웃 URL은 SingleSignOnServiceSingleLogoutService 요소에 나타납니다.

다음 메타데이터는 테넌트별 엔드포인트에 대한 샘플 PassiveResistorEndpoint 를 보여줍니다.

<IDPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
…
    <SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://login.microsoftonline.com/contoso.onmicrosoft.com/saml2" />
    <SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://login.microsoftonline.com/contoso.onmicrosoft.com /saml2" />
  </IDPSSODescriptor>

마찬가지로 다음 샘플과 같이 일반 SAML 2.0 프로토콜 엔드포인트에 대한 엔드포인트는 테넌트 독립적 페더레이션 메타데이터에 게시됩니다.

<IDPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
…
    <SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://login.microsoftonline.com/common/saml2" />
    <SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://login.microsoftonline.com/common/saml2" />
  </IDPSSODescriptor>