Müşterinin AD FS’si ile birleştirmeFederate with a customer's AD FS

Bu makalede, bir çok kiracılı SaaS uygulaması bir müşterinin AD FS'si ile birleştirme için Active Directory Federasyon Hizmetleri (AD FS) aracılığıyla kimlik doğrulaması nasıl destekleyebileceğini açıklanır.This article describes how a multi-tenant SaaS application can support authentication via Active Directory Federation Services (AD FS), in order to federate with a customer's AD FS.

Genel BakışOverview

Azure Active Directory (Azure AD) kullanıcıları Office 365 ve Dynamics CRM Online müşterilere, Azure AD kiracısından oturum yapmayı kolaylaştırır.Azure Active Directory (Azure AD) makes it easy to sign in users from Azure AD tenants, including Office365 and Dynamics CRM Online customers. Ancak ne kullanan müşteriler Active Directory kurumsal bir intranet üzerinde şirket içi?But what about customers who use on-premise Active Directory on a corporate intranet?

Bir seçenek olan Azure AD ile kendi şirket içi AD ile eşitlemek Bu müşteriler için kullanarak Azure AD Connect.One option is for these customers to sync their on-premise AD with Azure AD, using Azure AD Connect. Ancak, bazı müşteriler bu yaklaşım, kurumsal BT ilkesi nedeniyle veya başka nedenlerle kullanamaz olabilir.However, some customers may be unable to use this approach, due to corporate IT policy or other reasons. Bu durumda, başka bir Active Directory Federasyon Hizmetleri (AD FS) ile federasyona eklemek için bir seçenektir.In that case, another option is to federate through Active Directory Federation Services (AD FS).

Bu senaryoyu etkinleştirmek için:To enable this scenario:

  • Müşteri, bir Internet'e yönelik AD FS grubunda olması gerekir.The customer must have an Internet-facing AD FS farm.
  • SaaS sağlayıcısı kendi AD FS grubu dağıtır.The SaaS provider deploys their own AD FS farm.
  • Müşteri ve SaaS sağlayıcısı ayarlamanız gereken federasyon güveni.The customer and the SaaS provider must set up federation trust. Bu el ile yapılan bir işlemdir.This is a manual process.

Güven ilişkisinde üç ana rolü vardır:There are three main roles in the trust relation:

  • Müşterinin AD FS hesap ortağı, müşteriden kullanıcıların kimlik doğrulaması için sorumlu kullanıcının AD ve kullanıcı talepleri güvenlik belirteçleri oluşturma.The customer's AD FS is the account partner, responsible for authenticating users from the customer's AD, and creating security tokens with user claims.

  • SaaS Sağlayıcısı'nın AD FS Kaynak iş ortağı, hesap ortağı güvenir ve kullanıcı taleplerini alır.The SaaS provider's AD FS is the resource partner, which trusts the account partner and receives the user claims.

  • Uygulama, SaaS Sağlayıcısı'nın AD FS'de bağlı olan taraf (RP) olarak yapılandırılır.The application is configured as a relying party (RP) in the SaaS provider's AD FS.

    Federasyon güveni

Not

Bu makalede, Openıd connect kimlik doğrulama protokolü olarak kullandığı varsayılır.In this article, we assume the application uses OpenID connect as the authentication protocol. WS-Federasyon kullanan başka bir seçenektir.Another option is to use WS-Federation.

Openıd Connect için AD FS 2016, Windows Server 2016'da çalışan SaaS sağlayıcısı kullanmanız gerekir.For OpenID Connect, the SaaS provider must use AD FS 2016, running in Windows Server 2016. AD FS 3.0, Openıd Connect desteklemez.AD FS 3.0 does not support OpenID Connect.

ASP.NET Core, WS-Federasyon için kullanıma hazır destek içermez.ASP.NET Core does not include out-of-the-box support for WS-Federation.

ASP.NET 4'te WS-Federasyon kullanan bir örnek için bkz: active-directory-dotnet-webapp-wsfederation örnek.For an example of using WS-Federation with ASP.NET 4, see the active-directory-dotnet-webapp-wsfederation sample.

