Ověřování

Platí pro tyto aplikace Dynamics 365:
Lidské zdroje

Tento článek obsahuje přehled ověřování pomocí Microsoft Dynamics 365 Human Resources rozhraní API (Data Application Programming Interface).

Přehled

Datové rozhraní API pro Human Resources je implementací OData. Další informace naleznete v tématuProtokol Open Data (OData).

Vaše aplikace musí ověřit svou identitu jako autorizovaný volající dříve, než API začne zpracovávat požadavky z vaší aplikace.

Fundamentals

Chcete-li volat datové rozhraní API, aplikace musí získat přístupový token z platformy Microsoft Identity. Přístupový token obsahuje informace o vaší přihlášce a oprávnění, které musí volat zdroje v aplikaci Human Resources.

Token přístupu

Přístupové tokeny vydané platformou Microsoft Identity jsou webové tokeny JavaScript Object Notation (JSON) (JWT) využívající šifrování base64. Obsahují informace (nároky), které rozhraní API dat (a jiná webová rozhraní zabezpečená platformou Microsoft Identity) používají k ověření volajícího a ověření, zda má volající správná oprávnění k provádění požadované operace. Během volání můžete považovat přístupové tokeny za neprůhledné. Měli byste vždy přenášet přístupové tokeny prostřednictvím zabezpečeného kanálu, jako je například protokol TLS (Transport Layer Security) a protokol HTTP (Hypertext Transfer Protocol Secure).

Tady je příklad přístupového tokenu, který vydává platforma Microsoft identity.

EwAoA8l6BAAU7p9QDpi/D7xJLwsTgCg3TskyTaQAAXu71AU9f4aS4rOK5xoO/SU5HZKSXtCsDe0Pj7uSc5Ug008qTI+a9M1tBeKoTs7tHzhJNSKgk7pm5e8d3oGWXX5shyOG3cKSqgfwuNDnmmPDNDivwmi9kmKqWIC9OQRf8InpYXH7NdUYNwN+jljffvNTewdZz42VPrvqoMH7hSxiG7A1h8leOv4F3Ek/oeJX6U8nnL9nJ5pHLVuPWD0aNnTPTJD8Y4oQTp5zLhDIIfaJCaGcQperULVF7K6yX8MhHxIBwek418rKIp11om0SWBXOYSGOM0rNNN59qNiKwLNK+MPUf7ObcRBN5I5vg8jB7IMoz66jrNmT2uiWCyI8MmYDZgAACPoaZ9REyqke+AE1/x1ZX0w7OamUexKF8YGZiw+cDpT/BP1GsONnwI4a8M7HsBtDgZPRd6/Hfqlq3HE2xLuhYX8bAc1MUr0gP9KuH6HDQNlIV4KaRZWxyRo1wmKHOF5G5wTHrtxg8tnXylMc1PKOtaXIU4JJZ1l4x/7FwhPmg9M86PBPWr5zwUj2CVXC7wWlL/6M89Mlh8yXESMO3AIuAmEMKjqauPrgi9hAdI2oqnLZWCRL9gcHBida1y0DTXQhcwMv1ORrk65VFHtVgYAegrxu3NDoJiDyVaPZxDwTYRGjPII3va8GALAMVy5xou2ikzRvJjW7Gm3XoaqJCTCExN4m5i/Dqc81Gr4uT7OaeypYTUjnwCh7aMhsOTDJehefzjXhlkn//2eik+NivKx/BTJBEdT6MR97Wh/ns/VcK7QTmbjwbU2cwLngT7Ylq+uzhx54R9JMaSLhnw+/nIrcVkG77Hi3neShKeZmnl5DC9PuwIbtNvVge3Q+V0ws2zsL3z7ndz4tTMYFdvR/XbrnbEErTDLWrV6Lc3JHQMs0bYUyTBg5dThwCiuZ1evaT6BlMMLuSCVxdBGzXTBcvGwihFzZbyNoX+52DS5x+RbIEvd6KWOpQ6Ni+1GAawHDdNUiQTQFXRxLSHfc9fh7hE4qcD7PqHGsykYj7A0XqHCjbKKgWSkcAg==

