Přístup k rozhraní API Přehledy aplikací s ověřováním Microsoft Entra

Žádost o dotaz můžete odeslat pomocí koncového bodu https://api.applicationinsights.ioPřehledy aplikace Azure Monitor . Pokud chcete získat přístup ke koncovému bodu, musíte se ověřit prostřednictvím ID Microsoft Entra.

Nastavení ověřování

Pro přístup k rozhraní API zaregistrujete klientskou aplikaci s ID Microsoft Entra a požádáte o token.

  1. Zaregistrujte aplikaci v Microsoft Entra ID.

  2. Na stránce přehledu aplikace vyberte oprávnění rozhraní API.

  3. Vyberte Přidat oprávnění.

  4. Na rozhraníCH API používá moje organizace kartu, vyhledejte Přehledy aplikace a ze seznamu vyberte Rozhraní API Přehledy aplikace.

  5. Vyberte Delegovaná oprávnění.

  6. Zaškrtněte políčko Data.Read .

  7. Vyberte Přidat oprávnění.

Teď, když je vaše aplikace zaregistrovaná a má oprávnění k používání rozhraní API, udělte aplikaci přístup k vašemu prostředku Přehledy aplikace.

  1. Na stránce přehledu prostředků Přehledy aplikace vyberte Řízení přístupu (IAM).

  2. Vyberte Přidat přiřazení role.

  3. Vyberte roli Čtenář a pak vyberte Členové.

  4. Na kartě Členové zvolte Vybrat členy.

  5. Do pole Vybrat zadejte název aplikace.

  6. Vyberte aplikaci a zvolte Vybrat.

  7. Vyberte Zkontrolovat + přiřadit.

  8. Po dokončení nastavení a oprávnění služby Active Directory požádejte o autorizační token.

Poznámka:

V tomto příkladu jsme použili roli Čtenář. Tato role je jednou z mnoha předdefinovanýchrolích Můžete vytvořit podrobnější role a oprávnění.

Vyžádání autorizačního tokenu

Než začnete, ujistěte se, že máte všechny hodnoty potřebné k úspěšnému provedení požadavku. Všechny požadavky vyžadují:

  • ID vašeho tenanta Microsoft Entra.
  • ID aplikace Přehledy – pokud aktuálně používáte klíče rozhraní API, jedná se o stejné ID aplikace.
  • ID klienta Microsoft Entra pro aplikaci.
  • Tajný kód klienta Microsoft Entra pro aplikaci.

Rozhraní API pro Přehledy aplikací podporuje ověřování Microsoft Entra se třemi různými toky Microsoft Entra ID OAuth2:

  • Přihlašovací údaje klienta
  • Autorizační kód
  • Implicitní

Tok přihlašovacích údajů klienta

V toku přihlašovacích údajů klienta se token používá s koncovým bodem Přehledy aplikace. Při registraci aplikace v Microsoft Entra ID se provede jedna žádost o přijetí tokenu pomocí přihlašovacích údajů zadaných pro vaši aplikaci v předchozím kroku.

https://api.applicationinsights.io Použijte koncový bod.

Adresa URL tokenu přihlašovacích údajů klienta (požadavek POST)

    POST /<your-tenant-id>/oauth2/token
    Host: https://login.microsoftonline.com
    Content-Type: application/x-www-form-urlencoded
    
    grant_type=client_credentials
    &client_id=<app-client-id>
    &resource=https://api.applicationinsights.io
    &client_secret=<app-client-secret>

Úspěšný požadavek obdrží přístupový token v odpovědi:

    {
        token_type": "Bearer",
        "expires_in": "86399",
        "ext_expires_in": "86399",
        "access_token": ""eyJ0eXAiOiJKV1QiLCJ.....Ax"
    }

Použijte token v požadavcích na koncový bod Přehledy aplikace:

    POST /v1/apps/yous_app_id/query?timespan=P1D
    Host: https://api.applicationinsights.io
    Content-Type: application/json
    Authorization: Bearer <your access token>

    Body:
    {
    "query": "requests | take 10"
    }