Kimlik doğrulama akışıAuthentication flow

  1. Kullanıcı "Oturum Aç" tıkladığında, uygulama SaaS sağlayıcısı AD FS'de Openıd Connect uç noktasına yönlendirir.When the user clicks "sign in", the application redirects to an OpenID Connect endpoint on the SaaS provider's AD FS.
  2. Kullanıcı kuruluş kullanıcının adını girer ("alice@corp.contoso.com").The user enters his or her organizational user name ("alice@corp.contoso.com"). AD FS için müşterinin AD FS'si burada kullanıcı kimlik bilgilerini girer, yeniden yönlendirmek için giriş bölgesi bulmayı kullanır.AD FS uses home realm discovery to redirect to the customer's AD FS, where the user enters their credentials.
  3. Müşterinin AD FS'si WF Federasyon (veya SAML) kullanarak, kullanıcı talepleri SaaS sağlayıcısı AD FS'ye gönderir.The customer's AD FS sends user claims to the SaaS provider's AD FS, using WF-Federation (or SAML).
  4. AD FS talep akıştan Openıd Connect'i kullanarak uygulama.Claims flow from AD FS to the app, using OpenID Connect. Bu, WS-Federation Protokolü durumundan gerektirir.This requires a protocol transition from WS-Federation.

SınırlamalarLimitations

Varsayılan olarak, bağlı taraf uygulaması aşağıdaki tabloda gösterilen bir id_token kullanılabilir talepler yalnızca sabit kümesi alır.By default, the relying party application receives only a fixed set of claims available in the id_token, shown in the following table. AD FS 2016 ile Openıd Connect senaryolarda id_token özelleştirebilirsiniz.With AD FS 2016, you can customize the id_token in OpenID Connect scenarios. Daha fazla bilgi için AD FS'de özel kimlik belirteçlerini.For more information, see Custom ID Tokens in AD FS.

İsteClaim AçıklamaDescription
audaud İzleyici.Audience. Uygulama talepleri verilme.The application for which the claims were issued.
AuthenticationInstantauthenticationinstant Kimlik doğrulaması anlık.Authentication instant. Kimlik doğrulama zaman oluştu.The time at which authentication occurred.
c_hashc_hash Kod karma değeri.Code hash value. Bu, belirteç içeriği karmasıdır.This is a hash of the token contents.
expexp Süre sonu.Expiration time. Saat sonra belirteç artık kabul edilmeyecek.The time after which the token will no longer be accepted.
IATiat Çıkışı.Issued at. Belirteci zaman verilmiş saat.The time when the token was issued.
ISSiss Verici.Issuer. Bu talep her zaman kaynak ortağının AD FS değeridir.The value of this claim is always the resource partner's AD FS.
adname Kullanıcı adı.User name. Örnek: john@corp.fabrikam.comExample: john@corp.fabrikam.com
NameIdentifiernameidentifier Ad tanımlayıcısı.Name identifier. Belirteç verildiği varlık adı için tanımlayıcı.The identifier for the name of the entity for which the token was issued.
noncenonce Oturum nonce.Session nonce. Yeniden yürütme saldırıları önlemeye yardımcı olmak için AD FS tarafından oluşturulan benzersiz bir değerdir.A unique value generated by AD FS to help prevent replay attacks.
UPNupn Kullanıcı asıl adı (UPN).User principal name (UPN). Örnek: john@corp.fabrikam.comExample: john@corp.fabrikam.com
pwd_exppwd_exp Parola kullanım süresi.Password expiration period. Kullanıcının parola veya PIN gibi benzer bir kimlik doğrulama gizlilik kadar saniye sayısı.The number of seconds until the user's password or a similar authentication secret, such as a PIN. süresi dolar.expires.

Not

"iss" talep içeren ortak AD FS (genellikle, bu talep SaaS sağlayıcısı Dağıtımcı olarak tanımlayacak).The "iss" claim contains the AD FS of the partner (typically, this claim will identify the SaaS provider as the issuer). Müşterinin AD FS'si tanımlamaz.It does not identify the customer's AD FS. Müşteri'nin etki alanı UPN bir parçası olarak bulabilirsiniz.You can find the customer's domain as part of the UPN.

