Delegação restrita de Kerberos para logon único em seus aplicativos com o Proxy de AplicativoKerberos Constrained Delegation for single sign-on to your apps with Application Proxy

Você pode fornecer o logon único para aplicativos locais, publicados por meio do Proxy do Aplicativo, que sejam protegidos com a Autenticação Integrada do Windows.You can provide single sign-on for on-premises applications published through Application Proxy that are secured with Integrated Windows Authentication. Esses aplicativos exigem um tíquete Kerberos para acessar.These applications require a Kerberos ticket for access. O Proxy do Aplicativo usa a KCD (Delegação restrita de Kerberos) para dar suporte a esses aplicativos.Application Proxy uses Kerberos Constrained Delegation (KCD) to support these applications.

Você pode habilitar o logon único para seus aplicativos usando a IWA (Autenticação Integrada do Windows) concedendo permissão aos conectores do Proxy de Aplicativo no Active Directory para representar usuários.You can enable single sign-on to your applications using Integrated Windows Authentication (IWA) by giving Application Proxy connectors permission in Active Directory to impersonate users. Os conectores usam essa permissão para enviar e receber tokens em seu nome.The connectors use this permission to send and receive tokens on their behalf.

Como funciona o logon único com a KCDHow single sign-on with KCD works

Este diagrama explica o fluxo quando um usuário tenta acessar um aplicativo local que usa IWA.This diagram explains the flow when a user attempts to access an on premises application that uses IWA.

Diagrama de fluxo de autenticação do Microsoft AAD

  1. O usuário insere a URL para acessar o aplicativo local por meio do proxy de aplicativo.The user enters the URL to access the on premises application through Application Proxy.
  2. O Proxy de Aplicativo redireciona a solicitação para serviços de autenticação do AD do Azure para pré-autenticação.Application Proxy redirects the request to Azure AD authentication services to preauthenticate. Neste ponto, o AD do Azure se aplica a qualquer política de autenticação e autorização aplicável, tal como autenticação multifator.At this point, Azure AD applies any applicable authentication and authorization policies, such as multifactor authentication. Se o usuário for validado, o AD do Azure cria um token e o envia para o usuário.If the user is validated, Azure AD creates a token and sends it to the user.
  3. O usuário passa o token para o Proxy de Aplicativo.The user passes the token to Application Proxy.
  4. O proxy de aplicativo valida o token e recupera o UPN (nome principal do usuário) dele e, em seguida, o conector recebe o UPN e o SPN (nome da entidade de serviço) por meio de um canal seguro com autenticação dupla.Application Proxy validates the token and retrieves the User Principal Name (UPN) from it, and then the Connector pulls the UPN, and the Service Principal Name (SPN) through a dually authenticated secure channel.
  5. O conector executa a negociação de KCD (delegação restrita de Kerberos) com o AD local, representando o usuário para obter um token Kerberos para o aplicativo.The Connector performs Kerberos Constrained Delegation (KCD) negotiation with the on premises AD, impersonating the user to get a Kerberos token to the application.
  6. O Active Directory envia o token Kerberos para o aplicativo para o Conector.Active Directory sends the Kerberos token for the application to the Connector.
  7. O Conector envia a solicitação original para o servidor de aplicativos usando o token Kerberos recebido do AD.The Connector sends the original request to the application server, using the Kerberos token it received from AD.
  8. O aplicativo envia a resposta para o Conector, que é retornada para o serviço de Proxy de Aplicativo e, finalmente, para o usuário.The application sends the response to the Connector, which is then returned to the Application Proxy service and finally to the user.

Pré-requisitosPrerequisites

Antes de começar com o logon único para aplicativos da IWA, verifique se seu ambiente está preparado com as seguintes configurações e definições:Before you get started with single sign-on for IWA applications, make sure your environment is ready with the following settings and configurations:

Configurar o Active DirectoryConfigure Active Directory

A configuração do Active Directory varia, dependendo de se o conector do Proxy do Aplicativo e o servidor de aplicativos estão no mesmo domínio ou não.The Active Directory configuration varies, depending on whether your Application Proxy connector and the application server are in the same domain or not.

