Federação com o AD FS de um clienteFederate with a customer's AD FS

Este artigo descreve como uma aplicação SaaS multi-inquilino pode suportar autenticação através de serviços de Federação do Active Directory (AD FS), para federar com o AD FS de um cliente.This article describes how a multitenant SaaS application can support authentication via Active Directory Federation Services (AD FS), in order to federate with a customer's AD FS.

Descrição geralOverview

Azure Active Directory (Azure AD) torna mais fácil de iniciar sessão dos utilizadores de inquilinos do Azure AD, incluindo os clientes do Office 365 e Dynamics CRM Online.Azure Active Directory (Azure AD) makes it easy to sign in users from Azure AD tenants, including Office365 and Dynamics CRM Online customers. Mas e quanto os clientes que utilizam no local do Active Directory numa intranet corporativa?But what about customers who use on-premises Active Directory on a corporate intranet?

Uma opção é para estes clientes sincronizar suas instalações AD com o Azure AD, usando Azure AD Connect.One option is for these customers to sync their on-premises AD with Azure AD, using Azure AD Connect. No entanto, alguns clientes poderão ser não é possível utilizar esta abordagem, devido à política de TI empresarial ou por outros motivos.However, some customers may be unable to use this approach, due to corporate IT policy or other reasons. Nesse caso, outra opção é federar por meio de serviços de Federação do Active Directory (AD FS).In that case, another option is to federate through Active Directory Federation Services (AD FS).

Para ativar este cenário:To enable this scenario:

  • O cliente tem de ter um farm do AD FS do acesso à Internet.The customer must have an Internet-facing AD FS farm.
  • O fornecedor de SaaS implementa seus próprios farm do AD FS.The SaaS provider deploys their own AD FS farm.
  • O cliente e o fornecedor de SaaS tem de configurar confiança de Federação.The customer and the SaaS provider must set up federation trust. Este é um processo manual.This is a manual process.

Existem três funções principais a relação de confiança:There are three main roles in the trust relation:

  • AD FS o cliente é o parceiro de conta, responsável por autenticar usuários do cliente do AD e a criação de tokens de segurança com afirmações de utilizador.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.

  • O AD FS o fornecedor de SaaS é o parceiro de recurso, que o parceiro de conta de confianças de entidades e recebe as afirmações de utilizador.The SaaS provider's AD FS is the resource partner, which trusts the account partner and receives the user claims.

  • A aplicação está configurada como uma entidade confiadora (RP) no AD FS o fornecedor de SaaS.The application is configured as a relying party (RP) in the SaaS provider's AD FS.

    confiança de Federação

Nota

Neste artigo, presumimos que o aplicativo usa o OpenID Connect como o protocolo de autenticação.In this article, we assume the application uses OpenID Connect as the authentication protocol. Outra opção é usar WS-Federation.Another option is to use WS-Federation.

Para o OpenID Connect, o fornecedor de SaaS tem de utilizar o AD FS 2016, em execução no Windows Server 2016.For OpenID Connect, the SaaS provider must use AD FS 2016, running in Windows Server 2016. AD FS 3.0 não suporta o OpenID Connect.AD FS 3.0 does not support OpenID Connect.

ASP.NET Core não inclui suporte de out-of-the-box para WS-Federation.ASP.NET Core does not include out-of-the-box support for WS-Federation.

Para obter um exemplo da utilização de WS-Federation com o ASP.NET 4, consulte a exemplo de active-directory-dotnet-webapp-wsfederation.For an example of using WS-Federation with ASP.NET 4, see the active-directory-dotnet-webapp-wsfederation sample.

Fluxo de autenticaçãoAuthentication flow

  1. Quando o usuário clica em "iniciar sessão", a aplicação redireciona para um ponto de extremidade de OpenID Connect AD FS do fornecedor de SaaS.When the user clicks "sign in", the application redirects to an OpenID Connect endpoint on the SaaS provider's AD FS.
  2. O usuário insere seu nome de utilizador organizacional ("alice@corp.contoso.com").The user enters his or her organizational user name ("alice@corp.contoso.com"). AD FS utiliza a deteção de realm inicial para redirecionar para do AD FS o cliente, onde o utilizador introduz as respetivas credenciais.AD FS uses home realm discovery to redirect to the customer's AD FS, where the user enters their credentials.
  3. AD FS do cliente envia as afirmações de utilizador do AD FS o fornecedor de SaaS, usando o WF-Federation (ou SAML).The customer's AD FS sends user claims to the SaaS provider's AD FS, using WF-Federation (or SAML).
  4. Fluxo de afirmações do AD FS para a aplicação, através do OpenID Connect.Claims flow from AD FS to the app, using OpenID Connect. Isto requer uma transição de protocolo de WS-Federation.This requires a protocol transition from WS-Federation.