Bu makalenin geri kalanında, RP (uygulama) ve hesap iş ortağı (müşteri) arasındaki güven ilişkisi kurmak açıklar.The rest of this article describes how to set up the trust relationship between the RP (the app) and the account partner (the customer).

AD FS dağıtımıAD FS deployment

SaaS sağlayıcısı, AD FS şirket içi veya Azure Vm'leri üzerinde dağıtabilirsiniz.The SaaS provider can deploy AD FS either on-premise or on Azure VMs. Aşağıdaki yönergeler, güvenlik ve kullanılabilirlik için önemlidir:For security and availability, the following guidelines are important:

  • En az iki AD FS sunucusu ve AD FS hizmetinin en iyi kullanılabilirlik elde etmek için iki AD FS proxy sunucusu dağıtın.Deploy at least two AD FS servers and two AD FS proxy servers to achieve the best availability of the AD FS service.
  • Etki alanı denetleyicileri ve AD FS sunucuları hiçbir zaman Internet'e doğrudan açılmamalıdır ve bunları doğrudan erişimi olan bir sanal ağda olmalıdır.Domain controllers and AD FS servers should never be exposed directly to the Internet and should be in a virtual network with direct access to them.
  • Web uygulama proxy'si (daha önce AD FS proxy), AD FS sunucularının Internet'e yayımlamak için kullanılmalıdır.Web application proxies (previously AD FS proxies) must be used to publish AD FS servers to the Internet.

Ayarlamak için benzer bir topoloji azure'da sanal ağlar, NSG'ın, azure VM'nin ve kullanılabilirlik kümeleri kullanılmasını gerektirir.To set up a similar topology in Azure requires the use of Virtual networks, NSG’s, azure VM’s and availability sets. Daha fazla ayrıntı için dağıtma Windows Server Active Directory için Azure sanal Makineler'de yönergeleri.For more details, see Guidelines for Deploying Windows Server Active Directory on Azure Virtual Machines.

Openıd Connect kimlik doğrulaması ile AD FS yapılandırmaConfigure OpenID Connect authentication with AD FS

SaaS sağlayıcısı Openıd Connect, AD FS ve uygulama arasında etkinleştirmeniz gerekir.The SaaS provider must enable OpenID Connect between the application and AD FS. Bunu yapmak için AD FS, bir uygulama grubu ekleyin.To do so, add an application group in AD FS. Bu ayrıntılı yönergeleri bulabilirsiniz blog gönderisi, altında "Bir Web uygulaması kurma için Openıd Connect oturum AD FS'de."You can find detailed instructions in this blog post, under " Setting up a Web App for OpenId Connect sign in AD FS."

Ardından, Openıd Connect ara yazılımını yapılandırın.Next, configure the OpenID Connect middleware. Meta veri uç noktası https://domain/adfs/.well-known/openid-configurationburada etki alanı SaaS sağlayıcısı AD FS etki alanı adıdır.The metadata endpoint is https://domain/adfs/.well-known/openid-configuration, where domain is the SaaS provider's AD FS domain.

Genellikle bu diğer Openıd Connect uç noktalar (örneğin, AAD) ile birleştirebilirsiniz.Typically you might combine this with other OpenID Connect endpoints (such as AAD). Kullanıcı doğru kimlik doğrulama uç noktasına gönderilir. böylece, iki farklı oturum açma düğme ya da bunları ayırt etmek için başka bir şekilde gerekir.You'll need two different sign-in buttons or some other way to distinguish them, so that the user is sent to the correct authentication endpoint.

AD FS kaynak ortağı yapılandırınConfigure the AD FS Resource Partner

SaaS sağlayıcısı ADFS bağlanmak isteyen her müşteri için aşağıdakileri yapmanız gerekir:The SaaS provider must do the following for each customer that wants to connect via ADFS:

  1. Bir talep sağlayıcı güveni ekleyin.Add a claims provider trust.
  2. Talep kuralı ekleyin.Add claims rules.
  3. Giriş bölgesi bulmayı sağlar.Enable home-realm discovery.

Daha ayrıntılı adımlar şunlardır.Here are the steps in more detail.

