フェデレーション メタデータ
Microsoft Entra ID は、Microsoft Entra ID が発行するセキュリティ トークンを受け入れるように構成されているサービスのフェデレーション メタデータ ドキュメントを発行します。 フェデレーション メタデータ ドキュメントの形式は、「Web Services Federation Language (WS-Federation) Version 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
)。 aaaabbbb-0000-cccc-1111-dddd2222eeee
など、ドメインの変更できないテナント ID。
テナント独立のエンドポイントの場合、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 によって発行されたトークンを使うサービスに必要な情報を提供します。
EntityDescriptor
要素は EntityID
属性を含みます。 EntityID
属性の値は発行者、つまり、トークンを発行した Security Token Service (STS) を表します。 トークンを受信したときに、発行者を検証することが重要です。
次のメタデータは、EntityID
要素を含む、サンプルのテナント固有の EntityDescriptor
要素を示しています。
<EntityDescriptor
xmlns="urn:oasis:names:tc:SAML:2.0:metadata"
ID="_00aa00aa-bb11-cc22-dd33-44ee44ee44ee"
entityID="https://sts.windows.net/00aa00aa-bb11-cc22-dd33-44ee44ee44ee/">
テナント独立のエンドポイントのテナント ID を自分のテナント ID に置き換えて、テナント固有の EntityID
値を作成することができます。 結果の値は、トークンの発行者と同じになります。 この戦略では、マルチテナント アプリケーションを使用して特定のテナントの発行者を検証できます。
次のメタデータは、テナント独立の EntityID
要素のサンプルを示します。 なお、 {tenant}
はリテラルであり、プレースホルダーではないことに注意してください。
<EntityDescriptor
xmlns="urn:oasis:names:tc:SAML:2.0:metadata"
ID="="_aaaabbbb-0000-cccc-1111-dddd2222eeee"
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>
aB1cD2eF-3gH4i...J5kL6-mN7oP8qR=
</X509Certificate>
</X509Data>
</KeyInfo>
</KeyDescriptor>
KeyDescriptor
要素は、フェデレーション メタデータ ドキュメントでは、WS-Federation 固有のセクションと SAML 固有のセクションという 2 つの場所にあります。 両方のセクションで発行された証明書は同じになります。
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 プロトコルで Microsoft Entra ID がシングル サインインとシングル サインアウトに使う 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 2.0 プロトコルで Microsoft Entra ID がシングル サインインとシングル サインアウトに使う URL が含まれています。 これらのエンドポイントは、 IDPSSODescriptor
要素にあります。
サインイン URL とサインアウト URL は、SingleSignOnService
要素と SingleLogoutService
要素にあります。
次のメタデータは、テナント固有のエンドポイントに対するサンプルの 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>