LimitaçõesLimitations

Por predefinição, o aplicativo de terceiros da entidade confiadora recebe apenas um conjunto fixo de declarações disponíveis no id_token, mostrado na seguinte tabela.By default, the relying party application receives only a fixed set of claims available in the id_token, shown in the following table. Com o AD FS 2016, pode personalizar o id_token em cenários de OpenID Connect.With AD FS 2016, you can customize the id_token in OpenID Connect scenarios. Para obter mais informações, consulte Tokens de identidade personalizada no AD FS.For more information, see Custom ID Tokens in AD FS.

AfirmaçãoClaim DescriçãoDescription
audaud Público-alvo.Audience. A aplicação para os quais as afirmações foram emitidas.The application for which the claims were issued.
AuthenticationInstantauthenticationinstant Autenticação instantânea.Authentication instant. Ocorreu o tempo em que a autenticação.The time at which authentication occurred.
c_hashc_hash Valor de hash de código.Code hash value. Este é um hash do conteúdo token.This is a hash of the token contents.
expexp Hora de expiração.Expiration time. O tempo após o qual o token já não serão aceites.The time after which the token will no longer be accepted.
iatiat Emitido em.Issued at. A hora quando o token foi emitido.The time when the token was issued.
ISSiss Emissor.Issuer. O valor desta afirmação é sempre AD FS o parceiro de recurso.The value of this claim is always the resource partner's AD FS.
namename Nome de utilizador.User name. Exemplo: john@corp.fabrikam.comExample: john@corp.fabrikam.com
nameidentifiernameidentifier Identificador de nome.Name identifier. O identificador para o nome da entidade para o qual o token foi emitido.The identifier for the name of the entity for which the token was issued.
Valor de uso únicononce Valor de uso único sessão.Session nonce. Um valor exclusivo gerado pelo AD FS para ajudar a impedir ataques de repetição.A unique value generated by AD FS to help prevent replay attacks.
upnupn Nome principal de utilizador (UPN).User principal name (UPN). Exemplo: john@corp.fabrikam.comExample: john@corp.fabrikam.com
pwd_exppwd_exp Período de expiração de palavra-passe.Password expiration period. O número de segundos até que a senha do usuário ou um segredo de autenticação semelhantes, como um PIN.The number of seconds until the user's password or a similar authentication secret, such as a PIN. expira.expires.

Nota

"iss" contém o AD FS do parceiro de afirmação (normalmente, essa declaração será identificar o fornecedor de SaaS como o emissor).The "iss" claim contains the AD FS of the partner (typically, this claim will identify the SaaS provider as the issuer). Não identifica AD FS do cliente.It does not identify the customer's AD FS. Pode encontrar o domínio do cliente como parte do UPN.You can find the customer's domain as part of the UPN.

O restante deste artigo descreve como configurar a relação de confiança entre a RP (a aplicação) e o parceiro de conta (o cliente).The rest of this article describes how to set up the trust relationship between the RP (the app) and the account partner (the customer).

Implementação do AD FSAD FS deployment

O fornecedor de SaaS pode implementar o AD FS no local ou em VMs do Azure.The SaaS provider can deploy AD FS either on-premises or on Azure VMs. Para segurança e disponibilidade, as seguintes diretrizes são importantes:For security and availability, the following guidelines are important:

  • Implemente, pelo menos, dois servidores AD FS e dois servidores de proxy do AD FS para alcançar a melhor disponibilidade de serviço do AD FS.Deploy at least two AD FS servers and two AD FS proxy servers to achieve the best availability of the AD FS service.
  • Controladores de domínio e servidores do AD FS nunca devem ser expostas diretamente à Internet e devem ser numa rede virtual com acesso direto aos mesmos.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.
  • Proxies de aplicação Web (anteriormente os proxies do AD FS) devem ser utilizados para publicar os servidores do AD FS à Internet.Web application proxies (previously AD FS proxies) must be used to publish AD FS servers to the Internet.

Para configurar uma topologia semelhante no Azure requer a utilização de redes virtuais, grupos de segurança de rede, as máquinas virtuais e conjuntos de disponibilidade.To set up a similar topology in Azure requires the use of virtual networks, network security groups, virtual machines, and availability sets. Para obter mais detalhes, consulte diretrizes para implementar o Windows Server Active Directory em Azure Virtual Machines.For more details, see Guidelines for deploying Windows Server Active Directory on Azure Virtual Machines.

Configurar a autenticação de ligação OpenID com o AD FSConfigure OpenID Connect authentication with AD FS

