Udostępnij przez


Odbieranie zdarzeń zmiany interfejsu API programu Microsoft Graph za pośrednictwem usługi Azure Event Grid

Interfejs API programu Microsoft Graph udostępnia powiadomienia o zmianach dla zasobów w usługach platformy Microsoft 365, w tym microsoft Entra ID, Teams, Outlook i OneDrive. Subskrybowanie tych zdarzeń za pośrednictwem usługi Azure Event Grid umożliwia tworzenie aplikacji opartych na zdarzeniach, które reagują na zmiany zasobów w czasie rzeczywistym.

W tym artykule wyjaśniono, jak:

  • Utwórz subskrypcje interfejsu API Microsoft Graph, które dostarczają zdarzenia do tematów partnerskich usługi Azure Event Grid.
  • Zarządzanie cyklami życia subskrypcji przy użyciu automatycznego odnawiania.
  • Kierowanie zdarzeń do wielu miejsc docelowych przy użyciu funkcji filtrowania i routingu usługi Event Grid.

Usługa Azure Event Grid oferuje kilka zalet w porównaniu z tradycyjnymi subskrypcjami interfejsu API programu Microsoft Graph opartymi na elementach webhook:

  • Uproszczony routing: użyj pojedynczej subskrypcji interfejsu API programu Graph do wysyłania zdarzeń do wielu miejsc docelowych.
  • Zaawansowane filtrowanie: kierowanie określonych typów zdarzeń do różnych aplikacji na podstawie właściwości zdarzenia.
  • Zgodność ze standardami: odbieranie zdarzeń w formacie CloudEvents w celu lepszego współdziałania.
  • Niezawodność: Wbudowana logika ponawiania prób i kolejki wiadomości nie do dostarczenia zapewniają niezawodne dostarczanie zdarzeń.

Obsługiwane źródła zdarzeń

W poniższej tabeli wymieniono źródła zdarzeń, dla których zdarzenia są dostępne za pośrednictwem interfejsu API programu Graph. W przypadku większości zasobów obsługiwane są zdarzenia ogłaszające ich tworzenie, aktualizowanie i usuwanie. Aby uzyskać szczegółowe informacje o zasobach, dla których zdarzenia są zgłaszane dla źródeł zdarzeń, zobacz obsługiwane zasoby za pomocą powiadomień o zmianie interfejsu API programu Microsoft Graph.

Źródło zdarzeń firmy Microsoft Zasoby Dostępne typy zdarzeń
Microsoft Entra ID Użytkownik, grupa Typy zdarzeń Microsoft Entra ID
Microsoft Outlook Wydarzenie (spotkanie kalendarza), Wiadomość (wiadomość e-mail), Kontakt Typy zdarzeń programu Microsoft Outlook
Microsoft Teams ChatMessage, CallRecord (spotkanie) Typy zdarzeń usługi Microsoft Teams
OneDrive Element dysku Zdarzenia usługi Microsoft OneDrive
Microsoft SharePoint Lista Zdarzenia programu Microsoft SharePoint
Do wykonania Zadanie do wykonania Zdarzenia zadań do wykonania firmy Microsoft
Alerty zabezpieczeń Alarm Zdarzenia alertu zabezpieczeń firmy Microsoft
Drukowanie w chmurze Drukarka, Drukuj definicję zadania Zdarzenia drukowania w chmurze firmy Microsoft
Konwersacje firmy Microsoft Konwersacja Zdarzenia konwersacji grupowej platformy Microsoft 365

Utwórz subskrypcję Microsoft Graph API, aby umożliwić przepływ zdarzeń Microsoft Graph API do partnerskiego tematu. Temat partnera jest tworzony automatycznie jako część tworzenia subskrypcji Graph API. Ten temat partnera umożliwia tworzenie subskrypcji zdarzeń w celu wysyłania zdarzeń do dowolnego z obsługiwanych programów obsługi zdarzeń spełniających najlepiej wymagania dotyczące przetwarzania zdarzeń.

Ważne

