Autentisering
När du gör REST-anrop krävs flera steg för att autentiseras korrekt. Azure Communication Services SDK:er hanterar den här processen åt dig, men att göra begäranden manuellt innebär att du måste hantera den själv.
Typer av autentisering
Azure Communication Services har tre typer av autentisering, de används för olika syften:
- Åtkomstnyckelautentisering för SMS, Nätverksbläddring, Samtalsautomation, Identitet och åtkomsttokenåtgärder. Åtkomstnyckelautentisering är lämplig för program som körs i en betrodd tjänstmiljö.
- Azure RBAC-autentisering för att styra åtkomsten till resurser genom att använda Azure RBAC genom att tilldela Azure-roller.
- autentisering med användaråtkomsttoken för chatt och samtal. Med användaråtkomsttoken kan dina klientprogram autentiseras direkt mot Azure Communication Services. Dessa token genereras på en tokenetableringstjänst på serversidan som du skapar. De tillhandahålls sedan till klientenheter som använder token för att initiera klientbiblioteken för chatt och samtal.
Åtkomstnyckelautentisering
Åtkomstnyckelautentisering används när begäranden inte görs av ditt slutanvändarprogram. Kör dessa begäranden i en betrodd tjänstmiljö.
I den här autentiseringsmetoden signeras begäranden med hjälp av en klientgenererad hashbaserad kod för meddelandeautentisering (HMAC).
Kontrollera att du har följande innan du kommer igång:
- Åtkomstnyckeln för Azure Communication Services
- Slutpunkten för Azure Communication Service
- URL-sökvägen och HTTP-verbet som du anropar
- En utvecklingsmiljö som kan generera HMACs, SHA256-hashar och utföra Base64-åtgärder.
När du har dessa objekt kan du fortsätta med att signera din begäran.
Signera en HTTP-begäran
Kontrollera att du har följande värden tillgängliga:
- HTTP-begärandemetod (till exempel
GET
ellerPUT
) - UtC-tidsstämpel (Coordinated Universal Time) för begäran enligt RFC1123 standard
- HTTP-begärandevärd (den
<authority>
URI-komponenten som anges i RFC2396) - HTTP-begärandetext hashas med sha256-algoritmen
- HTTP-begärandesökväg (
<path>
och<query>
sammanfogade av?
komponenter enligt RFC2396)
Verb=<http_method> Timestamp=<current_datetime> Host=<uri_authority> ContentHash=SHA256(<request_body>) URIPathAndQuery=<uri_path>?<uri_query>
- HTTP-begärandemetod (till exempel
Konstruera strängen som ska signeras genom att sammanfoga värdena på följande sätt:
StringToSign=Verb + "\n" URIPathAndQuery + "\n" Timestamp + ";" + Host + ";" + ContentHash
Generera en HMAC-256-signatur för den UTF-8-kodade sträng som du skapade i föregående steg. Koda sedan dina resultat som Base64. Du behöver också Base64-avkoda din åtkomstnyckel. Använd följande format (visas som pseudokod):
Signature=Base64(HMAC-SHA256(UTF8(StringToSign), Base64.decode(<your_access_key>)))
Lägg till följande rubriker i begäran:
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>"
När du tar emot begäran validerar tjänsten signaturen och tidsstämpeln för att skydda mot vissa säkerhetsattacker, inklusive reprisattacker. Mer information om hur du signerar HTTP-begäran på olika programmeringsspråk finns i självstudien om HMAC-rubriksignering.
Azure RBAC-autentisering
Azure-plattformen ger rollbaserad åtkomst (Azure RBAC) för att styra åtkomsten till resurserna. Azure RBAC-säkerhetsobjektet representerar en användare, grupp, tjänstens huvudnamn eller hanterad identitet som begär åtkomst till Azure-resurser.
Microsoft Entra-autentisering ger överlägsen säkerhet och användarvänlighet jämfört med andra auktoriseringsalternativ. Genom att till exempel använda hanterad identitet undviker du att behöva lagra din kontoåtkomstnyckel i koden, precis som med åtkomstnyckelautentisering. Även om du kan fortsätta att använda Åtkomstnyckelautentisering med program för kommunikationstjänster rekommenderar Microsoft att du flyttar till Microsoft Entra-ID där det är möjligt.
Azure RBAC innehåller många inbyggda roller, kan tilldelas i olika omfång och gör att du kan skapa egna anpassade roller. Den innehåller över 100 inbyggda roller. Det finns fem grundläggande Azure-roller – ägare, deltagare, läsare, rollbaserad åtkomstkontrolladministratör och administratör för användaråtkomst. Mer information om dessa roller finns i självstudiekursen rollbaserad åtkomstkontroll.
Behörigheter som stöds av Azure Communication Services (ACS)
ACS erbjuder specifika behörigheter (acs.read och acs.write) som tillåter kontrollerad åtkomst till olika resurser.
- acs.read-behörighet: ger möjlighet att hämta eller visa data.
- acs.write-behörighet: tillåter ändring eller skapande av data inom samma resurstyper.
Dessutom stöder ACS e-postrelaterade behörigheter:
- acs.email.read: aktiverar läsning eller åtkomst till e-postrelaterade tjänstdata.
- acs.email.write: tillåter ändring eller skapande av e-postrelaterade tjänstdata.
Dessa behörigheter är avgörande för att säkerställa detaljerad åtkomstkontroll och säkerhet över ACS-resurser.
Hämta ytterligare RBAC-token
Om du vill hämta en token för ACS kan du använda MSAL (Microsoft Authentication Library). Här är en stegvis guide:
- Registrera ett program i Azure AD: Kontrollera att din app är registrerad i Azure AD.
- Installera MSAL: Installera MSAL-biblioteket för din plattform (t.ex.
Microsoft.Identity.Client
för .NET). - Konfigurera MSAL: Konfigurera MSAL med programmets klient-ID, klient-ID och klienthemlighet.
- Hämta en token: Använd MSAL för att hämta en token med det nödvändiga omfånget (
https://communication.azure.com/.default
).
Detaljerade instruktioner och kodexempel finns i den officiella MSAL-dokumentationen och dokumentation om åtkomsttoken.
Exempel på HTTP-begäran om att utfärda ACS-åtkomsttoken
Begäran:
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"
]
}
Svar:
{
"token": "token",
"expiresOn": "2023-10-10T21:39:39.3244584+00:00"
}
Användbara länkar i Azure RBAC
- Steg för att tilldela en Azure-roll.
- Lista Azure-rolltilldelningar med hjälp av Azure-portalen.
- Delegera Hantering av Azure-rolltilldelning till andra med villkor.
- anpassade Azure-roller.
Autentisering av användaråtkomsttoken
Med användaråtkomsttoken kan dina klientprogram autentiseras direkt mot Azure Communication Services som en viss användare eller identitet.
Generera/hämta en användaråtkomsttoken
Användaråtkomsttoken genereras av dig i en betrodd miljö. Det enklaste sättet är att generera dem med hjälp av Azure Communication Services Identity SDK. Mer information finns i skapa och hantera användaråtkomsttoken.
Använda en användaråtkomsttoken i en begäran
När du har en lämplig användaråtkomsttoken kan du inkludera den i dina begäranden till Rest-API:et för Azure Communication Services. För att göra det måste du ange det i Authorization
-huvudet med hjälp av HTTP-autentiseringsschemat för bearer Authorization: Bearer <token>
.
Se även
Mer information om Azure Communication Services-autentisering finns i:
- Signera en HTTP-begäran.
- dokumentation om konceptautentisering – Innehåller information om hur du använder SDK:erna för att autentisera mot REST-API:erna.
- Skapa en tjänst för användaråtkomsttoken – En självstudiekurs om Azure Communication Services som visar hur du skapar en betrodd autentiseringstjänst för att generera användaråtkomsttoken med Azure Functions.