O fornecedor de SaaS tem de ativar o OpenID Connect entre o aplicativo e do AD FS.The SaaS provider must enable OpenID Connect between the application and AD FS. Para tal, adicione um grupo de aplicações no AD FS.To do so, add an application group in AD FS. Pode encontrar instruções detalhadas desta mensagem de blogue, sob "Como configurar uma aplicação Web do OpenId Connect iniciam sessão no AD FS."You can find detailed instructions in this blog post, under "Setting up a Web App for OpenId Connect sign in AD FS."

Em seguida, configure o middleware de OpenID Connect.Next, configure the OpenID Connect middleware. O ponto final de metadados é https://domain/adfs/.well-known/openid-configuration, em que o domínio é domínio do AD FS do fornecedor de SaaS.The metadata endpoint is https://domain/adfs/.well-known/openid-configuration, where domain is the SaaS provider's AD FS domain.

Normalmente, poderá combinar isso com outros pontos de extremidade de OpenID Connect (como o Azure AD).Typically you might combine this with other OpenID Connect endpoints (such as Azure AD). Irá precisar de duas diferentes início de sessão botões ou de alguma forma para distingui-los, para que o utilizador é enviado para o ponto de final de autenticação correta.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.

Configurar o parceiro de recurso de FS do ADConfigure the AD FS Resource Partner

O fornecedor de SaaS tem de fazer o seguinte procedimento para cada cliente que pretenda ligar-se através do AD FS:The SaaS provider must do the following for each customer that wants to connect via ADFS:

  1. Adicione uma confiança do fornecedor de afirmações.Add a claims provider trust.
  2. Adicione regras de afirmações.Add claims rules.
  3. Ative a deteção de realm inicial.Enable home-realm discovery.

Aqui estão as etapas mais detalhadamente.Here are the steps in more detail.

Adicionar a confiança do fornecedor de afirmaçõesAdd the claims provider trust

  1. No Gestor de servidor, clique em ferramentase, em seguida, selecione gestão do AD FS.In Server Manager, click Tools, and then select AD FS Management.
  2. Na árvore da consola, em do AD FS, clique com botão direito confianças do fornecedor de afirmações.In the console tree, under AD FS, right click Claims Provider Trusts. Selecione adicionar confiança do fornecedor de afirmações.Select Add Claims Provider Trust.
  3. Clique em iniciar para iniciar o assistente.Click Start to start the wizard.
  4. Selecione os opção "importar dados sobre o fornecedor de afirmações publicado online ou numa rede local".Select the option "Import data about the claims provider published online or on a local network". Introduza o URI do ponto final de metadados de Federação do cliente.Enter the URI of the customer's federation metadata endpoint. (Exemplo: https://contoso.com/FederationMetadata/2007-06/FederationMetadata.xml.) Terá de obter isso a partir do cliente.(Example: https://contoso.com/FederationMetadata/2007-06/FederationMetadata.xml.) You will need to get this from the customer.
  5. Conclua o assistente utilizando as opções predefinidas.Complete the wizard using the default options.

Editar regras de afirmaçõesEdit claims rules

  1. A confiança do fornecedor de afirmações recém-adicionado com o botão direito e selecione editar regras de afirmações.Right-click the newly added claims provider trust, and select Edit Claims Rules.
  2. Clique em Adicionar regra.Click Add Rule.
  3. Selecione "Passar através de ou filtrar uma afirmação de entrada" e clique em seguinte.Select "Pass Through or Filter an Incoming Claim" and click Next. Assistente para Adicionar Regra de Afirmação de TransformaçãoAdd Transform Claim Rule Wizard
  4. Introduza um nome para a regra.Enter a name for the rule.
  5. Em "Tipo de afirmação de entrada", selecione UPN.Under "Incoming claim type", select UPN.
  6. Selecione "Passar todos os valores de afirmação".Select "Pass through all claim values". Assistente para Adicionar Regra de Afirmação de TransformaçãoAdd Transform Claim Rule Wizard
  7. Clique em Concluir.Click Finish.
  8. Repita os passos 2 a 7 e especifique tipo de afirmação de âncora para a entrada de tipo de afirmação.Repeat steps 2 - 7, and specify Anchor Claim Type for the incoming claim type.
  9. Clique em OK para concluir o assistente.Click OK to complete the wizard.

Ativar a deteção de realm inicialEnable home-realm discovery

Execute o seguinte script do PowerShell:Run the following PowerShell script:

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

em que "nome" é o nome amigável de confiança do fornecedor de afirmações e "sufixo" é o sufixo UPN do cliente AD (exemplo, "corp.fabrikam.com") do.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").