Jeśli nie znasz funkcji Zdarzenia partnerskie , zobacz Omówienie zdarzeń partnerskich.

Dlaczego należy subskrybować zdarzenia ze źródeł interfejsu API programu Microsoft Graph za pośrednictwem usługi Event Grid?

Oprócz subskrybowania zdarzeń interfejsu API programu Microsoft Graph za pośrednictwem usługi Event Grid masz inne opcje odbierania podobnych powiadomień (a nie zdarzeń). Użyj interfejsu API programu Microsoft Graph, aby dostarczać zdarzenia do usługi Event Grid, jeśli spełniasz co najmniej jedno z następujących wymagań:

  • Opracowujesz rozwiązanie sterowane zdarzeniami, które używa zdarzeń z identyfikatora Entra firmy Microsoft, programu Outlook lub usługi Teams w celu reagowania na zmiany zasobów. Potrzebujesz niezawodnego modelu opartego na zdarzeniach i możliwości publikowania subskrypcji oferowanych przez usługę Event Grid. Aby zapoznać się z omówieniem usługi Event Grid, zobacz Pojęcia dotyczące usługi Event Grid.
  • Chcesz użyć usługi Event Grid do kierowania zdarzeń do wielu miejsc docelowych przy użyciu jednej subskrypcji interfejsu API programu Graph i chcesz uniknąć zarządzania wieloma subskrypcjami interfejsu API programu Graph.
  • Zdarzenia należy kierować do różnych aplikacji podrzędnych, elementów webhook lub usług platformy Azure na podstawie niektórych właściwości zdarzenia. Na przykład możesz chcieć kierować typy zdarzeń, takie jak Microsoft.Graph.UserCreated i Microsoft.Graph.UserDeleted do wyspecjalizowanej aplikacji, która przetwarza dołączanie i odłączanie użytkowników. Możesz również wysłać Microsoft.Graph.UserUpdated zdarzenia do innej aplikacji, która synchronizuje informacje o kontaktach, na przykład. Można to osiągnąć przy użyciu pojedynczej subskrypcji interfejsu API programu Graph podczas korzystania z usługi Event Grid jako miejsca docelowego powiadomień. Aby uzyskać więcej informacji, zobacz filtrowanie zdarzeń i procedury obsługi zdarzeń.
  • Współdziałanie jest dla Ciebie ważne. Chcesz przekazywać zdarzenia i obsługiwać je w standardowy sposób przy użyciu standardu specyfikacji Cloud Native Computing Foundation (CNCF) CloudEvents .
  • Doceniasz obsługę rozszerzalności, którą zapewnia CloudEvents. Na przykład w celu śledzenia zdarzeń w zgodnych systemach użyj rozszerzenia CloudEvents Distributed Tracing. Dowiedz się więcej o rozszerzeniach CloudEvents.
  • Używasz sprawdzonych podejść zorientowanych na zdarzenia, przyjętych przez branżę.

Włączanie zdarzeń interfejsu API programu Graph w celu przepływu do tematu partnera

Poproś interfejs API programu Microsoft Graph o przekazywanie zdarzeń do tematu partnera usługi Event Grid, tworząc subskrypcję interfejsu API programu Graph przy użyciu zestawów SDK (Software Development Kit) interfejsu API programu Microsoft Graph i wykonując kroki opisane w linkach do przykładów podanych w tej sekcji. Zobacz Obsługiwane języki dla zestawu SDK interfejsu API programu Microsoft Graph, aby uzyskać dostępną obsługę zestawu SDK.

Ogólne wymagania wstępne

Spełnij te ogólne wymagania wstępne przed wdrożeniem aplikacji w celu utworzenia i odnowienia subskrypcji interfejsu API programu Microsoft Graph:

Inne wymagania wstępne specyficzne dla wybranego języka programowania i środowiska programistycznego używanego w linkach przykładów interfejsu API programu Microsoft Graph można znaleźć w poniższej sekcji.

Ważne