Příklad odpovědi:

  "tables": [
    {
      "name": "PrimaryResult",
      "columns": [
        {
          "name": "timestamp",
          "type": "datetime"
        },
        {
          "name": "id",
          "type": "string"
        },
        {
          "name": "source",
          "type": "string"
        },
        {
          "name": "name",
          "type": "string"
        },
        {
          "name": "url",
          "type": "string"
        },
        {
          "name": "success",
          "type": "string"
        },
        {
          "name": "resultCode",
          "type": "string"
        },
        {
          "name": "duration",
          "type": "real"
        },
        {
          "name": "performanceBucket",
          "type": "string"
        },
        {
          "name": "customDimensions",
          "type": "dynamic"
        },
        {
          "name": "customMeasurements",
          "type": "dynamic"
        },
        {
          "name": "operation_Name",
          "type": "string"
        },
        {
          "name": "operation_Id",
          "type": "string"
        },
        {
          "name": "operation_ParentId",
          "type": "string"
        },
        {
          "name": "operation_SyntheticSource",
          "type": "string"
        },
        {
          "name": "session_Id",
          "type": "string"
        },
        {
          "name": "user_Id",
          "type": "string"
        },
        {
          "name": "user_AuthenticatedId",
          "type": "string"
        },
        {
          "name": "user_AccountId",
          "type": "string"
        },
        {
          "name": "application_Version",
          "type": "string"
        },
        {
          "name": "client_Type",
          "type": "string"
        },
        {
          "name": "client_Model",
          "type": "string"
        },
        {
          "name": "client_OS",
          "type": "string"
        },
        {
          "name": "client_IP",
          "type": "string"
        },
        {
          "name": "client_City",
          "type": "string"
        },
        {
          "name": "client_StateOrProvince",
          "type": "string"
        },
        {
          "name": "client_CountryOrRegion",
          "type": "string"
        },
        {
          "name": "client_Browser",
          "type": "string"
        },
        {
          "name": "cloud_RoleName",
          "type": "string"
        },
        {
          "name": "cloud_RoleInstance",
          "type": "string"
        },
        {
          "name": "appId",
          "type": "string"
        },
        {
          "name": "appName",
          "type": "string"
        },
        {
          "name": "iKey",
          "type": "string"
        },
        {
          "name": "sdkVersion",
          "type": "string"
        },
        {
          "name": "itemId",
          "type": "string"
        },
        {
          "name": "itemType",
          "type": "string"
        },
        {
          "name": "itemCount",
          "type": "int"
        }
      ],
      "rows": [
        [
          "2018-02-01T17:33:09.788Z",
          "|0qRud6jz3k0=.c32c2659_",
          null,
          "GET Reports/Index",
          "http://fabrikamfiberapp.azurewebsites.net/Reports",
          "True",
          "200",
          "3.3833",
          "<250ms",
          "{\"_MS.ProcessedByMetricExtractors\":\"(Name:'Requests', Ver:'1.0')\"}",
          null,
          "GET Reports/Index",
          "0qRud6jz3k0=",
          "0qRud6jz3k0=",
          "Application Insights Availability Monitoring",
          "9fc6738d-7e26-44f0-b88e-6fae8ccb6b26",
          "us-va-ash-azr_9fc6738d-7e26-44f0-b88e-6fae8ccb6b26",
          null,
          null,
          "AutoGen_49c3aea0-4641-4675-93b5-55f7a62d22d3",
          "PC",
          null,
          null,
          "52.168.8.0",
          "Boydton",
          "Virginia",
          "United States",
          null,
          "fabrikamfiberapp",
          "RD00155D5053D1",
          "cf58dcfd-0683-487c-bc84-048789bca8e5",
          "fabrikamprod",
          "5a2e4e0c-e136-4a15-9824-90ba859b0a89",
          "web:2.5.0-33031",
          "051ad4ef-0776-11e8-ac6e-e30599af6943",
          "request",
          "1"
        ],
        [
          "2018-02-01T17:33:15.786Z",
          "|x/Ysh+M1TfU=.c32c265a_",
          null,
          "GET Home/Index",
          "http://fabrikamfiberapp.azurewebsites.net/",
          "True",
          "200",
          "716.2912",
          "500ms-1sec",
          "{\"_MS.ProcessedByMetricExtractors\":\"(Name:'Requests', Ver:'1.0')\"}",
          null,
          "GET Home/Index",
          "x/Ysh+M1TfU=",
          "x/Ysh+M1TfU=",
          "Application Insights Availability Monitoring",
          "58b15be6-d1e6-4d89-9919-52f63b840913",
          "emea-se-sto-edge_58b15be6-d1e6-4d89-9919-52f63b840913",
          null,
          null,
          "AutoGen_49c3aea0-4641-4675-93b5-55f7a62d22d3",
          "PC",
          null,
          null,
          "51.141.32.0",
          "Cardiff",
          "Cardiff",
          "United Kingdom",
          null,
          "fabrikamfiberapp",
          "RD00155D5053D1",
          "cf58dcfd-0683-487c-bc84-048789bca8e5",
          "fabrikamprod",
          "5a2e4e0c-e136-4a15-9824-90ba859b0a89",
          "web:2.5.0-33031",
          "051ad4f0-0776-11e8-ac6e-e30599af6943",
          "request",
          "1"
        ]
      ]
    }
  ]
}

Tok autorizačního kódu

