Dela via


Autentisera och auktorisera ett program med Microsoft Entra-ID för åtkomst till Azure Service Bus-entiteter

Azure Service Bus stöder användning av Microsoft Entra-ID för att auktorisera begäranden till Service Bus-entiteter (köer, ämnen, prenumerationer eller filter). Med Microsoft Entra-ID kan du använda rollbaserad åtkomstkontroll i Azure (Azure RBAC) för att bevilja behörigheter till ett säkerhetsobjekt, som kan vara en användare, grupp, programtjänsthuvudnamn eller en hanterad identitet för Azure-resurser. En viktig fördel med att använda Microsoft Entra-ID med Azure Service Bus är att du inte behöver lagra dina autentiseringsuppgifter i koden längre. I stället kan du begära en OAuth 2.0-åtkomsttoken från Microsofts identitetsplattform. Om autentiseringen lyckas returnerar Microsoft Entra ID en åtkomsttoken till programmet och programmet kan sedan använda åtkomsttoken för att auktorisera begäran till Service Bus-resurser.

Viktigt!

Du kan inaktivera lokal autentisering eller SAS-nyckelautentisering för ett Service Bus-namnområde och endast tillåta Microsoft Entra-autentisering. Stegvisa instruktioner finns i Inaktivera lokal autentisering.

Översikt

När ett säkerhetsobjekt (en användare, grupp eller ett program) försöker komma åt en Service Bus-entitet måste begäran auktoriseras. Med Microsoft Entra-ID är åtkomst till en resurs en tvåstegsprocess.

  1. Först autentiseras säkerhetsobjektets identitet och en OAuth 2.0-token returneras. Resursnamnet för att begära en token är https://servicebus.azure.net.
  2. Därefter skickas token som en del av en begäran till Service Bus-tjänsten för att auktorisera åtkomst till den angivna resursen.

Autentiseringssteget kräver att en programbegäran innehåller en OAuth 2.0-åtkomsttoken vid körning. Om ett program körs inom en Azure-entitet, till exempel en virtuell Azure-dator, en vm-skalningsuppsättning eller en Azure-funktionsapp, kan den använda en hanterad identitet för att komma åt resurserna. Information om hur du autentiserar begäranden som görs av en hanterad identitet till Service Bus-tjänsten finns i Autentisera åtkomst till Azure Service Bus-resurser med Microsoft Entra-ID och hanterade identiteter för Azure-resurser.

Auktoriseringssteget kräver att en eller flera Azure-roller tilldelas säkerhetsobjektet. Azure Service Bus tillhandahåller Azure-roller som omfattar uppsättningar med behörigheter för Service Bus-resurser. De roller som tilldelas ett säkerhetsobjekt avgör vilka behörigheter som huvudkontot ska ha för Service Bus-resurser. Mer information om hur du tilldelar Azure-roller till Azure Service Bus finns i Inbyggda Azure-roller för Azure Service Bus.

Inbyggda program och webbprogram som gör begäranden till Service Bus kan också auktorisera med Microsoft Entra-ID. Den här artikeln visar hur du begär en åtkomsttoken och använder den för att auktorisera begäranden för Service Bus-resurser.

Inbyggda Azure-roller för Azure Service Bus

Microsoft Entra auktoriserar åtkomsträttigheter till skyddade resurser via Azure RBAC. Azure Service Bus definierar en uppsättning inbyggda Azure-roller som omfattar vanliga uppsättningar med behörigheter som används för åtkomst till Service Bus-entiteter och du kan också definiera anpassade roller för åtkomst till data.

När en Azure-roll tilldelas ett Microsoft Entra-säkerhetsobjekt ger Azure åtkomst till dessa resurser för det säkerhetsobjektet. Åtkomst kan begränsas till prenumerationsnivån, resursgruppen, Service Bus-namnområdet eller entiteten (kö, ämne eller prenumeration). Ett Microsoft Entra-säkerhetsobjekt kan vara en användare, en grupp, ett huvudnamn för programtjänsten eller en hanterad identitet för Azure-resurser.

För Azure Service Bus skyddas redan hanteringen av namnområden och alla relaterade resurser via Azure Portal och Azure-resurshanterings-API:et med hjälp av Azure RBAC-modellen. Azure tillhandahåller följande inbyggda roller för att auktorisera åtkomst till ett Service Bus-namnområde:

Resursomfång

Innan du tilldelar en Azure-roll till ett säkerhetsobjekt ska du bestämma omfånget för åtkomst som säkerhetsobjektet ska ha. Bästa praxis kräver att det alltid är bäst att endast bevilja minsta möjliga omfång.

I följande lista beskrivs de nivåer där du kan begränsa åtkomsten till Service Bus-resurser, med början med det smalaste omfånget:

  • , ämne eller prenumeration: Rolltilldelning gäller för den specifika Service Bus-entiteten. För närvarande stöder Azure Portal inte tilldelning av användare/grupper/hanterade identiteter till Service Bus Azure-roller på ämnesprenumerationsnivå.

  • Service Bus-namnområde: Rolltilldelningen sträcker sig över hela topologin för Service Bus under namnområdet och till den kö eller ämnesprenumeration som är associerad med den.

  • Resursgrupp: Rolltilldelning gäller för alla Service Bus-resurser under resursgruppen.

  • Azure-prenumeration: Rolltilldelning gäller för alla Service Bus-resurser i alla resursgrupper i prenumerationen.

Kommentar

Tänk på att Azure-rolltilldelningar kan ta upp till fem minuter att sprida.

