Configurar aceleração automática de entrada para um aplicativo usando a política Descoberta de Realm InicialConfigure Azure Active Directory sign in behavior for an application by using a Home Realm Discovery policy

Este artigo fornece uma introdução à configuração de Azure Active Directory comportamento de autenticação para usuários federados.This article provides an introduction to configuring Azure Active Directory authentication behavior for federated users. Ele abrange a configuração das restrições de aceleração automática e autenticação para usuários em domínios federados.It covers configuration of auto-acceleration and authentication restrictions for users in federated domains.

Descoberta de Realm InicialHome Realm Discovery

Home Realm Discovery (HRD) is the process that allows Azure Active Directory (Azure AD) to determine where a user needs to authenticate at sign-in time.Home Realm Discovery (HRD) is the process that allows Azure Active Directory (Azure AD) to determine where a user needs to authenticate at sign-in time. Ao entrar em um locatário do Azure AD para acessar um recurso, ou a página de entrada comum do Azure AD, um usuário digita um nome (UPN).When a user signs in to an Azure AD tenant to access a resource, or to the Azure AD common sign-in page, they type a user name (UPN). O Azure AD usa esse nome para descobrir onde o usuário precisa entrar.Azure AD uses that to discover where the user needs to sign in.

O usuário talvez precise ser levado para um dos seguintes locais para ser autenticado:The user might need to be taken to one of the following locations to be authenticated:

  • O locatário inicial do usuário (pode ser o mesmo locatário do recurso que o usuário está tentando acessar).The home tenant of the user (might be the same tenant as the resource that the user is attempting to access).

  • Conta da Microsoft.Microsoft account. O usuário é um convidado no locatário do recurso.The user is a guest in the resource tenant.

  • Um provedor de identidade local como Serviços de Federação do Active Directory (AD FS).An on-premises identity provider such as Active Directory Federation Services (AD FS).

  • Outro provedor de identidade federado com o locatário do Azure AD.Another identity provider that's federated with the Azure AD tenant.

Aceleração automáticaAuto-acceleration

Some organizations configure domains in their Azure Active Directory tenant to federate with another IdP, such as AD FS for user authentication.Some organizations configure domains in their Azure Active Directory tenant to federate with another IdP, such as AD FS for user authentication.

When a user signs into an application, they are first presented with an Azure AD sign-in page.When a user signs into an application, they are first presented with an Azure AD sign-in page. After they have typed their UPN, if they are in a federated domain they are then taken to the sign-in page of the IdP serving that domain.After they have typed their UPN, if they are in a federated domain they are then taken to the sign-in page of the IdP serving that domain. Em determinadas circunstâncias, os administradores talvez queiram direcionar usuários para a página de entrada quando estes estiverem entrando em aplicativos específicos.Under certain circumstances, administrators might want to direct users to the sign-in page when they're signing in to specific applications.

As a result users can skip the initial Azure Active Directory page.As a result users can skip the initial Azure Active Directory page. Esse processo é conhecido como "aceleração automática de entrada".This process is referred to as “sign-in auto-acceleration.”

Em casos nos quais o locatário for federado com outro IdP para entrar, a aceleração automática aprimora mais a entrada.In cases where the tenant is federated to another IdP for sign-in, auto-acceleration makes user sign-in more streamlined. Você pode configurar a aceleração automática para aplicativos individuais.You can configure auto-acceleration for individual applications.

Observação

Se você configurar um aplicativo para aceleração automática, os usuários convidados não poderão entrar.If you configure an application for auto-acceleration, guest users cannot sign in. Se você levar um usuário diretamente para um IdP federado para autenticação, não haverá maneira para ele voltar à página de entrada do Azure Active Directory.If you take a user straight to a federated IdP for authentication, there is no way to for them to get back to the Azure Active Directory sign-in page. Usuários convidados, que talvez precisem ser direcionados para um outros locatários ou um IdP externo como uma conta Microsoft, não poderão entrar nesse aplicativo porque estão ignorando a etapa da Descoberta de Realm Inicial.Guest users, who might need to be directed to other tenants or an external IdP such as a Microsoft account, can't sign in to that application because they're skipping the Home Realm Discovery step.