Talep sağlayıcı güveni EkleAdd the claims provider trust

  1. Sunucu Yöneticisi'nde Araçlarıve ardından AD FS Yönetimi.In Server Manager, click Tools, and then select AD FS Management.
  2. Konsol ağacında altında AD FS, sağ tıklayın talep sağlayıcısı güvenleri.In the console tree, under AD FS, right click Claims Provider Trusts. Seçin talep sağlayıcısı güveni.Select Add Claims Provider Trust.
  3. Tıklayın Başlat Sihirbazı'nı başlatın.Click Start to start the wizard.
  4. Seçeneği "içeri aktarma verileri çevrimiçi veya yerel ağda yayımlanan talep sağlayıcısı hakkında" seçin.Select the option "Import data about the claims provider published online or on a local network". Müşterinin Federasyon meta veri uç noktasının URI'sini girin.Enter the URI of the customer's federation metadata endpoint. (Örnek: https://contoso.com/FederationMetadata/2007-06/FederationMetadata.xml.) Bu müşteriden almanız gerekir.(Example: https://contoso.com/FederationMetadata/2007-06/FederationMetadata.xml.) You will need to get this from the customer.
  5. Varsayılan seçenekleri kullanarak Sihirbazı tamamlayın.Complete the wizard using the default options.

Talep kurallarını DüzenleEdit claims rules

  1. Yeni eklenen Talep sağlayıcı güveni sağ tıklatıp seçin talep kurallarını Düzenle.Right-click the newly added claims provider trust, and select Edit Claims Rules.
  2. Tıklayın Kuralı Ekle.Click Add Rule.
  3. "Geçirmek aracılığıyla veya filtre bir gelen talebi" seçip tıklayın sonraki.Select "Pass Through or Filter an Incoming Claim" and click Next. Dönüşüm Talep Kuralı Ekleme SihirbazıAdd Transform Claim Rule Wizard
  4. Kural için bir ad girin.Enter a name for the rule.
  5. "Gelen talep türü altında" seçin UPN.Under "Incoming claim type", select UPN.
  6. "Pass tüm talep değerlerini" seçin.Select "Pass through all claim values". Dönüşüm Talep Kuralı Ekleme SihirbazıAdd Transform Claim Rule Wizard
  7. Son'a tıklayın.Click Finish.
  8. 2-7 arasındaki adımları yineleyin ve belirtin bağlantı talep türü gelen talep türü.Repeat steps 2 - 7, and specify Anchor Claim Type for the incoming claim type.
  9. Tıklayın Tamam Sihirbazı tamamlayın.Click OK to complete the wizard.

Giriş bölgesi bulmayı etkinleştirmeEnable home-realm discovery

Aşağıdaki PowerShell betiğini çalıştırın:Run the following PowerShell script:

Set-ADFSClaimsProviderTrust -TargetName "name" -OrganizationalAccountSuffix @("suffix")

AD (örneğin, "corp.fabrikam.com"), burada "name" Talep sağlayıcı güveni kolay adıdır ve "sonek" Müşteri UPN soneki olan kullanıcının.where "name" is the friendly name of the claims provider trust, and "suffix" is the UPN suffix for the customer's AD (example, "corp.fabrikam.com").

Bu yapılandırmaya sahip son kullanıcılar kuruluş hesabını girebilir ve AD FS karşılık gelen talep sağlayıcıyı otomatik olarak seçer.With this configuration, end users can type in their organizational account, and AD FS automatically selects the corresponding claims provider. Bkz: AD FS oturum açma sayfalarını özelleştirme, "belirli e-posta soneklerini kullanmak için kimlik sağlayıcı yapılandırma" bölümünde.See Customizing the AD FS Sign-in Pages, under the section "Configure Identity Provider to use certain email suffixes".

AD FS hesap ortağı yapılandırınConfigure the AD FS Account Partner

Müşteri aşağıdakileri yapmalısınız:The customer must do the following:

  1. Bir bağlı olan taraf (RP) güveni ekleyin.Add a relying party (RP) trust.
  2. Talep kuralı ekler.Adds claims rules.

RP güveni eklemeAdd the RP trust

  1. Sunucu Yöneticisi'nde Araçlarıve ardından AD FS Yönetimi.In Server Manager, click Tools, and then select AD FS Management.
  2. Konsol ağacında altında AD FS, sağ tıklayın bağlı olan taraf güvenleri.In the console tree, under AD FS, right click Relying Party Trusts. Seçin bağlı olan taraf güveni ekleme.Select Add Relying Party Trust.
  3. Seçin talep kullanan tıklatıp Başlat.Select Claims Aware and click Start.
  4. Üzerinde veri kaynağı Seç sayfasında, "Yerel ağda veya çevrimiçi yayımlanan talep sağlayıcısı hakkında veri al" seçeneğini belirleyin.On the Select Data Source page, select the option "Import data about the claims provider published online or on a local network". SaaS sağlayıcının Federasyon meta veri uç noktasının URI'sini girin.Enter the URI of the SaaS provider's federation metadata endpoint. Bağlı olan taraf güveni Ekle SihirbazıAdd Relying Party Trust Wizard
  5. Üzerinde görünen adı belirt sayfasında, herhangi bir ad girin.On the Specify Display Name page, enter any name.
  6. Üzerinde erişim denetimi ilkesini seçin sayfasında, bir ilkeyi seçin.On the Choose Access Control Policy page, choose a policy. Kuruluştaki herkes izin veya belirli bir güvenlik grubu seçin.You could permit everyone in the organization, or choose a specific security group. Bağlı olan taraf güveni Ekle SihirbazıAdd Relying Party Trust Wizard
  7. Gerekli tüm parametreleri girin ilke kutusu.Enter any parameters required in the Policy box.
  8. Tıklayın sonraki Sihirbazı tamamlayın.Click Next to complete the wizard.

Talep kuralı ekleyinAdd claims rules

  1. Yeni eklenen bağlı olan taraf güvenine sağ tıklayın ve seçin talep verme ilkesini Düzenle.Right-click the newly added relying party trust, and select Edit Claim Issuance Policy.

  2. Tıklayın Kuralı Ekle.Click Add Rule.

  3. "LDAP özniteliklerini talep olarak gönder" seçip tıklayın sonraki.Select "Send LDAP Attributes as Claims" and click Next.

  4. "UPN" gibi bir kuralı için bir ad girin.Enter a name for the rule, such as "UPN".

  5. Altında öznitelik deposuseçin Active Directory.Under Attribute store, select Active Directory. Dönüşüm Talep Kuralı Ekleme SihirbazıAdd Transform Claim Rule Wizard

  6. İçinde LDAP özniteliklerini eşleme bölümü:In the Mapping of LDAP attributes section:

    • Altında LDAP özniteliğiseçin kullanıcı asıl adı.Under LDAP Attribute, select User-Principal-Name.
    • Altında giden talep türüseçin UPN.Under Outgoing Claim Type, select UPN. Dönüşüm Talep Kuralı Ekleme SihirbazıAdd Transform Claim Rule Wizard
  7. Son'a tıklayın.Click Finish.

  8. Tıklayın Kuralı Ekle yeniden.Click Add Rule again.

  9. "Gönderme talep kullanarak bir özel kural" seçip tıklayın sonraki.Select "Send Claims Using a Custom Rule" and click Next.

  10. "Bağlayıcı talep türü" gibi bir kuralı için bir ad girin.Enter a name for the rule, such as "Anchor Claim Type".

  11. Altında özel kural, aşağıdakileri girin:Under Custom rule, enter the following:

    EXISTS([Type == "http://schemas.microsoft.com/ws/2014/01/identity/claims/anchorclaimtype"])=>
    issue (Type = "http://schemas.microsoft.com/ws/2014/01/identity/claims/anchorclaimtype",
          Value = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn");
    

    Bu kural bir talep türü sorunları anchorclaimtype.This rule issues a claim of type anchorclaimtype. UPN kullanıcının sabit kimliği olarak kullanılacak bağlı olan tarafa talep bildirirThe claim tells the relying party to use UPN as the user's immutable ID.

  12. Son'a tıklayın.Click Finish.

  13. Tıklayın Tamam Sihirbazı tamamlayın.Click OK to complete the wizard.