Delen via


De gebruiker verifiëren met de webservices

 

Gepubliceerd: november 2016

Is van toepassing op: Dynamics CRM 2015

U kunt de externe clientverificatiefunctie van Microsoft Dynamics 365 gebruiken om uw eigen clientapps te ontwikkelen voor mobiele apparaten, zoals tablets en telefoons, evenals voor het Windows 8 bureaublad. Deze functie is ook beschikbaar voor niet-.NET toepassingen.

In dit onderwerp

Overzicht van verificatie

Technologieafhankelijkheden

Beveiliging

Aanmeldings- en toepassingregistratie van gebruikers

De clienttoepassing

OAuth autorisatie-eindpunten

Ontdek de OAuth-eindpunt-URL

Geef een OAuth-resource op

Overzicht van verificatie

Ontwikkelaars die moderne en mobiele apps maken, waaronder apps die niet op .NET Framework zijn gebouwd, hebben toegang tot Microsoft Dynamics 365 zakelijke gegevens via de SOAP en OData-eindpunten van de organisatiewebservice. Deze webservice ondersteunt bepaalde verificatiemogelijkheden in het OAuth 2.0 protocol.

De volgende lijst beschrijft wat wordt ondersteund voor moderne en mobiele appverificatie:

  • Gebruik van JSON webtokens in de HTTP autorisatiekoptekst

  • Verificatie van de OData service door externe apps (behalve de browser)

  • Verificatie van de Organization.svc/web (SOAP) service door externe toepassingen (behalve de browser)

Technologieafhankelijkheden

De volgende technologie is vereist voor het ontwikkelen en uitvoeren van externe clienttoepassingen die verifiëren met de Microsoft Dynamics 365OData en SOAP webservice-eindpunten:

De volgende technologie is optioneel voor het ontwikkelen en uitvoeren van externe clienttoepassingen die verifiëren met de Microsoft Dynamics 365OData en SOAP webservice-eindpunten:

Beveiliging

De volgende beveiligingsgegevens zijn van toepassing op deze verificatiefunctie:

  • Het verificatietoken is opgeslagen op het apparaat in een beveiligde opslagruimte. Voor het Windows-besturingssysteem wordt Referentiebeheer van Windows gebruikt.

  • De functie maakt gebruik van Secure Sockets Layer (SSL) voor HTTP-aanvragen.

Aanmeldings- en toepassingregistratie van gebruikers

De volgende informatie gaat over aanmeldings- en toepassingsregistratie van gebruikers.

  • Aanmelding van de gebruiker voor de Microsoft Azure-bibliotheek voor Active Directory-verificatie (ADAL) wordt verwerkt door een webbrowsercontext.

  • Toepassingregistratie wordt beheerd door Azure Active Directory voor een CRM Online installatie, en Active Directory Federation Services (AD FS) voor on-premises of Internet Facing Deployment (IFD). U kunt het Microsoft Azure beheersportal of API gebruiken om uw app te registreren bij CRM Online.

De clienttoepassing

De reeks bewerkingen die een externe clienttoepassing kan uitvoeren, wordt samengevat in de volgende lijst:

  • Wanneer u het eindpunt OData gebruikt, worden de bewerkingen Maken, Ophalen, Bijwerken en Verwijderen worden ondersteund. Er is geen ondersteuning voor berichtuitvoering of het ophalen van metagegevens.

  • Bij gebruik van het SOAP eindpunt (Organization.svc/web) voor moderne en mobiele toepassingen, is toegang beschikbaar tot alle functies van de volledige webservice.

Als u clientcode schrijft die oproepen naar de webservice maakt, wordt het aanbevolen via ADAL om een token te verzoeken vóór elke serviceaanroep. ADAL kan dan bepalen of een exemplaar van de toegangstoken uit de cache kan worden hergebruikt, dat een nieuw exemplaar moet worden aangevraagd met het vernieuwingstoken of dat de gebruiker moet worden gevraagd zich aan te melden.

Ontdek de OAuth-eindpunt-URL