Há duas maneiras de controlar a aceleração automática para um IdP federado:There are two ways to control auto-acceleration to a federated IdP:

  • Use uma dica de domínio em solicitações de autenticação para um aplicativo.Use a domain hint on authentication requests for an application.
  • Configure uma política Descoberta de Realm Inicial para habilitar a aceleração automática.Configure a Home Realm Discovery policy to enable auto-acceleration.

Dicas de domínioDomain hints

Dicas de domínio são diretivas incluídas na solicitação de autenticação de um aplicativo.Domain hints are directives that are included in the authentication request from an application. Elas podem ser usadas para agilizar o usuário até a página de entrada IdP.They can be used to accelerate the user to their federated IdP sign-in page. Ou elas podem ser usadas por um aplicativo multilocatário para agilizar o usuário diretamente para a página de entrada do Azure AD da marca do locatário.Or they can be used by a multi-tenant application to accelerate the user straight to the branded Azure AD sign-in page for their tenant.

Por exemplo, o aplicativo “largeapp.com” pode permitir que os clientes acessem o aplicativo em um URL personalizado “contoso.largeapp.com”.For example, the application "largeapp.com" might enable their customers to access the application at a custom URL "contoso.largeapp.com." O aplicativo também pode incluir uma dica de domínio para contoso.com na solicitação de autenticação.The app might also include a domain hint to contoso.com in the authentication request.

A sintaxe da dica de domínio varia de acordo com o protocolo usado, e ela é normalmente configurada no aplicativo.Domain hint syntax varies depending on the protocol that's used, and it's typically configured in the application.

Web Services Federation: whr=contoso.com na cadeia de caracteres de consulta.WS-Federation: whr=contoso.com in the query string.

SAML: uma solicitação de autenticação SAML que contém uma dica de domínio ou uma cadeia de caracteres de consulta whr=contoso.com.SAML: Either a SAML authentication request that contains a domain hint or a query string whr=contoso.com.

Open ID Connect: uma cadeia de caracteres de consulta domain_hint=contoso.com.Open ID Connect: A query string domain_hint=contoso.com.

Se uma dica de domínio estiver incluída na solicitação de autenticação do aplicativo e o locatário for federado com esse domínio, o Azure AD tentará redirecionar a entrada para o IdP configurado para esse domínio.If a domain hint is included in the authentication request from the application, and the tenant is federated with that domain, Azure AD attempts to redirect sign-in to the IdP that's configured for that domain.

Se a dica de domínio não se referir a um domínio federado verificado, ele será ignorado, e a Descoberta de Realm Inicial normal será invocada.If the domain hint doesn’t refer to a verified federated domain, it is ignored and normal Home Realm Discovery is invoked.

Para obter mais informações sobre aceleração automática usando as dicas de domínio compatíveis com o Azure Active Directory, consulte o blog Enterprise Mobility + Security.For more information about auto-acceleration using the domain hints that are supported by Azure Active Directory, see the Enterprise Mobility + Security blog.

Observação

If a domain hint is included in an authentication request, its presence overrides auto-acceleration that is set for the application in HRD policy.If a domain hint is included in an authentication request, its presence overrides auto-acceleration that is set for the application in HRD policy.

Home Realm Discovery policy for auto-accelerationHome Realm Discovery policy for auto-acceleration

Alguns aplicativos não oferecem uma maneira de configurar a solicitação de autenticação emitida.Some applications do not provide a way to configure the authentication request they emit. Nesses casos, não é possível usar dicas de domínio para controlar a aceleração automática.In these cases, it’s not possible to use domain hints to control auto-acceleration. Aceleração automática pode ser configurada por meio da política para alcançar o mesmo comportamento.Auto-acceleration can be configured via policy to achieve the same behavior.

Ativar autenticação direta para aplicativos herdadosEnable direct authentication for legacy applications

