Aracılığıyla paylaş


MinimalİzinlerEklentisi

Belirtilen API işlemlerini gerçekleştirmek için gereken en düşük izinleri algılar. Belirtilen yerel klasörden API bilgilerini kullanır.

Kaydedilen API isteklerinin belirteçleri en düşük API izinlerini kullanıp kullanmadiğini denetleen Dev Proxy'yi gösteren komut satırının ekran görüntüsü.

Eklenti örneği tanımı

{
  "name": "MinimalPermissionsPlugin",
  "enabled": true,
  "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
  "configSection": "minimalPermissionsPlugin"
}

Yapılandırma örneği

{
  "minimalPermissionsPlugin": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/minimalpermissionsplugin.schema.json",
    "apiSpecsFolderPath": "./api-specs"
  }
}

Yapılandırma özellikleri

Özellik Açıklama Varsayılan
apiSpecsFolderPath API belirtimlerine sahip klasörün göreli veya mutlak yolu Hiçbiri
schemeName En düşük izinleri belirlemek için kullanılan güvenlik şeması tanımının adı. Belirtilmezse eklenti, belirtimdeki ilk oauth2 düzenindeki bilgileri okur Hiçbiri

Komut satırı seçenekleri

Hiçbiri

Açıklamalar

Eklenti, MinimalPermissionsPlugin uygulamanın API'leri çağırmak için en düşük izinleri kullanıp kullanmadiğini denetler. eklenti, izinleri denetlemek için belirtilen yerel klasörde bulunan API'ler hakkındaki bilgileri kullanır.

API izinlerini tanımlama

Eklenti, MinimalPermissionsPlugin OAuth ile güvenliği sağlanan API'ler için OAuth izinlerini denetlemeyi destekler. Eklenti, sağlanan API belirtimlerindeki bilgileri kullanarak uygulamada kullanılan API'leri çağırmak için gereken en düşük izinleri hesaplar.

API'lerinizin izinlerini tanımlamak için bunları API'nizin OpenAPI tanımına ekleyin. Aşağıdaki örnekte, OpenAPI tanımında BIR API için izinlerin nasıl tanımlanacağı gösterilmektedir:

{
  "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",
        // [...] trimmed for brevity
      }
    }
  },
  "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.22.0"
  }
}

İlgili bölüm, API'nin securitySchemes kullandığı OAuth kapsamlarını tanımladığınız bölümdür. Ardından, her işlem için bölümüne gerekli kapsamları security eklersiniz.

API belirtimlerindeki değişkenleri değiştirme

Bazı API belirtimleri sunucu URL'lerinde değişkenler içerebilir. Değişkenlerin kullanılması, farklı ortamları (geliştirme, hazırlama, üretim gibi), API sürümlerini veya kiracıları barındırmak için yaygın bir uygulamadır. Değişken içeren bir URL şöyle görünür:

openapi: 3.0.4
info:
  title: SharePoint REST API
  description: SharePoint REST API
  version: v1.0
servers:
  - url: https://{tenant}.sharepoint.com
    variables:
      tenant:
        default: contoso

Eklenti, MinimalPermissionsPlugin API belirtim içeriğindeki değişkenlerin değiştirilmesini destekler. Bir değişkeni değiştirmek için Dev Proxy'yi --env seçeneğiyle başlatın ve değişken adını ve değerini belirtin. Örneğin, değişkenini tenant ile contosodeğiştirmek için aşağıdaki komutu kullanın:

devproxy --env tenant=northwind

Bu komut, API belirtimlerindeki değişkenini değeriyle tenantdeğiştirirnorthwind. Eklenti, uygulamanın API'leri çağırmak için en düşük izinleri kullanıp kullanmadiğini denetlemek için değiştirilen URL'yi kullanır.

Daha Fazla Bilgi