Bagikan melalui


ApiCenterMinimalPermissionsPlugin

Memeriksa apakah aplikasi menggunakan izin minimal untuk memanggil API. Menggunakan informasi API dari instans Azure API Center yang ditentukan.

Cuplikan layar prompt perintah yang menunjukkan pemeriksaan Dev Proxy apakah permintaan API yang direkam menggunakan token izin API minimal.

Contoh konfigurasi

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/rc.schema.json",
  "plugins": [
    {
      "name": "ApiCenterMinimalPermissionsPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
      "configSection": "apiCenterMinimalPermissionsPlugin"
    }
  ],
  "apiCenterMinimalPermissionsPlugin": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/apicenterminimalpermissionsplugin.schema.json",
    "subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
    "resourceGroupName": "resource-group-name",
    "serviceName": "apic-instance",
    "workspace": "default"
  }
}

Properti konfigurasi

Properti Deskripsi Bawaan
resourceGroupName Nama grup sumber daya tempat Azure API Center berada. Tidak
serviceName Nama instans Azure API Center yang harus digunakan Dev Proxy untuk memeriksa apakah API yang digunakan dalam aplikasi terdaftar. Tidak
subscriptionId ID langganan Azure tempat instans Azure API Center berada. Tidak
workspace Nama ruang kerja Azure API Center yang akan digunakan. default
schemeName Nama definisi skema keamanan yang digunakan untuk menentukan izin minimal. Jika tidak ditentukan, plugin membaca informasi dari skema oauth2 pertama dalam spesifikasi Tidak

Opsi baris Perintah

Tidak

Keterangan

Plugin ApiCenterMinimalPermissionsPlugin memeriksa apakah aplikasi menggunakan izin minimal untuk memanggil API. Untuk memeriksa izin, plugin menggunakan informasi tentang API yang terdaftar dalam instans Azure API Center yang ditentukan.

Menyambungkan ke Azure API Center

Untuk menyambungkan ke Azure API Center, plugin menggunakan kredensial Azure (dalam urutan ini):

  • Lingkungan
  • Identitas Beban Kerja
  • Identitas Terkelola
  • Visual Studio
  • Visual Studio Code
  • Azure CLI (antarmuka baris perintah Azure)
  • Azure PowerShell
  • Azure Developer CLI

Jika plugin gagal mendapatkan token akses untuk mengakses Azure, plugin menunjukkan kesalahan dan Proksi Dev menonaktifkannya. Masuk ke Azure menggunakan salah satu alat ini, dan mulai ulang Dev Proxy untuk menggunakan ApiCenterMinimalPermissionsPlugin plugin.

Jika Anda menggunakan Proksi Dev dalam alur CI/CD, Anda dapat meneruskan nilai untuk subscriptionIdproperti , , resourceGroupNameserviceName, dan workspace sebagai variabel lingkungan. Untuk menggunakan variabel lingkungan, tambahkan nama nilai dengan @, misalnya:

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/rc.schema.json",
  "plugins": [
    {
      "name": "ApiCenterMinimalPermissionsPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
      "configSection": "apiCenterMinimalPermissionsPlugin"
    }
  ],
  "apiCenterMinimalPermissionsPlugin": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/apicenterminimalpermissionsplugin.schema.json",
    "subscriptionId": "@AZURE_SUBSCRIPTION_ID",
    "resourceGroupName": "@AZURE_RESOURCE_GROUP_NAME",
    "serviceName": "@AZURE_APIC_INSTANCE_NAME",
    "workspace": "@AZURE_APIC_WORKSPACE_NAME"
  }
}

Dalam contoh ini, ApiCenterMinimalPermissionsPlugin plugin menetapkan subscriptionIdproperti , , resourceGroupNameserviceName, dan workspace ke nilai AZURE_SUBSCRIPTION_IDvariabel lingkungan , , AZURE_RESOURCE_GROUP_NAMEAZURE_APIC_INSTANCE_NAME, dan AZURE_APIC_WORKSPACE_NAME masing-masing.

Menentukan izin API

Plugin ApiCenterMinimalPermissionsPlugin mendukung pemeriksaan izin OAuth untuk API yang diamankan dengan OAuth yang terdaftar di Azure API Center. Plugin menghitung izin minimal yang diperlukan untuk memanggil API yang digunakan dalam aplikasi menggunakan informasi dari API Center. Kemudian, plugin membandingkan izin yang digunakan dalam token JSON Web Token (JWT) dengan cakupan minimum yang diperlukan untuk permintaan yang direkam Proksi Dev.

Untuk menentukan izin untuk API Anda, sertakan dalam definisi OpenAPI API Anda. Contoh berikut menunjukkan cara menentukan izin untuk API dalam definisi OpenAPI:

{
  "openapi": "3.0.1",
  "info": {
    "title": "Northwind API",
    "description": "Northwind API",
    "version": "v1.0"
  },
  "servers": [
    {
      "url": "https://api.northwind.com"
    }
  ],
  "components": {
    "securitySchemes": {
      "OAuth2": {
        "type": "oauth2",
        "flows": {
          "authorizationCode": {
            "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/authorize",
            "tokenUrl": "https://login.microsoftonline.com/common/oauth2/token",
            "scopes": {
              "customer.read": "Grants access to ready customer info",
              "customer.readwrite": "Grants access to read and write customer info"
            }
          }
        }
      }
    },
    "schemas": {
      "Customer": {
        "type": "object",
        "properties": {}
      }
    }
  },
  "paths": {
    "/customers/{customers-id}": {
      "description": "Provides operations to manage a customer",
      "get": {
        "summary": "Get customer by ID",
        "operationId": "getCustomerById",
        "security": [
          {
            "OAuth2": [
              "customer.read"
            ]
          },
          {
            "OAuth2": [
              "customer.readwrite"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json; charset=utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/Customer"
                }
              }
            }
          }
        }
      },
      "patch": {
        "summary": "Update customer by ID",
        "operationId": "updateCustomerById",
        "security": [
          {
            "OAuth2": [
              "customer.readwrite"
            ]
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Customer"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      },
      "parameters": [
        {
          "name": "customers-id",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ]
    }
  },
  "x-ms-generated-by": {
    "toolName": "Dev Proxy",
    "toolVersion": "0.27.0"
  }
}

Bagian yang relevan adalah bagian securitySchemes , di mana Anda menentukan cakupan OAuth yang digunakan API. Kemudian, untuk setiap operasi, Anda menyertakan cakupan yang diperlukan di bagian .security

Informasi selengkapnya

Langkah selanjutnya