Szczegółowe instrukcje dotyczące implementowania aplikacji znajdują się w sekcjach przykładów ze szczegółowymi instrukcjami , ale należy przeczytać wszystkie sekcje tego artykułu, ponieważ zawierają one więcej, ważne informacje dotyczące przekazywania zdarzeń interfejsu API programu Microsoft Graph przy użyciu usługi Event Grid.

Jak utworzyć subskrypcję interfejsu API programu Microsoft Graph

Podczas tworzenia subskrypcji interfejsu API programu Graph zostanie utworzony temat partnera. Aby określić temat partnera, który ma zostać utworzony i skojarzony z nową subskrypcją interfejsu API programu Graph, należy przekazać następujące informacje w elemencie notificationUrl parametrów:

  • nazwa tematu partnera
  • nazwa grupy zasobów, w której jest tworzony temat partnera
  • region (lokalizacja)
  • Subskrypcja platformy Azure

Te przykłady kodu pokazują, jak utworzyć subskrypcję interfejsu API programu Graph. Obejmują one przykłady tworzenia subskrypcji do odbierania zdarzeń od wszystkich użytkowników w dzierżawie Microsoft Entra ID, gdy są tworzone, aktualizowane lub usuwane.

POST https://graph.microsoft.com/v1.0/subscriptions
Content-type: application/json

{
    "changeType": "Updated,Deleted,Created",
    "notificationUrl": "EventGrid:?azuresubscriptionid=8A8A8A8A-4B4B-4C4C-4D4D-12E12E12E12E&resourcegroup=yourResourceGroup&partnertopic=yourPartnerTopic&location=theNameOfAzureRegionFortheTopic",
    "lifecycleNotificationUrl": "EventGrid:?azuresubscriptionid=8A8A8A8A-4B4B-4C4C-4D4D-12E12E12E12E&resourcegroup=yourResourceGroup&partnertopic=yourPartnerTopic&location=theNameOfAzureRegionFortheTopic",
    "resource": "users",
    "expirationDateTime": "2024-03-31T00:00:00Z",
    "clientState": "secretClientValue"
}
  • changeType: rodzaj zmian zasobów, dla których chcesz odbierać zdarzenia. Prawidłowe wartości: Updated, Deletedi Created. Można określić jedną lub więcej z tych wartości rozdzielonych przecinkami.
  • notificationUrl: identyfikator URI używany do definiowania tematu partnera, do którego są wysyłane zdarzenia. Musi być zgodny z następującym wzorcem: EventGrid:?azuresubscriptionid=<you-azure-subscription-id>&resourcegroup=<your-resource-group-name>&partnertopic=<the-name-for-your-partner-topic>&location=<the-Azure-region-name-where-you-want-the-topic-created>. Lokalizację (znaną również jako region świadczenia usługi Azure) name można uzyskać, wykonując polecenie az account list-locations . Nie używaj nazwy wyświetlanej lokalizacji. Na przykład nie używaj zachodnich środkowych stanów USA. Użycie w zamian parametru westcentralus.
      az account list-locations
    
  • lifecycleNotificationUrl: identyfikator URI używany do definiowania tematu partnera, do którego microsoft.graph.subscriptionReauthorizationRequiredsą wysyłane zdarzenia. To zdarzenie sygnalizuje, że subskrypcja interfejsu API programu Graph wkrótce wygaśnie. Identyfikator URI jest zgodny z tym samym wzorcem co element notificationUrl opisany wcześniej, jeśli używasz usługi Event Grid jako miejsca docelowego do zdarzeń cyklu życia. W takim przypadku temat partnera powinien być taki sam jak temat określony w elemencie notificationUrl.
  • resource: zasób, który generuje zdarzenia, które ogłaszają zmiany stanu.
  • expirationDateTime: czas wygaśnięcia subskrypcji i zatrzymanie przepływu zdarzeń. Musi być zgodny z formatem określonym w żądaniu zmiany (RFC) 3339. Musisz określić czas wygaśnięcia, który mieści się w zakresie maksymalnej długości subskrypcji dozwolonej dla typu zasobu.
  • stan klienta. Ta właściwość jest opcjonalna. Służy do weryfikacji wywołań aplikacji obsługi zdarzeń podczas dostarczania zdarzeń. Aby uzyskać więcej informacji, zobacz Właściwości subskrypcji interfejsu API programu Graph.

