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
Upewnij się, że masz dostępne następujące wartości:
- Metoda żądania HTTP (na przykład
GET
lubPUT
) - 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>
- Metoda żądania HTTP (na przykład
Skonstruuj ciąg do podpisania, łącząc wartości w następujący sposób:
StringToSign=Verb + "\n" URIPathAndQuery + "\n" Timestamp + ";" + Host + ";" + ContentHash
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>)))
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:
- Rejestrowanie aplikacji w usłudze Azure AD: upewnij się, że aplikacja jest zarejestrowana w usłudze Azure AD.
- Zainstaluj bibliotekę MSAL: zainstaluj bibliotekę MSAL dla platformy (np.
Microsoft.Identity.Client
dla platformy .NET). - Konfigurowanie biblioteki MSAL: skonfiguruj bibliotekę MSAL przy użyciu identyfikatora klienta aplikacji, identyfikatora dzierżawy i wpisu tajnego klienta.
- 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"
}
Przydatne linki w kontroli dostępu opartej na rolach platformy Azure
- Kroki przypisywania roli platformy Azure.
- Wyświetlanie listy przypisań ról platformy Azure przy użyciu witryny Azure Portal.
- Delegowanie zarządzania przypisaniem ról platformy Azure do innych osób z warunkami.
- role niestandardowe platformy Azure.
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:
- Podpisywanie żądania HTTP.
- dokumentacji uwierzytelniania koncepcyjnego — zawiera informacje na temat sposobu uwierzytelniania przy użyciu zestawów SDK do uwierzytelniania w interfejsach API REST.
- Tworzenie usługi tokenu dostępu użytkowników — samouczek dotyczący usług Azure Communication Services, który pokazuje, jak utworzyć zaufaną usługę uwierzytelniania w celu wygenerowania tokenów dostępu użytkowników za pomocą usługi Azure Functions.