O conector e o servidor de aplicativos estão no mesmo domínioConnector and application server in the same domain

  1. No Active Directory, vá para Ferramentas > Usuários e Computadores.In Active Directory, go to Tools > Users and Computers.

  2. Selecione o servidor que executa o conector.Select the server running the connector.

  3. Clique com o botão direito do mouse e selecione Propriedades > Delegação.Right-click and select Properties > Delegation.

  4. Selecione Confiar no computador para delegação apenas a serviços especificados.Select Trust this computer for delegation to specified services only.

  5. Selecione usar qualquer protocolo de autenticação.Select Use any authentication protocol.

  6. Em Serviços aos quais esta conta pode apresentar credenciais delegadas, adicione o valor da identidade SPN do servidor de aplicativos.Under Services to which this account can present delegated credentials add the value for the SPN identity of the application server. Isso permite que o Conector do Proxy de Aplicativo represente usuários no AD para os aplicativos definidos na lista.This enables the Application Proxy Connector to impersonate users in AD against the applications defined in the list.

    Captura de tela da janela Propriedades do Conector SVR

O conector e o servidor de aplicativos estão em domínios diferentesConnector and application server in different domains

  1. Para obter uma lista de pré-requisitos para trabalhar com o KCD entre domínios, consulte Delegação restrita de Kerberos nos domínios.For a list of prerequisites for working with KCD across domains, see Kerberos Constrained Delegation across domains.
  2. Use a propriedade principalsallowedtodelegateto no servidor do conector para habilitar o Proxy do Aplicativo a delegar para o servidor do conector.Use the principalsallowedtodelegateto property on the Connector server to enable the Application Proxy to delegate for the Connector server. O servidor de aplicativos é o sharepointserviceaccount e o servidor de delegação é o connectormachineaccount.The application server is sharepointserviceaccount and the delegating server is connectormachineaccount. Para o Windows 2012 R2, use esse código como um exemplo:For Windows 2012 R2, use this code as an example:
$connector= Get-ADComputer -Identity connectormachineaccount -server dc.connectordomain.com

Set-ADComputer -Identity sharepointserviceaccount -PrincipalsAllowedToDelegateToAccount $connector

Get-ADComputer sharepointserviceaccount -Properties PrincipalsAllowedToDelegateToAccount

sharepointserviceaccount pode ser a conta do computador do SPS ou uma conta de serviço sob a qual o pool de aplicativos do SPS está sendo executado.sharepointserviceaccount can be the SPS machine account or a service account under which the SPS app pool is running.

Configurar logon únicoConfigure single sign-on

  1. Publique seu aplicativo seguindo as instruções descritas em Publicar aplicativos com o Proxy de Aplicativo.Publish your application according to the instructions described in Publish applications with Application Proxy. Certifique-se de selecionar Azure Active Directory como o Método de Pré-autenticação.Make sure to select Azure Active Directory as the Preauthentication Method.

  2. Depois que o aplicativo aparecer na lista de aplicativos empresariais, selecione-o e clique em Logon único.After your application appears in the list of enterprise applications, select it and click Single sign-on.

  3. Defina o modo de logon único como Autenticação Integrada do Windows.Set the single sign-on mode to Integrated Windows Authentication.

  4. Insira o SPN do Aplicativo Interno do servidor de aplicativos.Enter the Internal Application SPN of the application server. Neste exemplo, o SPN para nosso aplicativo publicado é http/www.contoso.com.In this example, the SPN for our published application is http/www.contoso.com. Esse SPN precisa estar na lista de serviços aos quais o conector pode apresentar credenciais delegadas.This SPN needs to be in the list of services to which the connector can present delegated credentials.

  5. Escolha a Identidade de Logon Delegada para que o conector use em nome de seus usuários.Choose the Delegated Login Identity for the connector to use on behalf of your users. Para obter mais informações, consulte Trabalhando com identidades diferentes de nuvem e localFor more information, see Working with different on-premises and cloud identities

    Configuração de Aplicativo Avançada

SSO para aplicativos não WindowsSSO for non-Windows apps

O fluxo de delegação de Kerberos no Proxy de Aplicativo do AD do Azure é iniciado quando o AD do Azure autentica o usuário na nuvem.The Kerberos delegation flow in Azure AD Application Proxy starts when Azure AD authenticates the user in the cloud. Depois que a solicitação chega localmente, o conector do Proxy de Aplicativo Azure AD emite um tíquete do Kerberos em nome do usuário interagindo com o Active Directory local.Once the request arrives on-premises, the Azure AD Application Proxy connector issues a Kerberos ticket on behalf of the user by interacting with the local Active Directory. Esse processo é conhecido como KCD (delegação restrita do Kerberos).This process is referred to as Kerberos Constrained Delegation (KCD). Na próxima fase, uma solicitação é enviada ao aplicativo de back-end com esse tíquete Kerberos.In the next phase, a request is sent to the backend application with this Kerberos ticket.