Com esta configuração, os utilizadores finais podem inserir em suas contas institucionais e do AD FS seleciona automaticamente o fornecedor de afirmações correspondente.With this configuration, end users can type in their organizational account, and AD FS automatically selects the corresponding claims provider. Ver Personalizar as páginas AD FS início de sessão, na secção "Configurar fornecedor de identidade para utilizar determinados sufixos de e-mail".See Customizing the AD FS Sign-in Pages, under the section "Configure Identity Provider to use certain email suffixes".

Configurar o parceiro de conta de FS ADConfigure the AD FS Account Partner

O cliente deve fazer o seguinte:The customer must do the following:

  1. Adicione uma confiança da entidade confiadora de terceiros (RP).Add a relying party (RP) trust.
  2. Adiciona regras de afirmações.Adds claims rules.

Adicionar a confiança RPAdd the RP trust

  1. No Gestor de servidor, clique em ferramentase, em seguida, selecione gestão do AD FS.In Server Manager, click Tools, and then select AD FS Management.
  2. Na árvore da consola, em do AD FS, clique com botão direito entidade Confiadora confianças.In the console tree, under AD FS, right click Relying Party Trusts. Selecione adicionar confiança de entidade Confiadora.Select Add Relying Party Trust.
  3. Selecione com suporte para afirmações e clique em iniciar.Select Claims Aware and click Start.
  4. Sobre o selecionar origem de dados página, selecione a opção "Importar dados sobre o fornecedor de afirmações publicados online ou numa rede local".On the Select Data Source page, select the option "Import data about the claims provider published online or on a local network". Introduza o URI do ponto final de metadados de Federação do fornecedor SaaS.Enter the URI of the SaaS provider's federation metadata endpoint. Adicionar Assistente de confiança da entidade ConfiadoraAdd Relying Party Trust Wizard
  5. Sobre o Especificar nome a apresentar página, introduza qualquer nome.On the Specify Display Name page, enter any name.
  6. Sobre o escolher política de controlo de acesso página, escolha uma política.On the Choose Access Control Policy page, choose a policy. Poderia permitir todas as pessoas na organização ou escolha um grupo de segurança específicos.You could permit everyone in the organization, or choose a specific security group. Adicionar Assistente de confiança da entidade ConfiadoraAdd Relying Party Trust Wizard
  7. Introduza quaisquer parâmetros necessários na política caixa.Enter any parameters required in the Policy box.
  8. Clique em seguinte para concluir o assistente.Click Next to complete the wizard.

Adicionar regras de afirmaçõesAdd claims rules

  1. Faça duplo clique na fidedignidade da entidade confiadora adicionada recentemente e selecione Editar política de emissão de afirmação.Right-click the newly added relying party trust, and select Edit Claim Issuance Policy.

  2. Clique em Adicionar regra.Click Add Rule.

  3. Selecione "Enviar atributos como afirmações LDAP" e clique em seguinte.Select "Send LDAP Attributes as Claims" and click Next.

  4. Introduza um nome para a regra, como "UPN".Enter a name for the rule, such as "UPN".

  5. Sob arquivo de atributos, selecione do Active Directory.Under Attribute store, select Active Directory. Assistente para Adicionar Regra de Afirmação de TransformaçãoAdd Transform Claim Rule Wizard

  6. Na mapeamento de atributos LDAP secção:In the Mapping of LDAP attributes section:

    • Sob atributo LDAP, selecione nome do Principal do utilizador.Under LDAP Attribute, select User-Principal-Name.
    • Sob tipo de afirmação de saída, selecione UPN.Under Outgoing Claim Type, select UPN. Assistente para Adicionar Regra de Afirmação de TransformaçãoAdd Transform Claim Rule Wizard
  7. Clique em Concluir.Click Finish.

  8. Clique em Adicionar regra novamente.Click Add Rule again.

  9. Selecione "Enviar afirmações utilizando uma regra personalizada" e clique em seguinte.Select "Send Claims Using a Custom Rule" and click Next.

  10. Introduza um nome para a regra, por exemplo, "Tipo de afirmação de âncora".Enter a name for the rule, such as "Anchor Claim Type".

  11. Sob regra personalizada, introduza o seguinte: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");
    

    Esta regra emite uma afirmação do tipo anchorclaimtype.This rule issues a claim of type anchorclaimtype. A afirmação informa a entidade confiadora para utilizar o UPN como o ID de imutáveis. do utilizadorThe claim tells the relying party to use UPN as the user's immutable ID.

  12. Clique em Concluir.Click Finish.

  13. Clique em OK para concluir o assistente.Click OK to complete the wizard.