A melhor prática é que os aplicativos usem bibliotecas AAD e o login interativo para autenticar usuários.Best practice is for applications to use AAD libraries and interactive sign-in to authenticate users. As bibliotecas cuidam dos fluxos de usuários federados.The libraries take care of the federated user flows. Às vezes, aplicativos herdados não são escritos para entender a federação.Sometimes legacy applications aren't written to understand federation. Eles não executam a descoberta de território inicial e não interagem com o endpoint federado correto para autenticar um usuário.They don't perform home realm discovery and do not interact with the correct federated endpoint to authenticate a user. Se preferir, você pode usar a Política de HRD para permitir que aplicativos herdados específicos que enviem credenciais de nome de usuário / senha sejam autenticados diretamente no Azure Active Directory.If you choose to, you can use HRD Policy to enable specific legacy applications that submit username/password credentials to authenticate directly with Azure Active Directory. A sincronização de hash de senha deve estar ativada.Password Hash Sync must be enabled.

Importante

Ative a autenticação direta somente se você tiver a sincronização de hash de senhas ativada e você souber que está correto autenticar esse aplicativo sem nenhuma política implementada pelo seu IdP local.Only enable direct authentication if you have Password Hash Sync turned on and you know it's okay to authenticate this application without any policies implemented by your on-premises IdP. Se você desativar a Sincronização de Hash de Senha ou desativar a Sincronização de Diretórios com o AD Connect por qualquer motivo, remova essa política para evitar a possibilidade de autenticação direta usando um hash de senha antiga.If you turn off Password Hash Sync, or turn off Directory Synchronization with AD Connect for any reason, you should remove this policy to prevent the possibility of direct authentication using a stale password hash.

Definir política HRDSet HRD policy

Há três etapas para configurar a política de HRD em um aplicativo para aplicativos de auto-aceleração de entrada federada ou diretos baseados em nuvem:There are three steps to setting HRD policy on an application for federated sign-in auto-acceleration or direct cloud-based applications:

  1. Crie uma política de HRD.Create an HRD policy.

  2. Localize o principal de serviço ao qual anexar a política.Locate the service principal to which to attach the policy.

  3. Anexe a política ao responsável pelo serviço.Attach the policy to the service principal.

As políticas só entram em vigor para um aplicativo específico quando são anexadas a um responsável pelo serviço.Policies only take effect for a specific application when they are attached to a service principal.

Apenas uma política de HRD pode estar ativa em uma entidade de serviço a qualquer momento.Only one HRD policy can be active on a service principal at any one time.

Você pode usar diretamente a API do Microsoft Active Directory Graph, ou os cmdlets do Azure Active Directory do PowerShell para criar e gerenciar diretivas de HRD.You can use either the Microsoft Azure Active Directory Graph API directly, or the Azure Active Directory PowerShell cmdlets to create and manage HRD policy.

A API do Graph que manipula a política é descrita no artigo Operações na política no MSDN.The Graph API that manipulates policy is described in the Operations on policy article on MSDN.

Aqui está uma definição de política HRD de exemplo:Following is an example HRD policy definition:

  {  
   "HomeRealmDiscoveryPolicy":
   {  
   "AccelerateToFederatedDomain":true,
   "PreferredDomain":"federated.example.edu",
   "AllowCloudPasswordValidation":true
   }
  }

O tipo de política é “HomeRealmDiscoveryPolicy”.The policy type is "HomeRealmDiscoveryPolicy."

AccelerateToFederatedDomain é opcional.AccelerateToFederatedDomain is optional. Se AccelerateToFederatedDomain for falso, a política não terá efeito na aceleração automática.If AccelerateToFederatedDomain is false, the policy has no effect on auto-acceleration. Se AccelerateToFederatedDomain for true e houver apenas um domínio verificado e federado no locatário, os usuários serão levados diretamente para o IdP federado para login.If AccelerateToFederatedDomain is true and there is only one verified and federated domain in the tenant, then users will be taken straight to the federated IdP for sign in. Se for verdadeiro e houver mais de um domínio verificado no locatário, PreferredDomain deve ser especificado.If it is true and there is more than one verified domain in the tenant, PreferredDomain must be specified.

