Azure AD とのフェデレーションに使用する複数ドメインのサポートMultiple Domain Support for Federating with Azure AD

ここでは、Office 365 または Azure AD のドメインとのフェデレーション時に、複数のトップレベル ドメインとサブドメインを使用する方法について説明します。The following documentation provides guidance on how to use multiple top-level domains and sub-domains when federating with Office 365 or Azure AD domains.

複数のトップレベル ドメインのサポートMultiple top-level domain support

複数のトップレベル ドメインと Azure AD のフェデレーションを行うには、単一のトップレベル ドメインを使用するフェデレーションでは行う必要のない構成を、いくつか実施する必要があります。Federating multiple, top-level domains with Azure AD requires some additional configuration that is not required when federating with one top-level domain.

単一のドメインと Azure AD のフェデレーションを行う場合は、Azure でそのドメインに関する複数のプロパティが設定されます。When a domain is federated with Azure AD, several properties are set on the domain in Azure. 重要なプロパティの 1 つは IssuerUri です。One important one is IssuerUri. これは、トークンが関連付けられているドメインを識別するために Azure AD で使われる URI です。This is a URI that is used by Azure AD to identify the domain that the token is associated with. この URI は解決される必要はありませんが、有効な URI である必要があります。The URI doesn’t need to resolve to anything but it must be a valid URI. 既定では、Azure AD により、このプロパティにオンプレミス AD FS 構成内のフェデレーション サービス識別子の値が設定されます。By default, Azure AD sets this to the value of the federation service identifier in your on-premises AD FS configuration.

注意

フェデレーション サービス識別子は、フェデレーション サービスを一意に識別する URI です。The federation service identifier is a URI that uniquely identifies a federation service. フェデレーション サービスは、セキュリティ トークン サービスとして機能する AD FS のインスタンスです。The federation service is an instance of AD FS that functions as the security token service.

PowerShell コマンド Get-MsolDomainFederationSettings -DomainName <your domain>を使用して、IssuerUri を表示することができます。You can vew IssuerUri by using the PowerShell command Get-MsolDomainFederationSettings -DomainName <your domain>.

Get-MsolDomainFederationSettings

複数のトップレベル ドメインを追加しようとすると、問題が生じます。A problem arises when we want to add more than one top-level domain. たとえば、Azure AD とオンプレミス環境の間でフェデレーションを設定しているとします。For example, let's say you have setup federation between Azure AD and your on-premises environment. このドキュメントでは、bmcontoso.com がその環境です。この状況で、2 番目のトップレベル ドメインとして bmfabrikam.com を追加しました。For this document I am using bmcontoso.com. Now I have added a second, top-level domain, bmfabrikam.com.

ドメイン

bmfabrikam.com ドメインを変換してフェデレーションしようとすると、エラーが発生します。When we attempt to convert our bmfabrikam.com domain to be federated, we receive an error. その原因は、IssuerUri プロパティで複数のドメインに同じ値を設定できないという Azure AD の制約にあります。The reason for this is, Azure AD has a constraint that does not allow the IssuerUri property to have the same value for more than one domain.

Federation error

SupportMultipleDomain パラメーターSupportMultipleDomain Parameter

この問題に対処するには、 -SupportMultipleDomain パラメーターを使用して、別の IssuerUri を追加する必要があります。To workaround this, we need to add a different IssuerUri which can be done by using the -SupportMultipleDomain parameter. このパラメーターは以下のコマンドレットで使用します。This parameter is used with the following cmdlets:

  • New-MsolFederatedDomain
  • Convert-MsolDomaintoFederated
  • Update-MsolFederatedDomain

このパラメーターを使用すると、Azure AD で IssuerUri がドメイン名に基づくように構成されます。This parameter makes Azure AD configure the IssuerUri so that it is based on the name of the domain. ドメイン名は Azure AD 内のディレクトリ間で一意になります。This will be unique across directories in Azure AD. このパラメーターを指定することで、PowerShell コマンドが正常に実行されます。Using the parameter allows the PowerShell command to complete successfully.

Federation error

新しく導入した bmfabrikam.com ドメインの設定は、以下のようになっています。Looking at the settings of our new bmfabrikam.com domain you can see the following:

Federation error

留意点として、 -SupportMultipleDomain は、adfs.bmcontoso.com 上のフェデレーション サービスをポイントするように構成されている他のエンドポイントを変更しません。Note that -SupportMultipleDomain does not change the other endpoints which are still configured to point to our federation service on adfs.bmcontoso.com.

