Udostępnij za pośrednictwem


Jak znaleźć ukryte interfejsy API

Za pomocą centrum interfejsów API platformy Azure można katalogować interfejsy API używane w organizacji. W dowolnym momencie możesz określić, które interfejsy API są używane w organizacji. Możesz również określić, gdzie interfejs API znajduje się w jego cyklu życia i kto ma się skontaktować, jeśli występują problemy. Krótko mówiąc, posiadanie aktualnego wykazu interfejsów API pomaga poprawić pozycję w zakresie ładu, zgodności i bezpieczeństwa.

Podczas kompilowania aplikacji, zwłaszcza jeśli integrujesz nowe scenariusze, możesz używać interfejsów API, które nie są zarejestrowane w Centrum interfejsów API platformy Azure. Te interfejsy API są nazywane ukrytymi interfejsami API. Ukryte interfejsy API to interfejsy API, które nie są zarejestrowane w organizacji. Mogą to być interfejsy API, które nie zostały jeszcze zarejestrowane lub mogą być interfejsami API, które nie mają być używane w organizacji.

Aby sprawdzić, czy aplikacja korzysta z ukrytych interfejsów API, możesz użyć ApiCenterOnboardingPlugin wtyczki. Ta wtyczka analizuje żądania API z Twojej aplikacji i zgłasza wszystkie interfejsy API, które nie są zarejestrowane w Centrum API. Ponadto można bezpośrednio dołączyć nowe interfejsy API do Centrum interfejsów API platformy Azure.

Zrzut ekranu wiersza poleceń pokazujący, jak Dev Proxy sprawdza, czy zarejestrowane żądania API są obecne w Azure API Center.

Przed rozpoczęciem

Aby wykryć shadow APIs, musisz mieć instancję Azure API Center z informacjami o interfejsach API używanych w organizacji.

Utwórz wystąpienie Centrum API platformy Azure

Przed rozpoczęciem utwórz wystąpienie Azure API Center i zarejestruj interfejsy API używane w organizacji.

Zrzut ekranu przedstawiający centrum interfejsów API platformy Azure z kilkoma interfejsami API używanymi w organizacji.

Te ApiCenterOnboardingPlugin informacje służą do sprawdzania, czy interfejsy API, z których korzysta aplikacja, są zarejestrowane w organizacji.

Skopiuj informacje z Centrum API

Na stronie przeglądu wystąpienia Azure API Center, skopiuj nazwę wystąpienia, nazwę grupy zasobów oraz identyfikator subskrypcji. Te informacje są potrzebne do skonfigurowania ApiCenterOnboardingPlugin, aby można było nawiązać połączenie z wystąpieniem Azure API Center.

Zrzut ekranu przedstawiający stronę przeglądu usługi Azure API Center z wyróżnionymi kilkoma właściwościami.

Konfigurowanie serwera proxy deweloperskiego

Aby sprawdzić, czy aplikacja korzysta z shadow APIs, należy włączyć element ApiCenterOnboardingPlugin w pliku konfiguracyjnym Dev Proxy. Aby utworzyć raport interfejsów API używanych przez aplikację, dodaj reportera.

Włącz ApiCenterOnboardingPlugin

devproxyrc.json W pliku dodaj następującą konfigurację:

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.29.2/rc.schema.json",
  "plugins": [
    {
      "name": "ApiCenterOnboardingPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
      "configSection": "apiCenterOnboardingPlugin"
    }
  ],
  "urlsToWatch": [
    "https://jsonplaceholder.typicode.com/*"
  ],
  "apiCenterOnboardingPlugin": {
    "subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
    "resourceGroupName": "demo",
    "serviceName": "contoso-api-center",
    "workspaceName": "default",
    "createApicEntryForNewApis": false
  }
}

We właściwościach subscriptionId, resourceGroupName, i serviceName podaj informacje o wystąpieniu Azure API Center.

urlsToWatch We właściwości określ adresy URL używane przez aplikację.

Napiwek

Użyj rozszerzenia Dev Proxy Toolkit programu Visual Studio Code, aby łatwo zarządzać konfiguracją Dev Proxy.

Dodawanie reportera

Element ApiCenterOnboardingPlugin tworzy raport interfejsów API używanych przez aplikację. Aby wyświetlić ten raport, dodaj reportera do pliku konfiguracji Dev Proxy. Proxy deweloperski udostępnia kilka raportów. W tym przykładzie użyjesz reportera zwykłego tekstu.

Zaktualizuj swój devproxyrc.json plik, dodając odniesienie do raportera zwykłego tekstu:

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.29.2/rc.schema.json",
  "plugins": [
    {
      "name": "ApiCenterOnboardingPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
      "configSection": "apiCenterOnboardingPlugin"
    },
    {
      "name": "PlainTextReporter",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll"
    }
  ],
  "urlsToWatch": [
    "https://jsonplaceholder.typicode.com/*"
  ],
  "apiCenterOnboardingPlugin": {
    "subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
    "resourceGroupName": "demo",
    "serviceName": "contoso-api-center",
    "workspaceName": "default",
    "createApicEntryForNewApis": false
  }
}