PreferredDomain é opcional.PreferredDomain is optional. PreferredDomain deve indicar um domínio para o qual acelerar.PreferredDomain should indicate a domain to which to accelerate. Ele poderá ser omitido se o locatário tiver apenas um domínio federado.It can be omitted if the tenant has only one federated domain. Se ele for omitido e houver mais de um domínio federado verificado, a política não entrará em vigor.If it is omitted, and there is more than one verified federated domain, the policy has no effect.

Se PreferredDomain for especificado, ele deverá corresponder a um domínio federado, verificado, para o locatário.If PreferredDomain is specified, it must match a verified, federated domain for the tenant. Todos os usuários do aplicativo devem ser capazes de entrar nesse domínio.All users of the application must be able to sign in to that domain.

AllowCloudPasswordValidation é opcional.AllowCloudPasswordValidation is optional. Se AllowCloudPasswordValidation for true, o aplicativo poderá autenticar um usuário federado apresentando credenciais de nome de usuário / senha diretamente ao terminal do token do Azure Active Directory.If AllowCloudPasswordValidation is true then the application is allowed to authenticate a federated user by presenting username/password credentials directly to the Azure Active Directory token endpoint. Isso só funciona se o Password Hash Sync estiver ativado.This only works if Password Hash Sync is enabled.

Prioridade e avaliação de políticas HRDPriority and evaluation of HRD policies

As políticas HRD podem ser criadas e atribuídas a organizações e entidades de serviço específicos.HRD policies can be created and then assigned to specific organizations and service principals. Isso significa que é possível que várias políticas se apliquem a um aplicativo específico.This means that it is possible for multiple policies to apply to a specific application. A política HRD que entra em vigor segue estas regras:The HRD policy that takes effect follows these rules:

  • Se uma dica de domínio estiver presente na solicitação de autenticação, qualquer política de HRD será ignorada para a aceleração automática.If a domain hint is present in the authentication request, then any HRD policy is ignored for auto-acceleration. O comportamento especificado pela dica de domínio é usado.The behavior that's specified by the domain hint is used.

  • Pelo contrário, se uma política for atribuída explicitamente à entidade de serviço, ela será imposta.Otherwise, if a policy is explicitly assigned to the service principal, it is enforced.

  • Se nenhuma dica de política e nenhuma política forem atribuídas explicitamente à entidade de serviço, uma política atribuída explicitamente à organização pai da entidade de serviço será imposta.If there is no domain hint, and no policy is explicitly assigned to the service principal, a policy that's explicitly assigned to the parent organization of the service principal is enforced.

  • Se não há nenhuma dica de domínio, e nenhuma política foi atribuída à entidade de serviço principal ou da organização, o comportamento de HDR padrão será usado.If there is no domain hint, and no policy has been assigned to the service principal or the organization, the default HRD behavior is used.

Tutorial para definir a política de HRD em um aplicativoTutorial for setting HRD policy on an application

Usaremos os cmdlets do PowerShell do Azure AD para percorrer a alguns cenários, inclusive:We'll use Azure AD PowerShell cmdlets to walk through a few scenarios, including:

  • Configurando a política de HRD para fazer a aceleração automática de um aplicativo em um locatário com um único domínio federado.Setting up HRD policy to do auto-acceleration for an application in a tenant with a single federated domain.

  • Configurando a política do HRD para fazer a aceleração automática de um aplicativo em um dos vários domínios verificados para o seu locatário.Setting up HRD policy to do auto-acceleration for an application to one of several domains that are verified for your tenant.

  • Configurando a política de HRD para permitir que um aplicativo legado faça autenticação direta de nome de usuário / senha no Azure Active Directory para um usuário federado.Setting up HRD policy to enable a legacy application to do direct username/password authentication to Azure Active Directory for a federated user.

  • Listando os aplicativos para os quais uma política é configurada.Listing the applications for which a policy is configured.

Pré-requisitosPrerequisites

