Del via


Godkend brugeren med webtjenesterne

 

Udgivet: januar 2017

Gælder for: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Du kan bruge ekstern klientgodkendelse i Microsoft Dynamics 365 til at udvikle dine egne klientapps til mobilenheder som tabletter og telefoner og til Windows 8-skrivebordet. Denne funktion er også tilgængelig for ikke-.NET-programmer.

Dette emne indeholder

Oversigt over godkendelse

Teknologiafhængigheder

Sikkerhed

Bruger-logon og programregistrering

Klientprogrammet

OAuth-godkendelsesslutpunkter

Oplev OAuth-slutpunkt-URL

Angiv en OAuth-ressource

Oversigt over godkendelse

Udviklere, der opretter moderne og mobile apps, herunder apps, der ikke er baseret på .NET Framework, kan få adgang til Microsoft Dynamics 365-virksomhedsdata via SOAP- og OData-slutpunkterne for organisationens webtjeneste. Denne webtjeneste understøtter visse godkendelsesfunktioner, der findes i OAuth 2.0-protokollen.

Følgende liste beskriver, hvad der understøttes til moderne og mobilappgodkendelse:

  • Brug af JSON-webtokens i HTTP-godkendelsesheader

  • Godkendelse til OData-service af eksterne apps (uden for browseren)

  • Godkendelse til Organization.svc/web-service (SOAP) af eksterne programmer (uden for browseren)

Teknologiafhængigheder

Den følgende teknologi kræves for at udvikle og udføre eksterne klientprogrammer, der godkendes af Microsoft Dynamics 365OData- og SOAP-webtjenesteslutpunkter:

Den følgende teknologi er valgfri for at udvikle og udføre eksterne klientprogrammer, der godkendes af Microsoft Dynamics 365OData- og SOAP-webtjenesteslutpunkter:

Sikkerhed

De følgende sikkerhedsoplysninger gælder for denne godkendelsesfunktion:

  • Godkendelsestoken er gemt på enheden i beskyttet lager. For Windows-operativsystemet bruges Windows Legitimationsstyring.

  • Funktionen gør brug af TLS (Transport Layer Security) eller SSL (Secure Sockets Layer) for HTTP-anmodninger.

Bruger-logon og programregistrering

Følgende oplysninger er relateret til bruger-logon og programregistrering.

  • Bruger-logon for Microsoft Azure Active Directory-godkendelsesbibliotek (ADAL) håndteres af en webbrowserkontekst.

  • Registrering af programmet styres via Azure Active Directory for en Dynamics 365 (online)-udrulning og Active Directory Federation Services (AD FS) til det lokale miljø eller Installation med adgang via internet. Du kan bruge Microsoft Azure-administrationsportalen eller API til at registrere din app hos Dynamics 365 (online).

Klientprogrammet

De handlinger, der kan udføres af et eksternt klientprogram, er vist på følgende liste:

  • Når OData-slutpunktet bruges, understøttes Opret, Hent, Opdater og Slet. Der er ingen understøttelse af meddelelsesudførelse eller hentning af metadata.

  • Når du bruger SOAP-slutpunktet (Organization.svc/web) til moderne og mobilprogrammer, er adgang til den fulde webtjenestefunktion tilgængelig.

Når du skriver klientkode, der foretager kald til webtjenesten, anbefales det, at anmode om et token gennem ADAL før hvert servicekald. På denne måde kan ADAL afgøre, om den kan genbruge en cachelagret forekomst af adgangstokenet, fremsætte en anmodning om en ny ved at opdatere token eller bede brugeren om at logge på.

Oplev OAuth-slutpunkt-URL

Muligheden for at opleve myndigheden for godkendelse af webtjeneste på kørselstidspunktet leveres som en alternativ metode til at blive godkendt i forhold til hardcoding af OAuth-udbyderes URLs i programmer eller konfigurationsfiler.

Opdagelsen starter ved at sende en uautoriseret HTTP-anmodning med ordet "Bearer" i Authorization-headeren og lejerorganisationens SOAP-slutpunkts URL som anmodningsmeddelelsen.

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

Bemærk

Bærerudfordringen er nu valgfri. Kørsel af GET uden en godkendelsesheader giver de samme resultater.

Fejlmeddelelsen 401 returneres med et svar, der indeholder en authorization_uri-parameter. Værdien af denne parameter er en myndigheds URL.

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

Funktionen, der finder en myndighed, er kun tilgængelig for SOAP-klienter, når der findes en SdkClientVersion-egenskab i URL'en til lejerorganisationens SOAP-slutpunkt. Et eksempel på URL er vist nedenfor.

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

Værdien af SdkClientVersion kan være et hvilket som helst versionsnummer med mindst ét decimalpunkt og større end 6.0.0002.0000. Det anbefales, at SdkClientVersion-egenskabsværdien angives til produktets buildversion af SDK-assemblyer, der er knyttet til klientprogrammet.

Følgende kodeeksempel viser, hvordan du anskaffer myndighedens URL. Bemærk, at eksempelkoden gør brug af Microsoft Azure Active Directory-godkendelsesbibliotek (ADAL), som kan fås fra NuGet.org. Der er også versioner af biblioteket med åben kilde til Android og 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-godkendelsesslutpunkter

En alternativ metode til brug af OAuth-registrering er at bruge velkendte OAuth-godkendelsesslutpunkter. Når du skriver en app, der godkender hos Microsoft Dynamics 365 (online og i det lokale miljø)-webtjenester, skal du bruge OAuth-udbyderens URLs i din godkendelseskode, som vist i følgende tabel.

Udrulning

URL-adresse

Microsoft Dynamics 365 (online)

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

https://login.windows.net/<tenant ID>/oauth2/authorize (enkelt lejer)

Microsoft Dynamics 365 (det lokale miljø/IFD)

https://<serverFQDNaddress>/adfs/ls

Indsæt adressen på din IFD-server, for eksempel contoso.com i sikkerhedstokentjeneste (STS)URL. Den viste STS-URL er til standardinstallationen af AD FS. En ikke-standardinstallation kan bruge en anden URL. På samme måde kan du indsætte dit lejer-id, hvor det er angivet.

Det anbefales, at du altid bruger OAuth-registrering sammen med med Dynamics 365 (online), da godkendelsesslutpunkterne kan ændres på et senere tidspunkt.

Angiv en OAuth-ressource

Når der godkendes med Microsoft AzureActive Directory ved hjælp af OAuth-godkendelseskode, skal du angive en værdi for destinationsressourcen. Rodorganisationens webadresse, for eksempel: https://contoso.crm.dynamics.com, skal bruges som en forespørgselsstrengparameteren "ressource" i kaldet til OAuth-godkendelsesslutpunktet.

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

Flere oplysninger:Eksempel: Moderne OData-app til Windows 8-deksktop

Se også

Skriv mobilapps og moderne apps
Gennemgang: Registrere en Dynamics 365-app med Active Directory
Godkende brugere i Microsoft Dynamics 365
Blog: Introduktion af en ny kapacitet i Azure AD Developer Eksempel: Azure Authentication Bibliotek
CRM-godkendelse på serversiden med Azure Active Directory

Microsoft Dynamics 365

© 2017 Microsoft. Alle rettigheder forbeholdes. Ophavsret