Sprawdź, czy aplikacja korzysta z ukrytych interfejsów API

Aby sprawdzić, czy aplikacja korzysta z shadow API, połącz się z subskrypcją Azure, uruchom Dev Proxy i pozwól mu przechwycić żądania API z aplikacji. Następnie serwer proxy deweloperów porównuje informacje o żądaniach interfejsu API z informacjami z Centrum interfejsów API platformy Azure i raportami dotyczącymi wszystkich interfejsów API, które nie są zarejestrowane w Centrum interfejsów API.

Nawiązywanie połączenia z subskrypcją platformy Azure

Proxy deweloperskie wykorzystuje informacje z Azure API Center w celu określenia, czy aplikacja używa ukrytego API. Aby uzyskać te informacje, potrzebuje połączenia z subskrypcją platformy Azure. Możesz nawiązać połączenie z subskrypcją platformy Azure na kilka sposobów.

Uruchamianie serwera proxy deweloperskiego

Po nawiązaniu połączenia z subskrypcją platformy Azure uruchom usługę Dev Proxy. Jeśli uruchomisz Dev Proxy z tego samego folderu, w którym jest zlokalizowany plik devproxyrc.json, automatycznie ładuje konfigurację. W przeciwnym razie określ ścieżkę do pliku konfiguracji przy użyciu --config-file opcji .

Po uruchomieniu usługi Dev Proxy sprawdza, czy może nawiązać połączenie z subskrypcją platformy Azure. Po pomyślnym nawiązaniu połączenia zostanie wyświetlony komunikat podobny do następującego:

 info    Plugin ApiCenterOnboardingPlugin connecting to Azure...
 info    Listening on 127.0.0.1:8000...

Hotkeys: issue (w)eb request, (r)ecord, (s)top recording, (c)lear screen
Press CTRL+C to stop Dev Proxy

Naciśnij pozycję r , aby rozpocząć nagrywanie żądań interfejsu API z aplikacji.

Użyj swojej aplikacji

Użyj aplikacji, jak zwykle. Proxy Dev przechwytuje żądania API i przechowuje informacje o nich w pamięci. W wierszu polecenia, w którym jest uruchamiany serwer proxy deweloperów, powinny zostać wyświetlone informacje o żądaniach interfejsu API, które wykonuje Aplikacja.

 info    Plugin ApiCenterOnboardingPlugin connecting to Azure...
 info    Listening on 127.0.0.1:8000...

Hotkeys: issue (w)eb request, (r)ecord, (s)top recording, (c)lear screen
Press CTRL+C to stop Dev Proxy

◉ Recording... 

 req   ╭ GET https://jsonplaceholder.typicode.com/posts
 api   ╰ Passed through

 req   ╭ DELETE https://jsonplaceholder.typicode.com/posts/1
 api   ╰ Passed through

Sprawdź ukryte interfejsy API

Zatrzymaj nagrywanie, naciskając s. Dev Proxy łączy się z instancją Centrum API i porównuje informacje o żądaniach z informacjami z Centrum API.

 info    Plugin ApiCenterOnboardingPlugin connecting to Azure...
 info    Listening on 127.0.0.1:8000...

Hotkeys: issue (w)eb request, (r)ecord, (s)top recording, (c)lear screen
Press CTRL+C to stop Dev Proxy

◉ Recording... 

 req   ╭ GET https://jsonplaceholder.typicode.com/posts
 api   ╰ Passed through

 req   ╭ DELETE https://jsonplaceholder.typicode.com/posts/1
 api   ╰ Passed through
○ Stopped recording
 info    Checking if recorded API requests belong to APIs in API Center...
 info    Loading APIs from API Center...
 info    Loading API definitions from API Center...

Gdy Dev Proxy zakończy analizę, tworzy raport w pliku o nazwie ApiCenterOnboardingPlugin_PlainTextReporter.txt z następującą zawartością:

New APIs that aren't registered in Azure API Center:

https://jsonplaceholder.typicode.com:
  DELETE https://jsonplaceholder.typicode.com/posts/1

APIs that are already registered in Azure API Center:

GET https://jsonplaceholder.typicode.com/posts

Automatyczne dołączanie interfejsów API w tle

Narzędzie ApiCenterOnboardingPlugin może nie tylko wykrywać interfejsy API w tle, ale także automatycznie dołączać je do centrum interfejsów API. Aby automatycznie dołączać ukryte API, w pliku konfiguracji serwera proxy deweloperów zaktualizuj createApicEntryForNewApis do true.

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.29.2/rc.schema.json",
  "plugins": [
    {
      "name": "ApiCenterOnboardingPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
      "configSection": "apiCenterOnboardingPlugin"
    },
    {
      "name": "PlainTextReporter",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll"
    }
  ],
  "urlsToWatch": [
    "https://jsonplaceholder.typicode.com/*"
  ],
  "apiCenterOnboardingPlugin": {
    "subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
    "resourceGroupName": "demo",
    "serviceName": "contoso-api-center",
    "workspaceName": "default",
    "createApicEntryForNewApis": true
  }
}