Ważne

  • Nazwa tematu partnera musi być unikatowa w tym samym regionie świadczenia usługi Azure. Każda kombinacja identyfikatora aplikacji dzierżawy może tworzyć maksymalnie 10 unikatowych tematów partnerów.

  • Podczas opracowywania rozwiązania należy pamiętać o pewnych limitach usługi interfejsu API programu Graph.

  • Istniejące subskrypcje interfejsu API programu Graph bez lifecycleNotificationUrl właściwości nie odbierają zdarzeń cyklu życia. Aby dodać właściwość lifecycleNotificationUrl, należy usunąć istniejącą subskrypcję i utworzyć nową subskrypcję określającą właściwość podczas tworzenia subskrypcji.

Po utworzeniu subskrypcji interfejsu API programu Graph masz temat partnera utworzony na platformie Azure.

Odnawianie subskrypcji interfejsu API programu Microsoft Graph

Odnów subskrypcję interfejsu Graph API zanim wygaśnie, żeby nie doszło do zatrzymania przepływu zdarzeń. Aby zautomatyzować proces odnawiania, interfejs API Microsoft Graph obsługuje zdarzenia powiadomień cyklu życia, na które aplikacje mogą się zapisać. Obecnie wszystkie typy zasobów interfejsu API programu Microsoft Graph obsługują microsoft.graph.subscriptionReauthorizationRequiredelement , który jest wysyłany, gdy wystąpi dowolny z następujących warunków:

  • Token dostępu wkrótce wygaśnie.
  • Subskrypcja interfejsu API programu Graph wkrótce wygaśnie.
  • Administrator dzierżawy odwołał uprawnienia aplikacji do odczytu zasobu.

Jeśli subskrypcja interfejsu API programu Graph nie zostanie odnowiona po wygaśnięciu, utwórz nową subskrypcję interfejsu API programu Graph. Zapoznaj się z tym samym tematem partnera używanym w wygasłej subskrypcji, jeśli subskrypcja wygasła mniej niż 30 dni temu. Jeśli subskrypcja interfejsu API programu Graph wygasła przez ponad 30 dni, nie możesz ponownie użyć istniejącego tematu partnera. W takim przypadku należy określić inną nazwę tematu partnera. Alternatywnie możesz usunąć istniejący temat partnera, aby utworzyć nowy temat partnera o tej samej nazwie podczas tworzenia subskrypcji interfejsu API programu Graph.

Jak odnowić subskrypcję interfejsu API programu Microsoft Graph

Po otrzymaniu microsoft.graph.subscriptionReauthorizationRequired zdarzenia aplikacja powinna odnowić subskrypcję interfejsu API programu Graph, wykonując następujące akcje:

  1. Jeśli wpis tajny klienta został podany we właściwości clientState podczas tworzenia subskrypcji interfejsu API programu Graph, klucz tajny klienta dołączony do zdarzenia. Sprawdź, czy wartość clientState zdarzenia jest zgodna z wartością użytą podczas tworzenia subskrypcji interfejsu API programu Graph.

  2. Upewnij się, że aplikacja ma prawidłowy token dostępu, aby wykonać następny krok. Więcej informacji znajduje się w kolejnych przykładach z szczegółową sekcją instrukcji .

  3. Wywołaj jeden z następujących dwóch interfejsów API. Jeśli wywołanie interfejsu API powiedzie się, przepływ powiadomień o zmianie zostanie wznowione.

    • Wywołaj /reauthorize akcję, aby ponownie uwierzytelnić subskrypcję bez rozszerzania daty wygaśnięcia.

      POST  https://graph.microsoft.com/beta/subscriptions/{id}/reauthorize
      
    • Wykonaj regularną akcję "odnów", aby ponownie uwierzytelnić i odnowić subskrypcję w tym samym czasie.

      PATCH https://graph.microsoft.com/beta/subscriptions/{id}
      Content-Type: application/json
      
      {
         "expirationDateTime": "2024-04-30T11:00:00.0000000Z"
      }
      

      Odnawianie może zakończyć się niepowodzeniem, jeśli aplikacja nie ma już autoryzacji dostępu do zasobu. Może to być konieczne, aby aplikacja uzyskała nowy token dostępu, aby pomyślnie ponownie uwierzytelnić subskrypcję.

