Udostępnij za pośrednictwem


Uwierzytelnianie

Podczas wykonywania wywołań REST wymagane jest wykonanie kilku kroków w celu poprawnego uwierzytelnienia. Zestawy SDK usług Azure Communication Services obsługują ten proces, ale ręczne wykonywanie żądań oznacza, że musisz samodzielnie je obsłużyć.

Typy uwierzytelniania

Usługi Azure Communication Services mają trzy typy uwierzytelniania, są używane do różnych celów:

  • uwierzytelnianie za pomocą klucza dostępu dla operacji SMS, przechodzenia przez sieć, automatyzacji wywołań, tożsamości i tokenu dostępu. Uwierzytelnianie za pomocą klucza dostępu jest odpowiednie dla aplikacji działających w zaufanym środowisku usługi.
  • uwierzytelniania RBAC platformy Azure w celu kontrolowania dostępu do zasobów przy użyciu kontroli dostępu opartej na rolach platformy Azure przez przypisanie ról platformy Azure.
  • uwierzytelnianie tokenu dostępu użytkownika na potrzeby rozmów i połączeń. Tokeny dostępu użytkowników umożliwiają aplikacjom klienckim uwierzytelnianie bezpośrednio w usługach Azure Communication Services. Te tokeny są generowane w tworzonej usłudze aprowizacji tokenów po stronie serwera. Następnie są one udostępniane urządzeniom klienckim, które używają tokenu do inicjowania bibliotek klienta czatu i wywoływania.

Uwierzytelnianie za pomocą klucza dostępu

Uwierzytelnianie za pomocą klucza dostępu jest używane, gdy żądania nie są wysyłane przez aplikację użytkownika końcowego. Uruchom te żądania w zaufanym środowisku usługi.

W tej metodzie uwierzytelniania żądania są podpisane przy użyciu wygenerowanego przez klienta kodu uwierzytelniania komunikatów opartego na skrótach (HMAC).

Przed rozpoczęciem upewnij się, że masz:

  • Klucz dostępu usług Azure Communication Services
  • Punkt końcowy usługi Azure Communication Service
  • Ścieżka adresu URL i czasownik HTTP, który wywołujesz
  • Środowisko programistyczne, które może generować skróty HMACs, SHA256 i wykonywać operacje Base64.

Po utworzeniu tych elementów możesz kontynuować podpisywanie żądania.

Podpisywanie żądania HTTP

  1. Upewnij się, że masz dostępne następujące wartości:

    • Metoda żądania HTTP (na przykład GET lub PUT)
    • Znacznik czasu uniwersalnego koordynowanego (UTC) dla żądania zgodnie z RFC1123 standardem
    • Host żądania HTTP (składnik identyfikatora URI <authority> określony w RFC2396)
    • Treść żądania HTTP skrótu przy użyciu algorytmu SHA256
    • Ścieżka żądania HTTP (<path> i <query> połączona przez składniki ? zgodnie z RFC2396)
    Verb=<http_method>
    Timestamp=<current_datetime>
    Host=<uri_authority>
    ContentHash=SHA256(<request_body>)
    URIPathAndQuery=<uri_path>?<uri_query>
    
  2. Skonstruuj ciąg do podpisania, łącząc wartości w następujący sposób:

    StringToSign=Verb + "\n"
    URIPathAndQuery + "\n"
    Timestamp + ";" + Host + ";" + ContentHash
    
  3. Wygeneruj podpis HMAC-256 zakodowanego ciągu UTF-8 utworzonego w poprzednim kroku. Następnie zakoduj wyniki jako Base64. Musisz również zdekodować klucz dostępu base64. Użyj następującego formatu (pokazanego jako pseudo-kod):

    Signature=Base64(HMAC-SHA256(UTF8(StringToSign), Base64.decode(<your_access_key>)))
    
  4. Dodaj następujące nagłówki do żądania:

    x-ms-date: <Timestamp>
    x-ms-content-sha256: <ContentHash>
    host: <URIPathAndQuery>   
    Authorization: "HMAC-SHA256 SignedHeaders=x-ms-date;host;x-ms-content-sha256&Signature=<Signature>"
    

Po otrzymaniu żądania usługa weryfikuje sygnaturę i sygnaturę czasową w celu ochrony przed niektórymi atakami bezpieczeństwa, w tym atakami powtarzania. Aby dowiedzieć się, jak podpisać żądanie HTTP w różnych językach programowania, odwiedź samouczka podpisywania nagłówka HMAC.

Uwierzytelnianie RBAC platformy Azure

Platforma Azure zapewnia dostęp oparty na rolach (RBAC) w celu kontrolowania dostępu do zasobów. Podmiot zabezpieczeń RBAC platformy Azure reprezentuje użytkownika, grupę, jednostkę usługi lub tożsamość zarządzaną żądającą dostępu do zasobów platformy Azure.