De mogelijkheid om de bevoegdheid voor webserviceverificatie te ontdekken tijdens runtime, wordt aangeboden als alternatieve methode om de bevoegdheid te krijgen in vergelijking met het hardcoderen van OAuth provider URLs in toepassingen of configuratiebestanden.

Het ontdekkingsproces wordt gestart door een onbevoegde HTTP aanvraag te verzenden met het woord "Bearer" in de "Authorization" koptekst en het SOAP eindpunt URL van de houder als aanvraagbericht.

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

Notitie

De bearer verificatie is nu optioneel. Een GET uitvoeren zonder autorisatieheader levert dezelfde resultaten op.

Er wordt een 401-fout geretourneerd met een respons die een authorization_uri bevat. De waarde van die parameter is een bevoegdheid URL.

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

De functie voor het controleren van bevoegdheden is alleen beschikbaar voor SOAP-clients wanneer een eigenschap SdkClientVersion aanwezig is in het SOAP-eindpunt-URL van de houder. Een voorbeeld URL wordt hieronder weergegeven.

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

De SdkClientVersion waarde kan elk versienummer zijn dan ten minste een decimaal punt heeft en groter is dan 6.0.0002.0000. Het is aanbevolen dat de SdkClientVersion eigenschapwaarde wordt ingesteld op het versienummer van de SDK-assemblies die aan de clienttoepassing zijn gekoppeld.

Het volgende codevoorbeeld toont hoe u de bevoegdheid URL verkrijgt. Merk op dat de voorbeeldcode de Microsoft Azure-bibliotheek voor Active Directory-verificatie (ADAL) gebruikt, dat kan worden verkregen van NuGet.org. Er zijn tevens open source-versies van deze bibliotheek voor Android en 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;
}

OAuth autorisatie-eindpunten

Een alternatieve methode om OAuth opsporing te gebruiken, is om goedgekende OAuth autorisatie-eindpunten te gebruiken. Wanneer u een app schrijft die verifieert bij de Microsoft Dynamics CRM 2015 en Microsoft Dynamics CRM Online 2015 Update webservices, moet u de OAuth provider URLs in uw verificatiecode gebruiken, zoals aangegeven in de volgende tabel.

Installatie

URL

Microsoft Dynamics CRM Online

HYPERLINK "https://login.windows.net/common/oauth2/authorize" https://login.windows.net/common/oauth2/authorize (meerdere houders)

https://login.windows.net/<tenant ID>/oauth2/authorize (enkele houder)

Microsoft Dynamics CRM 2015 (on-premises/IFD)

https://<serverFQDNaddress>/adfs/ls

Vervang het adres van uw IFD-server, bijvoorbeeld contoso.com, in de beveiligingstokenservice (STS)URL. De getoonde STS URL is voor de standaardinstallatie van AD FS. Een niet-standaardinstallatie kan een andere URL gebruiken. Op dezelfde manier vervangt u uw houder-id waar nodig.

Het is aanbevolen om altijd OAuth opsporing te gebruiken met CRM Online aangezien de autorisatie-eindpunten in de toekomst kunnen worden gewijzigd.

Geef een OAuth-resource op

Wanneer u verifieert met Microsoft AzureActive Directory met behulp van de OAuth autorisatiecodestroom, moet u een waarde opgeven voor de doelresource. Het hoofdadres van de organisatie, bijvoorbeeld: https://contoso.crm.dynamics.com, moet als de "resource" querytekenreeksparameter worden gebruikt in de aanroep naar het OAuth autorisatie-eindpunt.

// 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 );

Meer informatie:Voorbeeld: Windows 8 bureaublad moderne OData-app

Zie ook

Mobiele en moderne apps schrijven
Overzicht: een CRM-app registreren met Active Directory
Gebruikers verifiëren met Microsoft Dynamics CRM 2015-webservices
Blog: Een nieuwe functie introduceren in de Azure AD Developer Preview: de Azure Authentication Library
Verificatie in CRM op de server door middel van Azure Active Directory

© 2017 Microsoft. Alle rechten voorbehouden. Auteursrecht