Pokud chcete volat rozhraní API pro data, připojte přístupový token jako nosný token k autorizační hlavičce v požadavku HTTP. Následuje příklad.

HTTP/1.1
Authorization: Bearer EwAoA8l6BAAU ... 7PqHGsykYj7A0XqHCjbKKgWSkcAg==
Host: https://{cluster}.hr.talent.dynamics.com
GET https://{cluster}.hr.talent.dynamics.com/namespaces/{namespace_guid}/data/JobTypes

Registrace nové aplikace pomocí portálu Azure

  1. Přihlaste se na portál Microsoft Azure pomocí pracovního nebo školního účtu nebo osobního účtu Microsoft.

  2. Pokud váš účet poskytuje přístup k více než jednomu tenantovi, vyberte ho v pravém horním rohu a nastavte relaci portálu na požadovaného tenanta Microsoft Entra.

  3. V levém podokně vyberte službu Microsoft Entra ID a poté vyberte možnost Registrace aplikace > Nová registrace.

  4. Jakmile se zobrazí stránka Registrovat aplikaci, zadejte informace o registraci aplikace:

    • Název: Zadejte smysluplný název aplikace, který uživatelé uvidí.

    • Podporované typy účtů: Vyberte typy účtů, které vaše aplikace podporuje.

      Podporované typy účtů Description
      Účty pouze v tomto organizačním adresáři Tuto možnost vyberte, pokud vytváříte obchodní aplikaci. Tato možnost není k dispozici, dokud neprovedete registraci aplikace v adresáři.

      Tato možnost je mapována na pouze jednoho tenanta Microsoft Entra.

      Tato možnost je výchozí, pokud neprovádíte registraci aplikace mimo adresář. V takovém případě je výchozí možností Microsoft Entra pro více tenantů a osobní účty Microsoft.

      Účty v libovolném organizačním adresáři Tuto možnost vyberte, chcete-li zaměřit všechny zákazníky z obchodního a vzdělávacího sektoru.

      Tato možnost odpovídá možnosti Microsoft Entra pouze pro více tenantů.

      Pokud jste aplikaci zaregistrovali jako Microsoft Entra jenom pro jednoho tenanta, můžete v podokně Ověřování změnit její nastavení na Microsoft Entra pro více tenantů a potom zpět na Microsoft Entra jenom pro jednoho tenanta.

      Účty v libovolném organizačním adresáři a osobních účtech Microsoft Tuto možnost vyberte, chcete-li zaměřit nejširší sadu odběratelů.

      Tato možnost odpovídá účtům Microsoft Entra pro více tenantů a osobním účtům Microsoft.

      Pokud jste zaregistrovali aplikaci jako vícenásobného klienta Microsoft Entra a osobní účty Microsoft, nemůžete změnit toto nastavení v uživatelském rozhraní (UI). Místo toho pomocí editoru manifestu aplikace změňte podporované typy účtů.

    • URI přesměrování (volitelný) – vyberte typ aplikace, kterou vytváříte : web nebo veřejný klient (Mobile & Desktop). Poté zadejte identifikátor URI přesměrování aplikace (nebo adresu URL odpovědi).

      • U webových aplikací je to základní adresa URL aplikace. Například http://localhost:31544 může být adresa URL webové aplikace, která je spuštěna v místním počítači. Uživatelé se pak pomocí této adresy URL přihlásí do aplikace webového klienta.
      • Pro veřejné klientské aplikace zadejte identifikátor URI, který Microsoft Entra používá k vrácení odpovědí na tokeny. Zadejte hodnotu specifickou pro vaši aplikaci, například myapp://auth.

      Chcete-li zobrazit konkrétní příklady webových aplikací nebo nativních aplikací, podívejte se na rychlé starty v Microsoft identity platform (dříve Microsoft Entra ID developers).

  5. V části Oprávnění API vyberte Přidat oprávnění. Pak na kartě Rozhraní API používaná mojí organizací vyhledejte Dynamics 365 Human Resources a přidejte do aplikace oprávnění user_impersonation. ID aplikace Human Resources je f9be0c49-aa22-4ec6-911a-c5da515226ff. Pomocí tohoto ID můžete zajistit, že jste zvolili správnou aplikaci.

  6. Vyberte Zaregistrovat.

    Registrace nové aplikace na portálu Azure.