また、 -SupportMultipleDomain を使用すると、AD FS システムが Azure AD 用に発行するトークンに、適切な Issuer (発行者) の値を確実に含めることができます。Another thing that -SupportMultipleDomain does is that it ensures that the AD FS system includes the proper Issuer value in tokens issued for Azure AD. これは、ユーザーの UPN のドメイン部分を取得し、その値を IssuerUri でドメインとして設定することで達成されます (つまり、https://{upn suffix}/adfs/services/trust)。It does this by taking the domain portion of the users UPN and setting this as the domain in the IssuerUri, i.e. https://{upn suffix}/adfs/services/trust.

そのため、Azure AD または Office 365 に対する認証中に、ユーザーのトークンに含まれる IssuerUri 要素を使用して、Azure AD 内のドメインが特定されます。Thus during authentication to Azure AD or Office 365, the IssuerUri element in the user’s token is used to locate the domain in Azure AD. 一致するものが見つからなければ、認証は失敗します。If a match cannot be found the authentication will fail.

たとえば、ユーザーの UPN が bsimon@bmcontoso.com である場合、AD FS が発行するトークンの IssuerUri 要素は http://bmcontoso.com/adfs/services/trust に設定されます。For example, if a user’s UPN is bsimon@bmcontoso.com, the IssuerUri element in the token AD FS issues will be set to http://bmcontoso.com/adfs/services/trust. これは Azure AD の構成と一致し、認証は成功します。This will match the Azure AD configuration, and authentication will succeed.

次の規則は、このロジックを満たすカスタマイズ済みの要求規則です。The following is the customized claim rule that implements this logic:

c:[Type == "http://schemas.xmlsoap.org/claims/UPN"] => issue(Type = "http://schemas.microsoft.com/ws/2008/06/identity/claims/issuerid", Value = regexreplace(c.Value, ".+@(?<domain>.+)", "http://${domain}/adfs/services/trust/"));

重要

新しいドメインを追加する際や既存のドメインを変換する際に -SupportMultipleDomain スイッチを使用するには、あらかじめそれらのドメインをサポートするフェデレーションによる信頼を設定しておく必要があります。In order to use the -SupportMultipleDomain switch when attempting to add new or convert already added domains, you need to have setup your federated trust to support them originally.

AD FS と Azure AD の間の信頼を更新するにはHow to update the trust between AD FS and Azure AD

AD FS と Azure AD インスタンスとの間でフェデレーションによる信頼を設定していない場合は、改めてこの信頼の作成が必要になることがあります。If you did not setup the federated trust between AD FS and your instance of Azure AD, you may need to re-create this trust. というのも、 -SupportMultipleDomain パラメーターを使用せずに設定すると、IssuerUri が既定値で設定されるからです。This is because, when it is originally setup without the -SupportMultipleDomain parameter, the IssuerUri is set with the default value. 下のスクリーンショットでは、IssuerUri に https://adfs.bmcontoso.com/adfs/services/trust が設定されています。In the screenshot below you can see the IssuerUri is set to https://adfs.bmcontoso.com/adfs/services/trust.

ここで、Azure AD ポータルから新しいドメインを正常に追加した後、 Convert-MsolDomaintoFederated -DomainName <your domain>でドメインを変換しようとすると、次のエラーが発生します。So now, if we have successfully added an new domain in the Azure AD portal and then attempt to convert it using Convert-MsolDomaintoFederated -DomainName <your domain>, we get the following error.

Federation error

そこで、 -SupportMultipleDomain スイッチを追加して試してみると、次のエラーが発生します。If you try to add the -SupportMultipleDomain switch we will receive the following error:

Federation error

単純に元のドメインで Update-MsolFederatedDomain -DomainName <your domain> -SupportMultipleDomain を実行してみても、エラーが生じます。Simply trying to run Update-MsolFederatedDomain -DomainName <your domain> -SupportMultipleDomain on the original domain will also result in an error.

Federation error

下記の手順で、もう 1 つのトップレベル ドメインを追加します。Use the steps below to add an additional top-level domain. 既にドメインを 1 つ、 -SupportMultipleDomain パラメーターを使用せずに追加してある場合は、最初に元のドメインを削除して更新します。If you have already added a domain and did not use the -SupportMultipleDomain parameter start with the steps for removing and updating your original domain. トップレベル ドメインをまだ追加していない場合は、Azure AD Connect の PowerShell を使用してドメインを追加することから始めます。If you have not added a top-level domain yet you can start with the steps for adding a domain using PowerShell of Azure AD Connect.

以下の手順で、Microsoft Online の信頼を削除し、元のドメインを更新します。Use the following steps to remove the Microsoft Online trust and update your original domain.

  1. AD FS フェデレーション サーバーで、 AD FS 管理On your AD FS federation server open AD FS Management.
  2. 左側で、[信頼関係][証明書利用者信頼] の順に展開します。On the left, expand Trust Relationships and Relying Party Trusts
  3. 右側で、 [Microsoft Office 365 ID プラットフォーム] エントリを削除します。On the right, delete the Microsoft Office 365 Identity Platform entry. Remove Microsoft OnlineRemove Microsoft Online
  4. Windows PowerShell 用 Azure Active Directory モジュールをインストールしているマシンで、次のコードを実行します: $cred=Get-CredentialOn a machine that has Azure Active Directory Module for Windows PowerShell installed on it run the following: $cred=Get-Credential.
  5. フェデレーションの対象である Azure AD ドメインのグローバル管理者のユーザー名とパスワードを入力します。Enter the username and password of a global administrator for the Azure AD domain you are federating with
  6. PowerShell で、 Connect-MsolService -Credential $credIn PowerShell enter Connect-MsolService -Credential $cred
  7. PowerShell で、 Update-MSOLFederatedDomain -DomainName <Federated Domain Name> -SupportMultipleDomainを実行します。In PowerShell enter Update-MSOLFederatedDomain -DomainName <Federated Domain Name> -SupportMultipleDomain. これは元のドメインに対するコマンドです。This is for the original domain. 上記のドメインを使用するので、次のようになります: Update-MsolFederatedDomain -DomainName bmcontoso.com -SupportMultipleDomainSo using the above domains it would be: Update-MsolFederatedDomain -DomainName bmcontoso.com -SupportMultipleDomain

次の手順で、PowerShell を使用して新しいトップレベル ドメインを追加します。Use the following steps to add the new top-level domain using PowerShell

  1. Windows PowerShell 用 Azure Active Directory モジュールをインストールしているマシンで、次のコードを実行します: $cred=Get-CredentialOn a machine that has Azure Active Directory Module for Windows PowerShell installed on it run the following: $cred=Get-Credential.
  2. フェデレーションの対象である Azure AD ドメインのグローバル管理者のユーザー名とパスワードを入力します。Enter the username and password of a global administrator for the Azure AD domain you are federating with
  3. PowerShell で、 Connect-MsolService -Credential $credIn PowerShell enter Connect-MsolService -Credential $cred
  4. PowerShell で、 New-MsolFederatedDomain –SupportMultipleDomain –DomainNameIn PowerShell enter New-MsolFederatedDomain –SupportMultipleDomain –DomainName

次の手順で、Azure AD Connect を使用して新しいトップレベル ドメインを追加します。Use the following steps to add the new top-level domain using Azure AD Connect.

  1. デスクトップまたは [スタート] メニューから、Azure AD Connect を起動します。Launch Azure AD Connect from the desktop or start menu
  2. [Azure AD ドメインを追加します] を選択します。Add an additional Azure AD domainChoose “Add an additional Azure AD Domain” Add an additional Azure AD domain
  3. Azure AD と Active Directory の資格情報を入力します。Enter your Azure AD and Active Directory credentials
  4. フェデレーションを構成する 2 つ目のドメインを選択します。Select the second domain you wish to configure for federation. Add an additional Azure AD domainAdd an additional Azure AD domain
  5. [インストール] をクリックします。Click Install

新しいトップレベル ドメインの確認Verify the new top-level domain

PowerShell コマンド Get-MsolDomainFederationSettings -DomainName <your domain>を使用して、更新された IssuerUri を確認できます。By using the PowerShell command Get-MsolDomainFederationSettings -DomainName <your domain>you can view the updated IssuerUri. 下のスクリーンショットは、元のドメイン http://bmcontoso.com/adfs/services/trust でフェデレーション設定が更新されたことを示しています。The screenshot below shows the federation settings were updated on our original domain http://bmcontoso.com/adfs/services/trust

Get-MsolDomainFederationSettings

また、新しいドメインの IssuerUri として、https://bmfabrikam.com/adfs/services/trust が設定されています。And the IssuerUri on our new domain has been set to https://bmfabrikam.com/adfs/services/trust

Get-MsolDomainFederationSettings

サブドメインのサポートSupport for Sub-domains

サブドメインの追加では、Azure AD がドメインを処理する方法のために、親の設定を継承します。When you add a sub-domain, because of the way Azure AD handled domains, it will inherit the settings of the parent. つまり、IssuerUri は親に一致させる必要があります。This means that the IssuerUri needs to match the parents.

たとえば、bmcontoso.com を運用している状況で、corp.bmcontoso.com を追加するとします。この場合、corp.bmcontoso.com に属するユーザーの IssuerUri は、http://bmcontoso.com/adfs/services/trust とする必要があります。So lets say for example that I have bmcontoso.com and then add corp.bmcontoso.com. This means that the IssuerUri for a user from corp.bmcontoso.com will need to be http://bmcontoso.com/adfs/services/trust. しかし、上で Azure AD に適用した標準ルールでは、発行者を http://corp.bmcontoso.com/adfs/services/trustHowever the standard rule implemented above for Azure AD, will generate a token with an issuer as http://corp.bmcontoso.com/adfs/services/trust. としてトークンを生成するので、ドメインに必要な値と一致せず、認証に失敗します。which will not match the domain's required value and authentication will fail.

サブドメインのサポートを有効にする方法How To enable support for sub-domains

この問題を回避するには、Microsoft Online 用 AD FS 証明書利用者の信頼を更新する必要があります。In order to work around this the AD FS relying party trust for Microsoft Online needs to be updated. そのためには、カスタム Issuer 値の構築時にユーザーの UPN サフィックスからサブドメインを削除するよう、カスタム要求規則を構成する必要があります。To do this, you must configure a custom claim rule so that it strips off any sub-domains from the user’s UPN suffix when constructing the custom Issuer value.

次の要求で実行します。The following claim will do this:

c:[Type == "http://schemas.xmlsoap.org/claims/UPN"] => issue(Type = "http://schemas.microsoft.com/ws/2008/06/identity/claims/issuerid", Value = regexreplace(c.Value, "^.*@([^.]+\.)*?(?<domain>([^.]+\.?){2})$", "http://${domain}/adfs/services/trust/"));

[!NOTE] 正規表現の最後の数字は、ルート ドメインにある親ドメインの数を設定します。The last number in the regular expression set the how many parent domains there is in your root domain. ここでは bmcontoso.com があるので、2 つの親ドメインが必要です。Here i have bmcontoso.com so two parent domains are necessary. 3 つの親ドメインを保持する (つまり corp.bmcontoso.com) 場合、この数字は 3 になります。If three parent domains were to be kept (i.e.: corp.bmcontoso.com), then the number would have been three. 範囲を指示できますが、常にドメインの最大数と一致させるための突き合わせが行われます。Eventualy a range can be indicated, the match will always be made to match the maximum of domains. "{2,3}" は、2 ~ 3 つのドメインと一致します (つまり、bmfabrikam.com と corp.bmcontoso.com)。"{2,3}" will match two to three domains (i.e.: bmfabrikam.com and corp.bmcontoso.com).

以下の手順に従い、サブドメインをサポートするためのカスタム要求を追加します。Use the following steps to add a custom claim to support sub-domains.

  1. AD FS 管理を開きます。Open AD FS Management
  2. [Microsoft Online RP 信頼] を右クリックして、[要求規則の編集] を選択します。Right click the Microsoft Online RP trust and choose Edit Claim rules
  3. 3 番目の要求規則を選択し、置き換えます。Edit claimSelect the third claim rule, and replace Edit claim
  4. 現在の要求:Replace the current claim:

     c:[Type == "http://schemas.xmlsoap.org/claims/UPN"] => issue(Type = "http://schemas.microsoft.com/ws/2008/06/identity/claims/issuerid", Value = regexreplace(c.Value, ".+@(?<domain>.+)","http://${domain}/adfs/services/trust/"));
    
    with
    
     c:[Type == "http://schemas.xmlsoap.org/claims/UPN"] => issue(Type = "http://schemas.microsoft.com/ws/2008/06/identity/claims/issuerid", Value = regexreplace(c.Value, "^.*@([^.]+\.)*?(?<domain>([^.]+\.?){2})$", "http://${domain}/adfs/services/trust/"));
    

    Replace claim

  5. [OK] をクリックします。Click Ok. [適用] をクリックします。Click Apply. [OK] をクリックします。Click Ok. AD FS 管理を閉じます。Close AD FS Management.