Autenticar o usuário nos serviços web
Publicado: novembro de 2016
Aplicável a: Dynamics CRM 2015
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 configuração de declarações é necessária para a implantação no local.
AD FS no TechNet: Windows Server 2012 R2.
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:
Biblioteca de Autenticação do Active Directory (ADAL) do Microsoft Azure
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 Protocolo 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 CRM 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 CRM 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 Atualização do Microsoft Dynamics CRM 2015 e Microsoft Dynamics CRM Online 2015, você precisa usar o provedor OAuthURLs em seu código de autenticação, como mostrado na tabela seguinte.
Implantação |
URL |
---|---|
Microsoft Dynamics CRM 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 CRM 2015(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 CRM 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 CRM com Ative Directory
Autenticar os usuários com os serviços Web do Microsoft Dynamics CRM 2015
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
© 2017 Microsoft. Todos os direitos reservados. Direitos autorais