Nos exemplos a seguir, você cria, atualiza, vincula e exclui políticas em entidades de serviço do aplicativo no Azure AD.In the following examples, you create, update, link, and delete policies on application service principals in Azure AD.

  1. Para começar, faça o download da visualização do cmdlet do PowerShell do Azure AD mais recente.To begin, download the latest Azure AD PowerShell cmdlet preview.

  2. Depois que você tiver baixado os cmdlets do PowerShell do Azure AD, execute o comando Conectar para entrar no Azure AD com a conta de administrador:After you have downloaded the Azure AD PowerShell cmdlets, run the Connect command to sign in to Azure AD with your admin account:

    Connect-AzureAD -Confirm
    
  3. Execute o comando a seguir para ver todas as políticas na organização:Run the following command to see all the policies in your organization:

    Get-AzureADPolicy
    

Se não retornar nada, você não terá políticas criadas no locatário.If nothing is returned, it means you have no policies created in your tenant.

Exemplo: Definir política de HRD para um aplicativoExample: Set HRD policy for an application

Neste exemplo, você cria uma política que, quando é atribuída a um aplicativo:In this example, you create a policy that when it is assigned to an application either:

  • Acelera automaticamente os usuários para uma tela de login do AD FS quando eles estão entrando em um aplicativo quando há um único domínio em seu locatário.Auto-accelerates users to an AD FS sign-in screen when they are signing in to an application when there is a single domain in your tenant.
  • Acelera automaticamente os usuários para uma tela de entrada do AD FS, há mais de um domínio federado em seu locatário.Auto-accelerates users to an AD FS sign-in screen there is more than one federated domain in your tenant.
  • Permite que o nome de usuário / senha não-interativo entre diretamente no Azure Active Directory para usuários federados para os aplicativos aos quais a política está atribuída.Enables non-interactive username/password sign in directly to Azure Active Directory for federated users for the applications the policy is assigned to.

Etapa 1: Criar uma política de HRDStep 1: Create an HRD policy

A diretiva a seguir acelera automaticamente os usuários para uma tela de entrada do AD FS quando eles estão entrando em um aplicativo quando há um único domínio em seu locatário.The following policy auto-accelerates users to an AD FS sign-in screen when they are signing in to an application when there is a single domain in your tenant.

New-AzureADPolicy -Definition @("{`"HomeRealmDiscoveryPolicy`":{`"AccelerateToFederatedDomain`":true}}") -DisplayName BasicAutoAccelerationPolicy -Type HomeRealmDiscoveryPolicy

A política a seguir acelera automaticamente os usuários para uma tela de entrada do AD FS em que há mais de um domínio federado em seu locatário.The following policy auto-accelerates users to an AD FS sign-in screen there is more than one federated domain in your tenant. Se você tiver mais de um domínio federado que autentica usuários para aplicativos, será necessário especificar o domínio para acelerar automaticamente.If you have more than one federated domain that authenticates users for applications, you need specify the domain to auto-accelerate.

New-AzureADPolicy -Definition @("{`"HomeRealmDiscoveryPolicy`":{`"AccelerateToFederatedDomain`":true, `"PreferredDomain`":`"federated.example.edu`"}}") -DisplayName MultiDomainAutoAccelerationPolicy -Type HomeRealmDiscoveryPolicy

Para criar uma política para habilitar a autenticação de nome de usuário / senha para usuários federados diretamente no Azure Active Directory para aplicativos específicos, execute o seguinte comando:To create a policy to enable username/password authentication for federated users directly with Azure Active Directory for specific applications, run the following command:

New-AzureADPolicy -Definition @("{`"HomeRealmDiscoveryPolicy`":{`"AllowCloudPasswordValidation`":true}}") -DisplayName EnableDirectAuthPolicy -Type HomeRealmDiscoveryPolicy

Para ver a nova política e obter a ObjectID, execute o seguinte comando:To see your new policy and get its ObjectID, run the following command:

Get-AzureADPolicy

Para aplicar a política de HRD depois de criá-la, você pode atribuí-la a várias entidades de serviço de aplicativo.To apply the HRD policy after you have created it, you can assign it to multiple application service principals.

Etapa 2: Localizar a entidade de serviço à qual atribuir a políticaStep 2: Locate the service principal to which to assign the policy

Você precisa da ObjectID das entidades de serviço às quais deseja atribuir a política.You need the ObjectID of the service principals to which you want to assign the policy. Há várias maneiras de encontrar a ObjectID de entidades de serviço.There are several ways to find the ObjectID of service principals.

Você pode usar o portal ou consultar Microsoft Graph.You can use the portal, or you can query Microsoft Graph. Você também pode ir até a Ferramenta Explorador do Graph e entrar na conta do Azure AD para ver todas as entidades de serviço da organização.You can also go to the Graph Explorer Tool and sign in to your Azure AD account to see all your organization's service principals.

Como você está usando o PowerShell, você pode usar o cmdlet a seguir para listar as entidades de serviço e suas IDs.Because you are using PowerShell, you can use the following cmdlet to list the service principals and their IDs.

Get-AzureADServicePrincipal

Etapa 3: Atribuir a política à entidade de serviçoStep 3: Assign the policy to your service principal

Depois que você tiver a ObjectID da entidade de serviço do aplicativo para o qual deseja configurar a aceleração automática, execute o comando a seguir.After you have the ObjectID of the service principal of the application for which you want to configure auto-acceleration, run the following command. Esse comando associa a política HRD que você criou na etapa 1 à entidade de serviço que você localizou na etapa 2.This command associates the HRD policy that you created in step 1 with the service principal that you located in step 2.

Add-AzureADServicePrincipalPolicy -Id <ObjectID of the Service Principal> -RefObjectId <ObjectId of the Policy>

Você pode repetir esse comando para cada entidade de serviço principal à qual deseja adicionar a política.You can repeat this command for each service principal to which you want to add the policy.

No caso de um aplicativo já ter uma política de HomeRealmDiscovery atribuída, você não poderá adicionar um segundo.In the case where an application already has a HomeRealmDiscovery policy assigned, you won’t be able to add a second one. Nesse caso, altere a definição da diretiva Descoberta de Domínio Residencial que é atribuída ao aplicativo para adicionar parâmetros adicionais.In that case, change the definition of the Home Realm Discovery policy that is assigned to the application to add additional parameters.

Etapa 4: Verificar a quais entidades de serviço de aplicativo a sua política de HRD está atribuídaStep 4: Check which application service principals your HRD policy is assigned to

Para verificar quais aplicativos têm a política de HRD configurada, use o cmdlet Get-AzureADPolicyAppliedObject.To check which applications have HRD policy configured, use the Get-AzureADPolicyAppliedObject cmdlet. Passe o ObjectID da política que você deseja verificar.Pass it the ObjectID of the policy that you want to check on.

Get-AzureADPolicyAppliedObject -id <ObjectId of the Policy>

Etapa 5: Pronto!Step 5: You're done!

Tente o aplicativo para verificar se a nova política está funcionando.Try the application to check that the new policy is working.

Exemplo: Listar os aplicativos para os quais a política de HRD está configuradaExample: List the applications for which HRD policy is configured

Etapa 1: Listar todas as políticas que foram criadas na organizaçãoStep 1: List all policies that were created in your organization

Get-AzureADPolicy

Observe o ObjectID da política cujas atribuições você deseja listar.Note the ObjectID of the policy that you want to list assignments for.

Etapa 2: Listar as entidades de serviço às quais a política está atribuídaStep 2: List the service principals to which the policy is assigned

Get-AzureADPolicyAppliedObject -id <ObjectId of the Policy>

Exemplo: Remover a política de HRD de um aplicativoExample: Remove an HRD policy for an application

Etapa 1: Obter a ObjectIDStep 1: Get the ObjectID

Use o exemplo anterior para obter a ObjectID da política e a entidade de serviço do aplicativo da qual você deseja removê-la.Use the previous example to get the ObjectID of the policy, and that of the application service principal from which you want to remove it.

Etapa 2: Remover a atribuição de política da entidade de serviço do aplicativoStep 2: Remove the policy assignment from the application service principal

Remove-AzureADApplicationPolicy -id <ObjectId of the Service Principal>  -PolicyId <ObjectId of the policy>

Etapa 3: Verificar a remoção listando as entidades de serviço às quais a política está atribuídaStep 3: Check removal by listing the service principals to which the policy is assigned

Get-AzureADPolicyAppliedObject -id <ObjectId of the Policy>

Próximas etapasNext steps