Wyzwania związane z autoryzacją nie zastępują potrzeby odnowienia subskrypcji przed jej wygaśnięciem. Cykle życia tokenów dostępu i wygasania subskrypcji nie są takie same. Token dostępu może wygasnąć przed subskrypcją. Ważne jest, aby przygotować się do regularnego ponownego uwierzytelniania punktu końcowego w celu odświeżenia tokenu dostępu. Ponowne uwierzytelnianie punktu końcowego nie odnawia subskrypcji. Jednak odnowienie subskrypcji również ponownie uwierzytelnia punkt końcowy.

Podczas odnawiania i/lub ponownego uwierzytelniania subskrypcji interfejsu API programu Graph ten sam temat partnera określony podczas tworzenia subskrypcji jest używany.

Podczas określania nowej daty wygaśnięciaDateTime upewnij się, że jest to co najmniej trzy godziny od bieżącego czasu. W przeciwnym razie aplikacja może odbierać microsoft.graph.subscriptionReauthorizationRequired zdarzenia wkrótce po odnowieniu.

Przykłady dotyczące ponownego uwierzytelniania subskrypcji interfejsu API programu Graph przy użyciu dowolnego z obsługiwanych języków można znaleźć w temacie Żądanie ponownego uwierzytelniania subskrypcji.

Aby zapoznać się z przykładami dotyczącymi odnawiania i ponownego uwierzytelniania subskrypcji interfejsu API programu Graph przy użyciu dowolnego z obsługiwanych języków, zobacz żądanie aktualizacji subskrypcji.

Przykłady ze szczegółowymi instrukcjami

Dokumentacja interfejsu API programu Microsoft Graph zawiera przykłady kodu z instrukcjami:

  • Skonfiguruj środowisko deweloperskie z określonymi instrukcjami zgodnie z używanym językiem. Instrukcje obejmują również sposób uzyskiwania dzierżawy platformy Microsoft 365 na potrzeby programowania.
  • Tworzenie subskrypcji interfejsu API programu Graph. Aby odnowić subskrypcję, możesz wywołać interfejs API programu Graph przy użyciu fragmentów kodu w temacie Jak odnowić subskrypcję interfejsu API programu Graph.
  • Uzyskiwanie tokenów uwierzytelniania w celu ich używania podczas wywoływania interfejsu API programu Microsoft Graph.

Uwaga

Istnieje możliwość utworzenia subskrypcji interfejsu API programu Graph przy użyciu Eksploratora interfejsu API programu Microsoft Graph. Nadal należy używać przykładów dla innych ważnych aspektów rozwiązania, takich jak uwierzytelnianie i odbieranie zdarzeń.

Przykłady aplikacji internetowych są dostępne dla następujących języków:

Ważne

Musisz aktywować temat partnera utworzony w ramach tworzenia subskrypcji interfejsu API programu Graph. Należy również utworzyć subskrypcję zdarzeń usługi Event Grid w aplikacji internetowej w celu odbierania zdarzeń. W tym celu użyjesz adresu URL skonfigurowanego w aplikacji internetowej do odbierania zdarzeń jako punktu końcowego elementu webhook w ramach subskrypcji zdarzeń.

Ważne

Potrzebujesz przykładowego kodu dla innego języka lub masz pytania? Wyślij wiadomość e-mail na adres .ask-graph-and-grid@microsoft.com

Wykonaj następujące dwa kroki, aby skonfigurować odbieranie zdarzeń interfejsu API programu Microsoft Graph przy użyciu usługi Event Grid: