Autenticar al usuario con los servicios web
Publicado: enero de 2017
Se aplica a: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online
Puede usar la funcionalidad externa de la autenticación de cliente de Microsoft Dynamics 365 para desarrollar sus propias aplicaciones de cliente para dispositivos móviles, como teléfonos y tabletas, así como para el escritorio de Windows 8. Esta funcionalidad también está disponible para las aplicaciones no pertenecientes a .NET.
En este tema
Información general sobre autenticación
Dependencias tecnológicas
Seguridad
Inicio de sesión de usuario y registro de la aplicación
La aplicación cliente
Extremos de autorización de OAuth
Descubra la dirección URL del extremo OAuth
Especifique un recurso de OAuth
Información general sobre autenticación
Los desarrolladores que crean aplicaciones móviles y modernas, incluyendo aplicaciones no incorporadas en .NET Framework, pueden tener acceso a los datos de negocios de Microsoft Dynamics 365 con los extremos de SOAP y OData del servicio web de organización. Este servicio web admite determinadas características de autenticación que se encuentran en el protocolo de OAuth 2.0.
La siguiente lista describe qué se permite para la autenticación de aplicaciones móviles y modernas:
Uso de los tokens web JSON en el encabezado de autorización HTTP
Autenticación del servicio OData por aplicaciones externas (fuera del explorador)
Autenticación del servicio Organization.svc/web (SOAP) por aplicaciones externas (fuera del explorador)
Dependencias tecnológicas
La siguiente tecnología es necesaria para desarrollar y ejecutar aplicaciones cliente externas que se autentican con los extremos de servicio web Microsoft Dynamics 365OData y SOAP:
La configuración de notificaciones es necesaria para las implementaciones locales.
AD FS en TechNet: Windows Server 2012 R2.
La siguiente tecnología es opcional para desarrollar y ejecutar aplicaciones cliente externas que se autentican con los extremos de servicio web Microsoft Dynamics 365OData y SOAP:
Biblioteca de autenticación de Active Directory de Microsoft Azure (ADAL)
Seguridad
La siguiente información de seguridad se aplica a esta característica de autenticación:
El token de la autenticación se almacena en el dispositivo de almacenamiento protegido. Para el sistema operativo Windows, se usa el Administrador de credenciales de Windows.
La característica hace uso de Seguridad de la capa de transporte (TLS) o Capa de sockets seguros (SSL) para las solicitudes HTTP.
Inicio de sesión de usuario y registro de la aplicación
La siguiente información se relaciona con el inicio de sesión de usuario y el registro de la aplicación.
Un contexto del explorador web controla el inicio de sesión de usuario para Biblioteca de autenticación de Active Directory de Microsoft Azure (ADAL).
El registro de la aplicación se administra con Active Directory de Azure para una implementación de Dynamics 365 (online), y Servicios de federación de Active Directory (AD FS) para implementaciones locales o Implementación con conexión a Internet (IFD). Puede usar el portal de administración de Microsoft Azure o API para registrar la aplicación con Dynamics 365 (online).
La aplicación cliente
El intervalo de operaciones que una aplicación cliente externa puede realizar se resume en la siguiente lista:
Cuando se usa el extremo OData, se admiten operaciones de crear, recuperar, actualizar y eliminar. No se admite la ejecución del mensaje o la recuperación de metadatos.
Cuando se usa el extremo SOAP (Organization.svc/web) para aplicaciones modernas y móviles, el acceso al conjunto completo de características del servicio web está disponible.
Cuando escribe el código de cliente que realiza llamadas al servicio web, se recomienda solicitar un token a través de ADAL antes de cada llamada de servicio. De esta manera, ADAL puede determinar si puede reutilizar una instancia en caché del token de acceso, se realiza una solicitud de uno nuevo mediante el token de actualización, o se pide al usuario que inicie sesión.
Descubra la dirección URL del extremo OAuth
La capacidad de detección de la entidad para la autenticación de servicio de red en tiempo de ejecución se proporciona como otro método para obtener la entidad relacionada con las URLs del proveedor de codificación rígidaOAuth en aplicaciones o archivos de configuración.
El proceso de detección se inicia al enviar una solicitud de HTTP no autorizada con la palabra "Bearer" en el encabezado de Authorization y la URL del extremo SOAP de la organización cliente como mensaje de la solicitud.
GET /XRMServices/2011/Organization.svc HTTP/1.1 Host: <org>.crm.dynamics.com Authorization: Bearer
Nota
El desafío del portador ahora es opcional. Si ejecuta un GET sin un encabezado de autorización se producirán los mismos resultados.
Se devuelve un error 401 con una respuesta que contiene un parámetro de authorization_uri. El valor de ese parámetro es una entidad URL.
HTTP/1.1 401 Unauthorized WWW-Authenticate: Bearer authorization_uri=URI
La característica de detección de la entidad se pone a disposición de los clientes SOAP solo cuando una propiedad de SdkClientVersion se encuentra en la URL del extremo SOAP de la organización cliente. A continuación, se muestra un ejemplo de URL.
https://contoso.crm.dynamics.com/XRMServices/2011/Organization.svc/web?SdkClientVersion=6.1.0.533;
El valor de SdkClientVersion puede ser cualquier número de versión que tenga al menos un separador decimal y que sea superior a 6.0.0002.0000. Se recomienda que el valor de propiedad de SdkClientVersion esté establecido en la versión de compilación del producto de ensamblados de SDK que se vincularon con la aplicación cliente.
El siguiente ejemplo de código muestra cómo obtener la URL de entidad. Tenga en cuenta que el código de ejemplo hace uso de Biblioteca de autenticación de Active Directory de Microsoft Azure (ADAL), que se puede obtener de NuGet.org. También hay versiones de código abierto de esta 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;
}
Extremos de autorización de OAuth
Un método alternativo al uso de detección de OAuth es usar extremos de autorización de OAuth bien conocidos. Al especificar una aplicación que autentique mediante los servicios web de Microsoft Dynamics 365 (en línea y local), debe usar las URLs del proveedor de OAuth en el código de autenticación, como se muestra en la siguiente tabla.
Implementación |
Dirección URL |
---|---|
Microsoft Dynamics 365 (online) |
HYPERLINK "https://login.windows.net/common/oauth2/authorize" https://login.windows.net/common/oauth2/authorize (multiempresa) https://login.windows.net/<tenant ID>/oauth2/authorize (una sola empresa) |
Microsoft Dynamics 365 (local/IFD) |
https://<serverFQDNaddress>/adfs/ls |
Sustituya la dirección del servidor de IFD, por ejemplo, contoso.com, en la servicio de token de seguridad (STS)URL. La URL de STS que se muestra es para la instalación predeterminada de AD FS. Una instalación que no es la predeterminada puede usar otra URL diferente. De forma similar, sustituya su id. de empresa donde se indique.
Se recomienda usar siempre detección de OAuth con Dynamics 365 (online), ya que los extremos de la autorización pueden cambiar en algún momento.
Especifique un recurso de OAuth
Al autenticar con Microsoft AzureActive Directory utilizando el flujo del código de autorización de OAuth, debe proporcionar un valor para el recurso de destino. La dirección web de la organización raíz, por ejemplo, https://contoso.crm.dynamics.com, necesita utilizarse como parámetro de cadena de consulta de "recursos" al llamar al extremo de autorización de 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 );
Más información:Ejemplo: aplicación moderna de escritorio OData de Windows 8
Ver también
Escriba aplicaciones modernas y móviles
Tutorial: Registrar una aplicación de Dynamics 365 con Active Directory
Autenticar usuarios en Microsoft Dynamics 365
Blog: Introducción de una nueva característica en la vista previa Windows Azure para desarrolladores de AD: Biblioteca Windows Azure de autenticación
Autenticación de CRM del lado del servidor usando Azure Active Directory
Microsoft Dynamics 365
© 2017 Microsoft. Todos los derechos reservados. Copyright