Há vários protocolos que definem como enviar essas solicitações.There are several protocols that define how to send such requests. A maioria dos servidores não Windows espera negociar com o SPNEGO.Most non-Windows servers expect to negotiate with SPNEGO. Esse protocolo é compatível com o Proxy de Aplicativo do Azure AD, mas é desabilitado por padrão.This protocol is supported on Azure AD Application Proxy, but is disabled by default. Um servidor pode ser configurado para SPNEGO ou KCD padrão, mas não ambos.A server can be configured for SPNEGO or standard KCD, but not both.

Se você configurar um computador conector para SPNEGO, certifique-se de que todos os outros conectores nesse grupo conector também estejam configurados com SPNEGO.If you configure a connector machine for SPNEGO, make sure that all other connectors in that Connector group are also configured with SPNEGO. Aplicativos que esperam KCD padrão devem ser roteados por meio de outros conectores que não estão configurados para SPNEGO.Applications expecting standard KCD should be routed through other connectors that are not configured for SPNEGO.

Para habilitar SPNEGO:To enable SPNEGO:

  1. Abra um prompt de comando que é executado como administrador.Open an command prompt that runs as administrator.

  2. No prompt de comando, execute os seguintes comandos em servidores do conector que precisam de SPNEGO.From the command prompt, run the following commands on the connector servers that need SPNEGO.

    REG ADD "HKLM\SOFTWARE\Microsoft\Microsoft AAD App Proxy Connector" /v UseSpnegoAuthentication /t REG_DWORD /d 1
    net stop WAPCSvc & net start WAPCSvc
    

Para obter mais informações sobre o Kerberos, consulte Tudo o que você deseja saber sobre a delegação restrita de Kerberos (KCD).For more information about Kerberos, see All you want to know about Kerberos Constrained Delegation (KCD).

Os aplicativos que não são do Windows normalmente utilizam nomes de usuário ou nomes de conta SAM em vez de endereços de email de domínio.Non-Windows apps typically user usernames or SAM account names instead of domain email addresses. Se essa situação se aplicar aos seus aplicativos, você precisará configurar o campo de identificação de logon delegada para conectar as identidades de nuvem às identidades de aplicativo.If that situation applies to your applications, you need to configure the delegated login identity field to connect your cloud identities to your application identities.

Trabalhando com identidades diferentes de nuvem e localWorking with different on-premises and cloud identities

O Proxy do Aplicativo pressupõe que os usuários têm a mesma identidade na nuvem e localmente.Application Proxy assumes that users have exactly the same identity in the cloud and on-premises. Mas, em alguns ambientes, devido a políticas corporativas ou dependências de aplicativos, as organizações podem precisar usar IDs alternativas para entrar.But in some environments, due to corporate policies or application dependencies, organizations might have to use alternate IDs for sign-in. Nesses casos, você ainda pode usar o KCD para logon único.In such cases, you can still use KCD for single sign-on. Configure uma Identificação de logon delegada para cada aplicativo a fim de especificar qual identidade deve ser usada ao realizar o logon único.Configure a Delegated login identity for each application to specify which identity should be used when performing single sign-on.

Essa capacidade permite que muitas organizações com identidades diferentes localmente e na nuvem usem o SSO da nuvem para aplicativos locais, sem exigir que os usuários insiram senhas e nomes de usuários diferentes.This capability allows many organizations that have different on-premises and cloud identities to have SSO from the cloud to on-premises apps without requiring the users to enter different usernames and passwords. Isso inclui as organizações que:This includes organizations that:

  • Têm vários domínios internamente (joe@us.contoso.com, joe@eu.contoso.com) e um único domínio na nuvem (joe@contoso.com).Have multiple domains internally (joe@us.contoso.com, joe@eu.contoso.com) and a single domain in the cloud (joe@contoso.com).
  • Têm um nome de domínio não roteável internamente (joe@contoso.usa) e um nome legal na nuvem.Have non-routable domain name internally (joe@contoso.usa) and a legal one in the cloud.
  • Não usem nomes de domínio internamente (joe)Do not use domain names internally (joe)
  • Use aliases diferentes no local e na nuvem.Use different aliases on premises and in the cloud. Por exemplo, joe-johns@contoso.com versus joej@contoso.comFor example, joe-johns@contoso.com vs. joej@contoso.com