Uwierzytelnianie Firmy Microsoft Entra zapewnia doskonałe zabezpieczenia i łatwość użycia w przypadku innych opcji autoryzacji. Na przykład przy użyciu tożsamości zarządzanej należy unikać konieczności przechowywania klucza dostępu do konta w kodzie, tak jak w przypadku uwierzytelniania za pomocą klucza dostępu. Mimo że nadal można używać uwierzytelniania klucza dostępu z aplikacjami usług komunikacyjnych, firma Microsoft zaleca przejście do identyfikatora Entra firmy Microsoft, jeśli to możliwe.

Kontrola dostępu oparta na rolach platformy Azure obejmuje wiele wbudowanych ról, można przypisywać w różnych zakresach i umożliwia tworzenie własnych ról niestandardowych. Obejmuje ponad 100 wbudowanych ról. Istnieją pięć podstawowych ról platformy Azure — właściciel, współautor, czytelnik, administrator kontroli dostępu opartej na rolach i administrator dostępu użytkowników. Aby uzyskać więcej informacji na temat tych ról, odwiedź samouczek Kontrola dostępu oparta na rolach.

Uprawnienia obsługiwane przez usługi Azure Communication Services (ACS)

Usługa ACS oferuje określone uprawnienia (acs.read i acs.write), które umożliwiają kontrolowany dostęp do różnych zasobów.

  • uprawnienie acs.read: daje możliwość pobierania lub wyświetlania danych.
  • uprawnienie acs.write: zezwala na modyfikowanie lub tworzenie danych w ramach tych samych typów zasobów.

Ponadto usługa ACS obsługuje uprawnienia związane z pocztą e-mail:

  • acs.email.read: umożliwia odczytywanie lub uzyskiwanie dostępu do danych usług związanych z pocztą e-mail.
  • acs.email.write: umożliwia modyfikowanie lub tworzenie danych usług związanych z pocztą e-mail.

Te uprawnienia mają kluczowe znaczenie dla zapewnienia szczegółowej kontroli dostępu i zabezpieczeń w odniesieniu do zasobów usług ACS.

Uzyskiwanie dodatkowego tokenu RBAC

Aby uzyskać token dla usługi ACS, możesz użyć biblioteki MSAL (Microsoft Authentication Library). Oto przewodnik krok po kroku:

  1. Rejestrowanie aplikacji w usłudze Azure AD: upewnij się, że aplikacja jest zarejestrowana w usłudze Azure AD.
  2. Zainstaluj bibliotekę MSAL: zainstaluj bibliotekę MSAL dla platformy (np. Microsoft.Identity.Client dla platformy .NET).
  3. Konfigurowanie biblioteki MSAL: skonfiguruj bibliotekę MSAL przy użyciu identyfikatora klienta aplikacji, identyfikatora dzierżawy i wpisu tajnego klienta.
  4. Uzyskiwanie tokenu: użyj biblioteki MSAL, aby uzyskać token z wymaganym zakresem (https://communication.azure.com/.default).

Aby uzyskać szczegółowe instrukcje i przykłady kodu, zapoznaj się z oficjalną dokumentacją biblioteki MSAL i dokumentacją tokenu dostępu .

Przykładowe żądanie HTTP do wystawienia tokenu dostępu USŁUGI ACS

Prosić:

POST https://my-resource.communication.azure.com/identities/{identity}/:issueAccessToken?api-version=2023-10-01
Authorization: Bearer <your-access-token>
Content-Type: application/json
{
  "scopes": [
    "chat",
    "voip"
  ]
}

Odpowiedź:

{
  "token": "token",
  "expiresOn": "2023-10-10T21:39:39.3244584+00:00"
}

Uwierzytelnianie tokenu dostępu użytkowników

Tokeny dostępu użytkowników umożliwiają aplikacjom klienckim uwierzytelnianie bezpośrednio w usługach Azure Communication Services jako określony użytkownik lub tożsamość.

Generowanie/uzyskiwanie tokenów dostępu użytkownika

Tokeny dostępu użytkowników są generowane przez Użytkownika w zaufanym środowisku. Generowanie ich przy użyciu zestawu AZURE Communication Services Identity SDK jest najprostszym sposobem. Aby uzyskać więcej informacji, zobacz tworzenie tokenów dostępu użytkowników i zarządzanie nimi.

Używanie tokenu dostępu użytkownika w żądaniu

Po utworzeniu odpowiedniego tokenu dostępu użytkownika możesz uwzględnić go w żądaniach do interfejsu API REST usług Azure Communication Services. W tym celu należy podać go w nagłówku Authorization przy użyciu schematu uwierzytelniania HTTP elementu nośnego Authorization: Bearer <token>.

Zobacz też

Aby uzyskać dodatkowe informacje na temat uwierzytelniania usług Azure Communication Services, możesz również zapoznać się z tematem: