Share via


Autenticar o usuário nos serviços web

 

Publicado: janeiro de 2017

Aplicável a: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Use o recurso externo de autenticação do cliente do Microsoft Dynamics 365 para desenvolver seus próprios apps de cliente para dispositivos móveis, como telefones e tablets, assim como para desktop Windows 8. Esse recurso também está disponível para aplicativos não .NET.

Neste tópico

Visão geral da autenticação

Dependências de tecnologia

Segurança

Acesso de usuário e registro do aplicativo

O aplicativo cliente

Pontos de extremidade de autorização de OAuth

Descubra a URL de ponto de extremidade OAuth

Especifique um recurso de OAuth

Visão geral da autenticação

Os desenvolvedores que criam apps modernos e móveis, incluindo os apps não criados no .NET Framework, podem acessar dados corporativos de Microsoft Dynamics 365 por meio dos endpoints do SOAP e OData do serviço Web de organização. Esse serviço de web suporta certos recursos de autenticação encontrada no protocolo OAuth 2.0.

A lista a seguir descreve o que é suportado para autenticação de aplicativos móveis e modernos:

  • Uso dos tokens web JSON no cabeçalho HTTP de autorização

  • Autenticação para o serviço OData por meio de apps externos (fora do browser)

  • Autenticação para o serviço Organization.svc/web (SOAP) por meio de aplicativos externos (fora do browser)

Dependências de tecnologia

A tecnologia a seguir é necessária para desenvolver e executar aplicativos cliente externos que são autenticados com os pontos de extremidade do servi;o Web Microsoft Dynamics 365OData e SOAP:

A tecnologia a seguir é opcional para desenvolver e executar aplicativos cliente esternos que são autenticados com os pontos de extremidade do serviço da web Microsoft Dynamics 365OData e SOAP:

Segurança

As seguintes informações de acesso se aplicam ao recurso de autenticação:

  • O token de autenticação é armazenado no dispositivo em armazenamento protegido. No sistema operacional Windows, o Gerenciador de Credenciais do Windows é usado.

  • O recurso faz uso do Transport Layer Security (TLS) ou Secure Sockets Layer (SSL) para solicitações HTTP.

Acesso de usuário e registro do aplicativo

As informações a seguir estão relacionadas ao acesso do usuário e ao registro do aplicativo.

  • O acesso do usuário no Biblioteca de Autenticação do Active Directory (ADAL) do Microsoft Azure é conduzido por um contexto do navegador web.

  • O registro do aplicativo é gerenciado por meio do Azure Active Directory para implantação do Dynamics 365 (online) e Serviços de Federação do Active Directory (AD FS) para o local ou Implantação para a Internet (IFD). Você pode usar o portal de gerenciamento Microsoft Azure ou API para registrar seu aplicativo com Dynamics 365 (online).

O aplicativo cliente

O intervalo de operações que um aplicativo de cliente externo pode executar é resumido na seguinte lista:

  • Ao usar o ponto de extremidade OData, tem suporte para operações de Criar, Recuperar, Atualizar e Excluir. Não há suporte para a execução de mensagem ou recuperação de metadados.

  • Ao usar o ponto de extremidade SOAP (Organization.svc/web) para aplicativos modernos e móveis, o acesso a todas as características de configuração de serviço web está disponível.

Quando você escreve o código do cliente que faz chamadas para o serviço da Web, recomendamos solicitar um token com ADAL antes de cada chamada de serviço. Dessa forma, o ADAL pode determinar se deve reutilizar uma instância armazenada em cache do token de acesso, faz uma solicitação para um novo usando o token de atualização ou solicita que o usuário entre.

Descubra a URL de ponto de extremidade OAuth

A capacidade de descoberta que a autoridade de autenticação de serviço da Web em tempo de execução é fornecida como um método alternativo para obter a autoridade como comparada ao provedorURLs codificado OAuth nos aplicativos ou nos arquivos de configuração.

O processo de descoberta é iniciado enviando uma solicitação HTTP não autorizada com a palavra “Bearer" no cabeçalho Authorization e no ponto de extremidade da organização do locatário SOAPURL como as mensagens da solicitação.

GET /XRMServices/2011/Organization.svc HTTP/1.1 Host: <org>.crm.dynamics.com Authorization: Bearer

Observação

O desafio de portador agora é opcional. Executar um GET sem um cabeçalho de autorização gera os mesmos resultados.

Um erro 401 aparece com uma resposta que contém um parâmetro de authorization_uri. Aquele valor daquele parâmetro é uma autoridade URL.

HTTP/1.1 401 Unauthorized WWW-Authenticate: Bearer authorization_uri=URI

O recurso de descoberta de autoridade é disponibilizado a clientes SOAP somente quando uma propriedade SdkClientVersion está presente na URL do ponto de extremidade SOAP da organização do locatário. Um exemplo URL é mostrado a seguir.

https://contoso.crm.dynamics.com/XRMServices/2011/Organization.svc/web?SdkClientVersion=6.1.0.533;

O valor de SdkClientVersion pode ser qualquer número de versão que tenha pelo menos um ponto decimal e for maior que 6.0.0002.0000. Recomenda-se que o valor da propriedade SdkClientVersion seja definido para a versão de compilação do produto para assemblies SDK que foram vinculados ao aplicativo do cliente.

O exemplo de código a seguir demonstra como obter a autoridade URL. Observe que o código de exemplo usa o Biblioteca de Autenticação do Active Directory (ADAL) do Microsoft Azure, que pode ser obtido no NuGet.org. Também há algumas versões com fontes em aberto nessa biblioteca para Android e iOS.


/// <summary>
/// Discover the authentication authority.
/// </summary>
/// <param name="serviceUrl">The URL of the organization's SOAP endpoint. </param>
/// <returns>The authority URL.</returns>
/// <remarks>The service URL must contain the SdkClient property.</remarks>
/// <example>https://contoso.crm.dynamics.com/XRMServices/2011/Organization.svc/web?SdkClientVersion=6.1.0.533;</example>
public static string DiscoveryAuthority(Uri serviceUrl)
{
    // Use AuthenticationParameters to send a request to the organization's endpoint and
    // receive tenant information in the 401 challenge. 
    Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationParameters parameters = null;
    HttpWebResponse response = null;
    try
    {
        // Create a web request where the authorization header contains the word "Bearer".
        HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(serviceUrl);

        // The response is to be encoded.
        httpWebRequest.ContentType = "application/x-www-form-urlencoded";
        response = (HttpWebResponse)httpWebRequest.GetResponse();
    }

    catch (WebException ex)
    {
        response = (HttpWebResponse)ex.Response;

        // A 401 error should be returned. Extract any parameters from the response.
        // The response should contain an authorization_uri parameter.
        parameters = Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationParameters.
            CreateFromResponseAuthenticateHeader((response.Headers)["WWW-Authenticate"]);
    }
    finally
    {
        if (response != null)
            response.Dispose();
    }
    // Return the authority URL.
    return parameters.Authority;
}

Pontos de extremidade de autorização de OAuth

Um método alternativo para usar OAuth a descoberta é usar pontos de extremidade de autorização OAuth conhecidos. Ao escrever um aplicativo que autentica com os serviços Web de Microsoft Dynamics 365 (online e local), você precisa usar o provedor OAuthURLs em seu código de autenticação, como mostrado na tabela seguinte.

Implantação

URL

Microsoft Dynamics 365 (online)

HYPERLINK "https://login.windows.net/common/oauth2/authorize" https://login.windows.net/common/oauth2/authorize (multilocatário)

https://login.windows.net/<tenant ID>/oauth2/authorize (locatário único)

Microsoft Dynamics 365(Local/IFD)

https://<serverFQDNaddress>/adfs/ls

Substitua o endereço do seu servidor IFD, por exemplo contoso.com no serviço de token de segurança (STS)URL. O STS URL mostrado é para instalação padrão doAD FS. A instalação fora do padrão pode usar uma URL diferente. De maneira semelhante, substitua seu ID do locatário onde indicado.

Recomenda-se que você sempre use a descoberta OAuth com Dynamics 365 (online) uma vez que os pontos de extremidade de autorização podem mudar futuramente.

Especifique um recurso de OAuth

Ao autenticar com Microsoft AzureActive Directory usando o fluxo de código de autorização OAuth, forneça um valor para o recurso de destino. O endereço Web de organização raiz, por exemplo: https://contoso.crm.dynamics.com, precisa ser usado com o parâmetro de ligação de consulta "recurso" na solicitação do ponto de extremidade de autorização OAuth.

// Obtain an authentication token to access the web service.
String resource = “https://contoso.crm.dynamics.com”; 
_authenticationContext = new AuthenticationContext(_oauthUrl, false );
AuthenticationResult result = await _authenticationContext.AcquireTokenAsync( resource, clientID );

Para obter mais informações:Exemplo: Aplicativo OData moderno de área de trabalho do Windows 8

Confira Também

Crie aplicativos móveis e modernos
Passo a passo: Registrar o aplicativo Dynamics 365 com Ative Directory
Autenticar usuários no Microsoft Dynamics 365
Blog: Apresentando um novo recurso na pré-visualização do desenvolvedor Azure AD: a biblioteca de autenticação do Azure
Autenticação CRM do servidor usando o Azure Active Directory

Microsoft Dynamics 365

© 2017 Microsoft. Todos os direitos reservados. Direitos autorais