Com o Proxy de Aplicativo, você pode selecionar qual identidade deve ser usada para obter o tíquete Kerberos.With Application Proxy, you can select which identity to use to obtain the Kerberos ticket. Essa configuração é por aplicativo.This setting is per application. Algumas dessas opções são adequadas para sistemas que não aceitam o formato de endereço de email, e outras são desenvolvidas para logon alternativo.Some of these options are suitable for systems that do not accept email address format, others are designed for alternative login.

Captura de tela de parâmetro de identidade de logon delegada

Se a identidade de logon delegada for usada, o valor não poderá ser exclusivo em todos os domínios ou florestas em sua organização.If delegated login identity is used, the value might not be unique across all the domains or forests in your organization. Você pode evitar esse problema publicando esses aplicativos duas vezes com dois grupos diferentes de Conectores.You can avoid this issue by publishing these applications twice using two different Connector groups. Como cada aplicativo tem um público de usuários diferente, é possível ingressar seus Conectores em um domínio diferente.Since each application has a different user audience, you can join its Connectors to a different domain.

Configurar o SSO para diferentes identidadesConfigure SSO for different identities

  1. Defina as configurações do Azure AD Connect para que a identidade principal seja o endereço de email (email).Configure Azure AD Connect settings so the main identity is the email address (mail). Isso é feito como parte do processo de personalização, alterando o campo Nome UPN nas configurações de sincronização.This is done as part of the customize process, by changing the User Principal Name field in the sync settings. Essas configurações também determinam como os usuários fazem logon no Office365, em dispositivos Windows10 e outros aplicativos que usam o Azure AD como seu armazenamento de identidade.These settings also determine how users log in to Office365, Windows10 devices, and other applications that use Azure AD as their identity store.
    Identificando a captura de tela de usuários - lista suspensa Nome UPNIdentifying users screenshot - User Principal Name dropdown

  2. Nas definições de configuração de aplicativo para o aplicativo que você deseja modificar, selecione a Identidade de Logon Delegada a ser usada:In the Application Configuration settings for the application you would like to modify, select the Delegated Login Identity to be used:

    • Nome UPN (por exemplo, joe@contoso.com)User Principal Name (for example, joe@contoso.com)
    • Nome UPN alternativo (por exemplo, joed@contoso.local)Alternate User Principal Name (for example, joed@contoso.local)
    • Nome de usuário que faz parte do nome UPN (por exemplo, joe)Username part of User Principal Name (for example, joe)
    • Nome de usuário que faz parte do nome UPN alternativo (por exemplo, joed)Username part of Alternate User Principal Name (for example, joed)
    • Nome da conta SAM local (depende da configuração do controlador de domínio)On-premises SAM account name (depends on the domain controller configuration)

Solucionando problemas de SSO para diferentes identidadesTroubleshooting SSO for different identities

Se houver um erro no processo de SSO, ele aparecerá no log de eventos do computador do conector, conforme explicado na Solução de problemas.If there is an error in the SSO process, it appears in the connector machine event log as explained in Troubleshooting. Porém, em alguns casos, a solicitação será enviada com êxito para o aplicativo de back-end embora este aplicativo responderá em várias outras respostas HTTP.But, in some cases, the request is successfully sent to the backend application while this application replies in various other HTTP responses. Nesses casos, a solução de problemas deve começar examinando o número de evento 24029 no computador do conector, no log de eventos da sessão do Proxy do Aplicativo.Troubleshooting these cases should start by examining event number 24029 on the connector machine in the Application Proxy session event log. A identidade do usuário que foi usada para delegação será exibida no campo "usuário" nos detalhes do evento.The user identity that was used for delegation appears in the “user” field within the event details. Para ativar o log de sessão, selecione Mostrar logs analíticos e de depuração no menu de exibição do visualizador de eventos.To turn on session log, select Show analytic and debug logs in the event viewer view menu.

Próximas etapasNext steps

Para obter as últimas notícias e atualizações, confira o blog do Proxy de AplicativoFor the latest news and updates, check out the Application Proxy blog