Mer information om hur inbyggda roller definieras finns i Förstå rolldefinitioner. Information om hur du skapar anpassade Azure-roller finns i Anpassade Azure-roller.

Autentisera från ett program

En viktig fördel med att använda Microsoft Entra-ID med Service Bus är att dina autentiseringsuppgifter inte längre behöver lagras i koden. I stället kan du begära en OAuth 2.0-åtkomsttoken från Microsofts identitetsplattform. Microsoft Entra autentiserar säkerhetsobjektet (en användare, en grupp, ett huvudnamn för tjänsten eller en hanterad identitet för Azure-resurser) som kör programmet. Om autentiseringen lyckas returnerar Microsoft Entra-ID:t åtkomsttoken till programmet och programmet kan sedan använda åtkomsttoken för att auktorisera begäranden till Azure Service Bus.

Följande avsnitt visar hur du konfigurerar ditt interna program eller webbprogram för autentisering med Microsofts identitetsplattform 2.0. Mer information om Microsofts identitetsplattform 2.0 finns i översikten över Microsofts identitetsplattform (v2.0).

En översikt över OAuth 2.0-kodbidragsflödet finns i Auktorisera åtkomst till Microsoft Entra-webbprogram med hjälp av OAuth 2.0-kodtillämpningsflödet.

Registrera ditt program med en Microsoft Entra-klientorganisation

Det första steget i att använda Microsoft Entra-ID för att auktorisera Service Bus-entiteter är att registrera ditt klientprogram med en Microsoft Entra-klient från Azure Portal. När du registrerar klientprogrammet anger du information om programmet till AD. Microsoft Entra-ID tillhandahåller sedan ett klient-ID (även kallat ett program-ID) som du kan använda för att associera ditt program med Microsoft Entra-körning. Mer information om klient-ID finns i Program- och tjänsthuvudnamnsobjekt i Microsoft Entra-ID.

Följ stegen i snabbstarten: Registrera ett program med Microsofts identitetsplattform för att registrera ditt program med Microsoft Entra-ID.

Kommentar

Om du registrerar ditt program som ett internt program kan du ange en giltig URI för omdirigerings-URI:n. För interna program behöver det här värdet inte vara en riktig URL. För webbprogram måste omdirigerings-URI:n vara en giltig URI eftersom den anger den URL som token tillhandahålls till.

När du har registrerat ditt program visas program-ID :t (klient-) och katalog-ID:t (klientorganisation) under Inställningar:

Viktigt!

Anteckna TenantId och ApplicationId. Du behöver dessa värden för att köra programmet.

Skärmbild som visar sidan Appregistrering som visar program-ID och klientorganisations-ID.

Mer information om hur du registrerar ett program med Microsoft Entra-ID finns i Integrera program med Microsoft Entra-ID.

Skapa en klienthemlighet

Appen behöver en klienthemlighet för att bevisa sin identitet när det begär en token. Följ dessa steg för att lägga till klienthemligheten.

  1. Gå till din appregistrering i Azure Portal om du inte redan är på sidan.

  2. Välj Certifikat och hemligheter på den vänstra menyn.

  3. Under Klienthemligheter väljer du Ny klienthemlighet för att skapa en ny hemlighet.

    Skärmbild som visar sidan Certifikat och hemligheter med knappen Ny klienthemlighet markerad.

  4. Ange en beskrivning av hemligheten och välj önskat förfallointervall och välj sedan Lägg till.

    Skärmbild som visar sidan Lägg till en klienthemlighet.

  5. Kopiera omedelbart värdet för den nya hemligheten till en säker plats. Fyllnadsvärdet visas bara för dig en gång.

    Skärmbild som visar avsnittet Klienthemligheter med den hemlighet som du har lagt till.

Behörigheter för Service Bus-API:et

Om ditt program är ett konsolprogram måste du registrera ett internt program och lägga till API-behörigheter för Microsoft.ServiceBus till den behörighetsuppsättning som krävs . Interna program behöver också en omdirigerings-uri i Microsoft Entra-ID, som fungerar som identifierare. URI:n behöver inte vara ett nätverksmål. Använd https://servicebus.microsoft.com i det här exemplet eftersom exempelkoden redan använder den URI:n.

Tilldela Azure-roller med hjälp av Azure-portalen

Tilldela en av Service Bus-rollerna till programmets tjänsthuvudnamn i önskat omfång (entitet, Service Bus-namnområde, resursgrupp, Azure-prenumeration). Läs mer om att tilldela roller i Tilldela Azure-roller via Azure Portal.

När du har definierat rollen och dess omfång kan du testa det här beteendet med exemplet på GitHub.

Autentisera Service Bus-klienten

När du har registrerat ditt program och gett det behörighet att skicka/ta emot data i Azure Service Bus kan du autentisera klienten med klienthemlighetens autentiseringsuppgifter, vilket gör att du kan göra begäranden mot Azure Service Bus.

En lista över scenarier där hämtning av token stöds finns i avsnittet Scenarier i Microsoft Authentication Library (MSAL) för .NET GitHub-lagringsplatsen.

Med det senaste Azure.Messaging.ServiceBus-biblioteket kan du autentisera ServiceBusClient med en ClientSecretCredential, som definieras i Azure.Identity-biblioteket .

TokenCredential credential = new ClientSecretCredential("<tenant_id>", "<client_id>", "<client_secret>");
var client = new ServiceBusClient("<fully_qualified_namespace>", credential);

Om du använder de äldre .NET-paketen kan du läsa RoleBasedAccessControl-exemplen på azure-service-bus-exempellagringsplatsen.

Nästa steg

I följande ämnen kan du lära dig mer om Service Bus-meddelanden.