Po uruchomieniu Proxy deweloperskiego z ustawioną wartością createApicEntryForNewApistrue, automatycznie tworzone są nowe wpisy interfejsu API w centrum API platformy Azure dla wykrytych przez niego interfejsów API cieni.

Zrzut ekranu Centrum API z nowo wprowadzonym API.

Automatyczne dołączanie interfejsów API w tle przy użyciu specyfikacji interfejsu OpenAPI

Jeśli zdecydujesz się automatycznie dołączać nieudokumentowane interfejsy API do Centrum interfejsów API, Dev Proxy może wygenerować specyfikację OpenAPI dla tego interfejsu. Dołączanie interfejsów API przy użyciu specyfikacji OpenAPI przyspiesza włączanie brakujących punktów końcowych i zapewnia niezbędne informacje o API. Gdy ApiCenterOnboardingPlugin wykryje, że proxy deweloperski utworzył nową specyfikację interfejsu OpenAPI, kojarzy ją z odpowiadającym powiązanym interfejsem API w API Center.

Aby automatycznie wygenerować specyfikacje interfejsu OpenAPI dla dołączonych interfejsów API, zaktualizuj konfigurację serwera proxy deweloperskiego, aby uwzględnić element OpenApiSpecGeneratorPlugin.

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.29.2/rc.schema.json",
  "plugins": [
    {
      "name": "OpenApiSpecGeneratorPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll"
    },
    {
      "name": "ApiCenterOnboardingPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
      "configSection": "apiCenterOnboardingPlugin"
    },
    {
      "name": "PlainTextReporter",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll"
    }
  ],
  "urlsToWatch": [
    "https://jsonplaceholder.typicode.com/*"
  ],
  "apiCenterOnboardingPlugin": {
    "subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
    "resourceGroupName": "demo",
    "serviceName": "contoso-api-center",
    "workspaceName": "default",
    "createApicEntryForNewApis": true
  }
}

Ważne

Proxy deweloperski wykonuje wtyczki w kolejności ich rejestracji w konfiguracji. Musisz najpierw zarejestrować OpenApiSpecGeneratorPlugin, aby mogło stworzyć specyfikacje OpenAPI (ApiCenterOnboardingPlugin) zanim nowe interfejsy API zostaną zintegrowane.

Po uruchomieniu Dev Proxy z tą konfiguracją, automatycznie tworzy nowe wpisy API w Centrum API platformy Azure dla ukrytych API, które wykrywa. Dla każdej nowej usługi API, Dev Proxy generuje specyfikację OpenAPI i kojarzy ją z odpowiednim zintegrowanym API w Centrum API.

 info    Plugin ApiCenterOnboardingPlugin connecting to Azure...
 info    Listening on 127.0.0.1:8000...

Hotkeys: issue (w)eb request, (r)ecord, (s)top recording, (c)lear screen
Press CTRL+C to stop Dev Proxy

◉ Recording... 

 req   ╭ GET https://jsonplaceholder.typicode.com/posts
 api   ╰ Passed through

 req   ╭ DELETE https://jsonplaceholder.typicode.com/posts/1
 api   ╰ Passed through
○ Stopped recording
 info    Creating OpenAPI spec from recorded requests...
 info    Created OpenAPI spec file jsonplaceholder.typicode.com-20240614104931.json
 info    Checking if recorded API requests belong to APIs in API Center...
 info    Loading APIs from API Center...
 info    Loading API definitions from API Center...
 info    New APIs that aren't registered in Azure API Center:

https://jsonplaceholder.typicode.com:
  DELETE https://jsonplaceholder.typicode.com/posts/1
 info    Creating new API entries in API Center...
 info      Creating API new-jsonplaceholder-typicode-com-1718354977 for https://jsonplaceholder.typicode.com...
 info    DONE

Zrzut ekranu Azure API Center przedstawiający nowo dołączony interfejs API ze specyfikacją OpenAPI.

Podsumowanie

Za pomocą programu ApiCenterOnboardingPluginmożesz sprawdzić, czy aplikacja korzysta z interfejsów API w tle. Wtyczka analizuje żądania interfejsu API z aplikacji i raportuje żądania interfejsu API, które nie są zarejestrowane w centrum interfejsu API platformy Azure. Wtyczka umożliwia łatwe dołączanie brakujących interfejsów API do Centrum interfejsów API. Łącząc wtyczkę ApiCenterOnboardingPlugin z OpenApiSpecGeneratorPlugin, można automatycznie wygenerować specyfikacje OpenAPI dla nowo dołączonych interfejsów API. Tę kontrolę można uruchomić ręcznie lub zintegrować z potokiem CI/CD, aby upewnić się, że aplikacja korzysta z zarejestrowanego API przed jej wydaniem na produkcję.

Więcej informacji