Microsoft Entra kimlik doğrulaması ile Uygulama Analizler API Erişimi

Azure İzleyici Uygulaması Analizler uç noktasını https://api.applicationinsights.iokullanarak sorgu isteği gönderebilirsiniz. Uç noktaya erişmek için Microsoft Entra Id aracılığıyla kimlik doğrulaması yapmanız gerekir.

Kimlik doğrulaması kurulumu

API'ye erişmek için Microsoft Entra Id ile bir istemci uygulaması kaydeder ve belirteç isteyebilirsiniz.

  1. Bir uygulamayı Microsoft Entra Id'ye kaydedin.

  2. Uygulamanın genel bakış sayfasında API izinleri'ni seçin.

  3. İzin ekle'yi seçin.

  4. Kuruluşumun kullandığı API'ler sekmesinde Uygulama Analizler araması yapın ve listeden Uygulama Analizler API'sini seçin.

  5. Atanan izinler'i seçin.

  6. Data.Read onay kutusunu seçin.

  7. İzinler ekle'yi seçin.

Uygulamanız artık kayıtlı olduğuna ve API'yi kullanma izinlerine sahip olduğuna göre uygulamanıza Uygulama Analizler kaynağınıza erişim izni verin.

  1. Uygulama Analizler kaynağına genel bakış sayfanızdan Erişim denetimi (IAM) öğesini seçin.

  2. Rol ataması ekle’yi seçin.

  3. Okuyucu rolünü ve ardından Üyeler'i seçin.

  4. Üyeler sekmesinde Üye seç'i seçin.

  5. Seç kutusuna uygulamanızın adını girin.

  6. Uygulamanızı seçin ve Seç'i seçin.

  7. Gözden geçir + ata'yı seçin.

  8. Active Directory kurulumunu ve izinlerini tamamladıktan sonra bir yetkilendirme belirteci isteyin.

Dekont

Bu örnekte Okuyucu rolünü uyguladık. Bu rol birçok yerleşik rolden biridir ve ihtiyacınız olandan daha fazla izin içerebilir. Daha ayrıntılı roller ve izinler oluşturulabilir.

Yetkilendirme belirteci isteme

Başlamadan önce, isteği başarıyla yapmak için gereken tüm değerlere sahip olduğunuzdan emin olun. Tüm istekler şunları gerektirir:

  • Microsoft Entra kiracı kimliğiniz.
  • Uygulama Analizler Uygulama Kimliğiniz - Şu anda API Anahtarları kullanıyorsanız, bu aynı uygulama kimliğidir.
  • Uygulama için Microsoft Entra istemci kimliğiniz.
  • Uygulama için bir Microsoft Entra istemci gizli dizisi.

Uygulama Analizler API'si, üç farklı Microsoft Entra ID OAuth2 akışıyla Microsoft Entra kimlik doğrulamasını destekler:

  • İstemci kimlik bilgileri
  • Yetki kodu
  • Örtük

İstemci kimlik bilgileri akışı

İstemci kimlik bilgileri akışında belirteç, Application Analizler uç noktasıyla birlikte kullanılır. Bir uygulamayı Microsoft Entra Id'ye kaydettiğinizde önceki adımda uygulamanız için sağlanan kimlik bilgileri kullanılarak belirteç almak için tek bir istek yapılır.

Uç noktayı https://api.applicationinsights.io kullanın.

İstemci kimlik bilgileri belirteci URL'si (POST isteği)

    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>

Başarılı bir istek yanıtta bir erişim belirteci alır:

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

Uygulama Analizler uç noktasına yapılan isteklerde belirteci kullanın:

    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"
    }

Örnek yanıt:

  "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"
        ]
      ]
    }
  ]
}

Yetkilendirme kodu akışı

Desteklenen ana OAuth2 akışı yetkilendirme kodları aracılığıyla yapılır. Bu yöntem, Azure İzleyici Uygulaması Analizler API'sinin çağrıldığı bir belirteç almak için iki HTTP isteği gerektirir. İstek başına bir uç nokta içeren iki URL vardır. Biçimleri aşağıdaki bölümlerde açıklanmıştır.

Yetkilendirme kodu URL'si (GET isteği)

    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

Yetkilendirme URL'sine istekte bulunulduğunda, client_id uygulamanın özellikler menüsünden kopyalanan Microsoft Entra uygulamanızdaki uygulama kimliğidir. redirect_uri, aynı Microsoft Entra uygulamasındaki giriş sayfası/oturum açma URL'sidir. bir istek başarılı olduğunda, bu uç nokta sizi url'ye eklenen yetkilendirme koduyla birlikte kayıt sırasında sağladığınız oturum açma sayfasına yönlendirir. Aşağıdaki örneğe bakın:

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

Bu noktada, şimdi erişim belirteci istemeniz gereken bir yetkilendirme kodu edindiniz.

Yetkilendirme kodu belirteci URL'si (POST isteği)

    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>

Tüm değerler, bazı eklemelerle öncekiyle aynıdır. Yetkilendirme kodu, başarılı bir yeniden yönlendirmeden sonra önceki istekte aldığınız kodla aynıdır. Kod, Microsoft Entra uygulamasından alınan anahtarla birleştirilir. Anahtarı kaydetmediyseniz, microsoft Entra uygulama menüsünün tuşlar sekmesinden anahtarı silebilir ve yeni bir anahtar oluşturabilirsiniz. Yanıt, aşağıdaki şemaya sahip belirteci içeren bir JSON dizesidir. Belirteç değerleri için türler gösterilir.

Yanıt örneği:

    {
        "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"
    }

Bu yanıtın erişim belirteci bölümü, üst bilgideki Uygulama Analizler API'sine Authorization: Bearer sunabileceğiniz değerdir. Gelecekte yenileme belirtecini kullanarak yeni bir access_token edinebilir ve eskidiğinde refresh_token. Bu istek için biçim ve uç nokta şunlardır:

    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>

Yanıt örneği:

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

Örtük kod akışı

Uygulama Analizler API'si OAuth2 örtük akışını destekler. Bu akış için yalnızca tek bir istek gereklidir, ancak yenileme belirteci alınamıyor.

Örtük kod URL'yi yetkilendirme

    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

Başarılı bir istek, URL'deki belirteçle yeniden yönlendirme URI'nize bir yeniden yönlendirme oluşturur:

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

Bu access_token, istekleri yetkilendirmek için Uygulama Analizler API'sine geçirildiğinde üst bilgi değeri olarak Authorization: Bearer kullanılabilir.