Microsoft Entra přiřadí vaší aplikaci jedinečné ID aplikace (ID klienta) a přejde na stránku přehledu vaší aplikace. Pokud chcete do aplikace přidat další možnosti, vyberte další možnosti konfigurace, například možnosti pro branding a certifikáty a tajné kódy.

Načítání přístupového tokenu

Metoda načtení přístupového tokenu pro volání rozhraní API pro data lidských zdrojů závisí na technologiích, které používáte k vývoji klientské aplikace. Můžete například testovat pomocí nástroje třetí strany, vyvíjet konzolovou aplikaci nebo webovou službu jazyka C# nebo sestavit klienta JavaScript/TypeScript.

Příklad klientské aplikace C#:

using System;
using System.Net.Http;
using System.Threading.Tasks;

// requires appropriate NuGet package references in the project
using Microsoft.IdentityModel.Clients.ActiveDirectory;

namespace TalentODataPoC
{
    class Program
    {
        // prereq: This client app must be registered in Microsoft Entra ID. The app must be
        // registered as requiring permission to the Dynamics 365 for Talent API (with the Dynamics
        // HCM Workload delegated permission).
        static string clientId = "00001111-aaaa-2222-bbbb-3333cccc4444"; // This value should be obtained from Microsoft Entra and must match your registered app
        static string talentNamespaceUri = "";

        public static async Task CallTalentODataService()
        {
            // authority URI
            UriBuilder uri = new UriBuilder("https://login.microsoftonline.com/common");
            AuthenticationContext authenticationContext = new AuthenticationContext(uri.ToString());

            // request token for the resource we want to access (Human Resources). This will authenticate
            // the user and return an access token containing claims for the authenticated user.
            var authResult = await authenticationContext.AcquireTokenAsync(
                "http://hr.talent.dynamics.com", /*Talent app id or resource URI*/
                clientId, /*registered client app id*/
                new Uri("https://localhost"), /*redirect URI, as registered in your Microsoft Entra app*/
                new PlatformParameters(PromptBehavior.SelectAccount));

            // create the authorization header, which needs to be passed in the Header of the HTTP Requests to Talent
            string authHeader = authResult.CreateAuthorizationHeader();

            // HINT: paste the JWT into https://jwt.ms to decode and view it
            Console.Write("authHeader: ");
            Console.WriteLine(authHeader);
            Console.WriteLine();

            HttpClient client = new HttpClient();
            client.DefaultRequestHeaders.Add("Authorization", authHeader);

            string s;

            Console.Write("Talent Namespace URI: ");
            Console.WriteLine(talentNamespaceUri);
            Console.WriteLine();

            // call the OData service to get JobType data from Talent
            var resultOdata = await client.GetAsync(talentNamespaceUri + "data/JobTypes");
            s = await resultOdata.Content.ReadAsStringAsync();
            Console.WriteLine(s);
            Console.WriteLine();
        }

        static void Main(string[] args)
        {
            Console.WriteLine();

            // if the user passes in a single parameter, assume it is the namespaceUri for Talent
            if (args.Length == 1)
            {
                talentNamespaceUri = args[0];
            } else if (args.Length == 0)
            {
                Console.WriteLine("Enter Talent URL including namespace.");
                Console.WriteLine("Example: https://aos-rts-sf-21454f9d830-prod-westus2.hr.talent.dynamics.com/namespaces/2328af1a-2d45-4c6a-99e3-12a4c3867dcf/");
                Console.Write("> ");
                talentNamespaceUri = Console.ReadLine();
                if (!talentNamespaceUri.EndsWith("/"))
                {
                    talentNamespaceUri = talentNamespaceUri + "/";
                }
            } else
            {
                Console.WriteLine("Unexpected Arguments");
                System.Environment.Exit(1);
            }

            Task t = Program.CallTalentODataService();
            t.Wait();
        }
    }
}

Po načtení přístupového tokenu předejte token v Authorization hlavičce jako nosný token s každou žádostí, kterou odešlete do rozhraní API pro data, jak je popsáno výše.