Hlavní podporovaný tok OAuth2 je prostřednictvím autorizačních kódů. Tato metoda vyžaduje dva požadavky HTTP k získání tokenu, pomocí kterého se má volat rozhraní API služby Azure Monitor application Přehledy. Existují dvě adresy URL s jedním koncovým bodem na požadavek. Jejich formáty jsou popsány v následujících částech.

Adresa URL autorizačního kódu (požadavek GET)

    GET https://login.microsoftonline.com/YOUR_Azure AD_TENANT/oauth2/authorize?
    client_id=<app-client-id>
    &response_type=code
    &redirect_uri=<app-redirect-uri>
    &resource=https://api.applicationinsights.io

Když se na adresu URL autorizace vytvoří požadavek, client_id je ID aplikace z vaší aplikace Microsoft Entra zkopírované z nabídky vlastností aplikace. Redirect_uri je adresa URL domovské stránky nebo přihlášení ze stejné aplikace Microsoft Entra. Pokud je žádost úspěšná, tento koncový bod vás přesměruje na přihlašovací stránku, kterou jste zadali při registraci s autorizačním kódem připojeným k adrese URL. Prohlédněte si následující příklad:

    http://<app-client-id>/?code=AUTHORIZATION_CODE&session_state=STATE_GUID

V tuto chvíli jste získali autorizační kód, který teď potřebujete k vyžádání přístupového tokenu.

Adresa URL tokenu autorizačního kódu (požadavek POST)

    POST /YOUR_Azure AD_TENANT/oauth2/token HTTP/1.1
    Host: https://login.microsoftonline.com
    Content-Type: application/x-www-form-urlencoded
    
    grant_type=authorization_code
    &client_id=<app client id>
    &code=<auth code fom GET request>
    &redirect_uri=<app-client-id>
    &resource=https://api.applicationinsights.io
    &client_secret=<app-client-secret>

Všechny hodnoty jsou stejné jako předtím, s některými sčítáními. Autorizační kód je stejný kód, který jste obdrželi v předchozím požadavku po úspěšném přesměrování. Kód se zkombinuje s klíčem získaným z aplikace Microsoft Entra. Pokud jste klíč neuložili, můžete ho odstranit a vytvořit nový z karty kláves v nabídce aplikace Microsoft Entra. Odpověď je řetězec JSON, který obsahuje token s následujícím schématem. Pro hodnoty tokenu jsou uvedené typy.

Příklad odpovědi:

    {
        "access_token": "eyJ0eXAiOiJKV1QiLCJ.....Ax",
        "expires_in": "3600",
        "ext_expires_in": "1503641912",
        "id_token": "not_needed_for_app_insights",
        "not_before": "1503638012",
        "refresh_token": "eyJ0esdfiJKV1ljhgYF.....Az",
        "resource": "https://api.applicationinsights.io",
        "scope": "Data.Read",
        "token_type": "bearer"
    }

Část přístupového tokenu této odpovědi je to, co prezentujete v rozhraní API Přehledy aplikace v Authorization: Bearer hlavičce. Obnovovací token můžete použít také v budoucnu k získání nového access_token a refresh_token, když vaše zařízení přestane být zastaralé. Pro tento požadavek platí, že formát a koncový bod jsou:

    POST /YOUR_AAD_TENANT/oauth2/token HTTP/1.1
    Host: https://login.microsoftonline.com
    Content-Type: application/x-www-form-urlencoded
    
    client_id=<app-client-id>
    &refresh_token=<refresh-token>
    &grant_type=refresh_token
    &resource=https://api.applicationinsights.io
    &client_secret=<app-client-secret>

Příklad odpovědi:

    {
      "token_type": "Bearer",
      "expires_in": "3600",
      "expires_on": "1460404526",
      "resource": "https://api.applicationinsights.io",
      "access_token": "eyJ0eXAiOiJKV1QiLCJ.....Ax",
      "refresh_token": "eyJ0esdfiJKV1ljhgYF.....Az"
    }

Implicitní tok kódu

Rozhraní API Přehledy aplikace podporuje implicitní tok OAuth2. Pro tento tok se vyžaduje jenom jeden požadavek, ale není možné získat žádný obnovovací token.

Implicitní adresa URL autorizace kódu

    GET https://login.microsoftonline.com/YOUR_AAD_TENANT/oauth2/authorize?
    client_id=<app-client-id>
    &response_type=token
    &redirect_uri=<app-redirect-uri>
    &resource=https://api.applicationinsights.io

Úspěšný požadavek vytvoří přesměrování na identifikátor URI přesměrování s tokenem v adrese URL:

    http://YOUR_REDIRECT_URI/#access_token=YOUR_ACCESS_TOKEN&token_type=Bearer&expires_in=3600&session_state=STATE_GUID

Tato access_token se dá použít jako Authorization: Bearer hodnota hlavičky při předání do rozhraní API Přehledy aplikace k autorizaci požadavků.