Service Bus-hozzáférés-vezérlés közös hozzáférésű jogosultságkódokkal
Ez a cikk a közös hozzáférésű jogosultságkódokat (SAS) és azok működését, valamint az Azure Service Bus platformfüggetlen használatát ismerteti.
A SAS a Service Bushoz való hozzáférést egy névtéren vagy üzenetküldési entitáson (üzenetsoron vagy témakörön) konfigurált engedélyezési szabályok alapján védi. Az engedélyezési szabálynak van egy neve, meghatározott jogosultságokkal van társítva, és titkosítási kulcsokat tartalmaz. A szabály nevét és kulcsát a Service Bus SDK-val vagy a saját kódjában használhatja SAS-jogkivonat létrehozásához. Az ügyfél ezután átadhatja a jogkivonatot a Service Busnak, hogy igazolja a kért művelet engedélyezését.
Feljegyzés
Az Azure Service Bus támogatja a Service Bus-névtérhez és annak entitásaihoz való hozzáférés engedélyezését a Microsoft Entra ID használatával. A Microsoft Entra ID által visszaadott OAuth 2.0 jogkivonatot használó felhasználók vagy alkalmazások engedélyezése kiváló biztonságot és egyszerű használatot biztosít a közös hozzáférésű jogosultságkódokkal (SAS) szemben. Az SAS-kulcsok nem rendelkeznek részletes hozzáférés-vezérléssel, nehezen kezelhetők/elforgathatók, és nem rendelkeznek az adott felhasználóhoz vagy szolgáltatásnévhez társítható naplózási képességekkel. Ezért javasoljuk a Microsoft Entra ID használatát.
A Microsoft azt javasolja, hogy ha lehetséges, használja a Microsoft Entra ID-t az Azure Service Bus-alkalmazásokkal. További információért tekintse át az alábbi cikkeket:
- Az Azure Service Bus-entitások eléréséhez hitelesíthet és engedélyezhet egy Alkalmazást a Microsoft Entra-azonosítóval.
- Felügyelt identitás hitelesítése Microsoft Entra-azonosítóval az Azure Service Bus-erőforrások eléréséhez
A Service Bus-névtér helyi vagy SAS-kulcsos hitelesítését letilthatja, és csak a Microsoft Entra-hitelesítést engedélyezheti. Részletes útmutatásért tekintse meg a helyi hitelesítés letiltása című témakört.
Az SAS áttekintése
A közös hozzáférésű jogosultságkódok egyszerű jogkivonatokat használó jogcímalapú engedélyezési mechanizmusok. SAS használata esetén a kulcsok soha nem kerülnek a vezetékre. A kulcsok a szolgáltatás által később ellenőrizhető kriptográfiai aláírási információkhoz használhatók. Az SAS a felhasználónévhez és a jelszósémához hasonlóan használható, ahol az ügyfél azonnal rendelkezik egy engedélyezési szabály nevével és egy egyező kulccsal. Az SAS az összevont biztonsági modellhez hasonlóan használható, ahol az ügyfél egy korlátozott ideig korlátozott és aláírt hozzáférési jogkivonatot kap egy biztonsági jogkivonat-szolgáltatástól anélkül, hogy az aláírási kulcs birtokába jut.
A Service Bus SAS-hitelesítése a társított hozzáférési jogosultságokkal rendelkező nevesített megosztott hozzáférés-engedélyezési szabályzatokkal , valamint egy elsődleges és másodlagos titkosítási kulcspárral van konfigurálva. A kulcsok 256 bites értékek a 64-es alapszintű ábrázolásban. A szabályokat a névtér szintjén, Service Bus-üzenetsorokon és témakörökben konfigurálhatja.
Feljegyzés
Ezek a kulcsok egyszerű szöveges sztringek, amelyek alapszintű 64-es megjelenítést használnak, és használat előtt nem szabad dekódolni őket.
A közös hozzáférésű jogosultságkód jogkivonata tartalmazza a választott engedélyezési szabályzat nevét, a elérni kívánt erőforrás URI-ját, egy lejárati pillanatot és egy HMAC-SHA256 titkosítási aláírást, amely ezeken a mezőkön a kiválasztott engedélyezési szabály elsődleges vagy másodlagos titkosítási kulcsával van kiszámítva.
Megosztott hozzáférés-engedélyezési szabályzatok
Minden Service Bus-névtér és minden Service Bus-entitás rendelkezik szabályokból álló közös hozzáférés-engedélyezési szabályzattal. A névtér szintjén lévő szabályzat a névtérben lévő összes entitásra vonatkozik, függetlenül az egyéni szabályzatkonfigurációjuktól.
Minden engedélyezési házirend-szabály esetében három információ közül választhat: név, hatókör és jogosultságok. A név csak ez; egy egyedi név ezen a hatókörön belül. A hatókör elég egyszerű: ez a szóban forgó erőforrás URI-ja. Service Bus-névtér esetén a hatókör a teljes névtér, például https://<yournamespace>.servicebus.windows.net/
.
A szabályzatszabály által biztosított jogok a következők kombinációja lehetnek:
- Küldés – Jogot biztosít az entitásnak küldött üzenetek küldésére
- Figyelés – Jogosultságot biztosít a fogadásra (üzenetsor, előfizetések) és az összes kapcsolódó üzenetkezelésre
- Kezelés – Jogot biztosít a névtér topológiájának kezelésére, beleértve az entitások létrehozását és törlését
A Kezelés jog tartalmazza a Küldés és figyelés jogosultságot.
A névtér- vagy entitásszabályzatok legfeljebb 12 közös hozzáférésű hozzáférés-engedélyezési szabályt tartalmazhatnak, amelyek három szabálykészletet biztosítanak, amelyek mindegyike lefedi az alapvető jogokat, valamint a Küldés és figyelés kombinációját. Ez a korlát entitásonként van, ami azt jelenti, hogy a névtér és minden entitás legfeljebb 12 közös hozzáférésű hozzáférés-engedélyezési szabmával rendelkezhet. Ez a korlát aláhúzza, hogy az SAS-szabályzattároló nem felhasználói vagy szolgáltatásfiók-tárolónak készült. Ha az alkalmazásnak felhasználói vagy szolgáltatásidentitások alapján kell hozzáférést biztosítania a Service Bushoz, olyan biztonsági jogkivonat-szolgáltatást kell implementálnia, amely SAS-jogkivonatokat ad ki a hitelesítés és a hozzáférés-ellenőrzés után.
Az engedélyezési szabályhoz elsődleges kulcs és másodlagos kulcs tartozik. Ezek a kulcsok kriptográfiailag erős kulcsok. Ne veszítsd el őket, és ne szivárogtasd ki őket – mindig elérhetők lesznek az Azure Portalon. A létrehozott kulcsok bármelyikét használhatja, és bármikor újra létrehozhatja őket. Ha újragenerál vagy módosít egy kulcsot a szabályzatban, az ezen a kulcson alapuló összes korábban kiadott jogkivonat azonnal érvénytelen lesz. Az ilyen jogkivonatok alapján létrehozott kapcsolatok azonban mindaddig működnek, amíg a jogkivonat le nem jár.
Service Bus-névtér létrehozásakor a rendszer automatikusan létrehoz egy RootManageSharedAccessKey nevű szabályzatszabályt a névtérhez. Ez a szabályzat a teljes névtérhez rendelkezik Kezelési engedélyekkel. Javasoljuk, hogy ezt a szabályt rendszergazdai gyökérfiókként kezelje, és ne használja az alkalmazásban. A portál névterének Megosztott hozzáférési szabályzatok lapján további szabályzatszabályokat hozhat létre a PowerShell vagy az Azure CLI használatával.
Javasoljuk, hogy rendszeresen újragenerálja a SharedAccessAuthorizationRule objektumban használt kulcsokat. Az elsődleges és másodlagos kulcshelyek léteznek, hogy fokozatosan válthassa a kulcsokat. Ha az alkalmazás általában az elsődleges kulcsot használja, az elsődleges kulcsot átmásolhatja a másodlagos kulcshelyre, és csak ezután hozhatja létre újra az elsődleges kulcsot. Az új elsődleges kulcs értéke ezután konfigurálható az ügyfélalkalmazásokba, amelyek továbbra is hozzáférnek a régi elsődleges kulcs használatával a másodlagos ponton. Az összes ügyfél frissítése után újragenerálhatja a másodlagos kulcsot, hogy végül kivonja a régi elsődleges kulcsot.
Ha tudja vagy gyanítja, hogy egy kulcs feltört, és vissza kell vonnia a kulcsokat, a SharedAccessAuthorizationRule PrimaryKey és SecondaryKey elemét is újragenerálhatja, és új kulcsokra cserélheti őket. Ez az eljárás érvényteleníti a régi kulcsokkal aláírt összes jogkivonatot.
A SAS használatával kapcsolatos ajánlott eljárások
Ha közös hozzáférésű jogosultságkódokat használ az alkalmazásokban, két lehetséges kockázattal kell tisztában lennie:
- Ha kiszivárog egy SAS, azt bárki használhatja, aki beszerezi, ami veszélyeztetheti a Service Bus-erőforrásokat.
- Ha egy ügyfélalkalmazáshoz biztosított SAS lejár, és az alkalmazás nem tud új SAS-t lekérni a szolgáltatásból, akkor az alkalmazás működése akadályozható lehet.
A megosztott hozzáférésű jogosultságkódok használatára vonatkozó alábbi javaslatok segíthetnek csökkenteni ezeket a kockázatokat:
- Szükség esetén az ügyfelek automatikusan megújítják az SAS-t: Az ügyfeleknek jóval a lejárat előtt meg kell újítaniuk az SAS-t, hogy időt hagyhassanak az újrapróbálkozáshoz, ha az SAS-t biztosító szolgáltatás nem érhető el. Ha az SAS-t néhány azonnali, rövid élettartamú művelethez kell használni, amelyek várhatóan a lejárati időn belül befejeződnek, akkor szükségtelen lehet, mivel az SAS-t várhatóan nem újítják meg. Ha azonban olyan ügyfele van, amely rutinszerűen küld kéréseket SAS-en keresztül, akkor a lejárat lehetősége is felmerül. A legfontosabb szempont az sas rövid élettartamú (korábban már említett) igényének egyensúlyba hozása annak szükségességével, hogy az ügyfél elég korán kérjen megújítást (a sikeres megújítás előtt lejáró SAS miatti fennakadás elkerülése érdekében).
- Legyen óvatos a SAS kezdési időpontjával: Ha az SAS kezdési idejét most állítja be, akkor az óraeltérés (a különböző gépek szerinti aktuális idő eltérései) miatt előfordulhat, hogy az első néhány percben időnként hibák jelentkeznek. A kezdési idő általában legalább 15 perc lehet a múltban. Vagy egyáltalán ne állítsa be, ami minden esetben azonnal érvényessé teszi. Általában ugyanez vonatkozik a lejárati időre is. Ne feledje, hogy bármilyen kérés esetén akár 15 percnyi óraeltérést is megfigyelhet bármelyik irányban.
- Konkrétan a elérni kívánt erőforrással kell rendelkeznie: A biztonsági ajánlott eljárás a minimálisan szükséges jogosultságok biztosítása a felhasználó számára. Ha egy felhasználónak csak egyetlen entitás olvasási hozzáférésére van szüksége, akkor olvasási hozzáférést kell biztosítani az adott entitáshoz, és nem kell olvasási/írási/törlési hozzáférést adni az összes entitáshoz. Emellett csökkenti a kárt, ha egy SAS megsérül, mert az SAS-nek kevesebb hatalma van a támadó kezében.
- Ne mindig használja az SAS-t: Előfordulhat, hogy egy adott művelettel kapcsolatos kockázatok meghaladják az SAS előnyeit. Ilyen műveletekhez hozzon létre egy középszintű szolgáltatást, amely az üzleti szabályok érvényesítése, hitelesítése és naplózása után ír a Service Busba.
- Mindig használjon HTTP-ket: Mindig a Https használatával hozzon létre vagy terjesszen el egy SAS-t. Ha egy SAS-t http-en keresztül ad át, és elfogják, a középső csatolást végrehajtó támadó képes elolvasni az SAS-t, majd ugyanúgy használni, ahogy a kívánt felhasználó is, ami veszélyeztetheti a bizalmas adatokat, vagy lehetővé teszi az adatok rosszindulatú felhasználó általi sérülését.
Megosztott hozzáférésű jogosultságkód hitelesítésének konfigurálása
Konfigurálhatja a Megosztott hozzáférés engedélyezési szabályzatát Service Bus-névtereken, üzenetsorokon vagy témakörökben. A Service Bus-előfizetésen való konfigurálás jelenleg nem támogatott, de a névtérben vagy témakörben konfigurált szabályokkal biztonságossá teheti az előfizetésekhez való hozzáférést.
Ebben az ábrában a manageRuleNS, a sendRuleNS és a listenRuleNS engedélyezési szabályok az 1. üzenetsorra és a T1. témakörre is érvényesek, míg a ListenRuleQ és a sendRuleQ csak az 1. üzenetsorra, a sendRuleT pedig csak a T1. témakörre vonatkozik.
Közös hozzáférésű jogosultságkód jogkivonat létrehozása
Bármely ügyfél, amely hozzáféréssel rendelkezik egy engedélyezési szabály nevének nevéhez és annak egyik aláíró kulcsához, létrehozhat egy SAS-jogkivonatot. A jogkivonat egy sztring a következő formátumban történő létrehozásához jön létre:
SharedAccessSignature sig=<signature-string>&se=<expiry>&skn=<keyName>&sr=<URL-encoded-resourceURI>
se
- A jogkivonat lejárati ideje azonnal. Az 1970. január 1-jei (UNIX) korszak00:00:00 UTC
óta eltelt másodperceket tükröző egész szám, amikor a jogkivonat lejár.skn
- Az engedélyezési szabály neve.sr
- A hozzáférés alatt álló erőforrás URL-kódolt URI-ja.sig
- URL-kódolású HMACSHA256 aláírás. A kivonatszámítás a következő pszeudokódhoz hasonlóan néz ki, és a nyers bináris kimenet 64-es bázisát adja vissza.urlencode(base64(hmacsha256(urlencode('https://<yournamespace>.servicebus.windows.net/') + "\n" + '<expiry instant>', '<signing key>')))
Fontos
Az SAS-jogkivonat különböző programozási nyelvek használatával történő létrehozására vonatkozó példákért lásd: SAS-jogkivonat létrehozása.
A jogkivonat tartalmazza a nem kivonatolt értékeket, hogy a címzett ugyanazokkal a paraméterekkel újrafordítsa a kivonatot, és ellenőrizze, hogy a kiállító rendelkezik-e érvényes aláírási kulccsal.
Az erőforrás URI-ja annak a Service Bus-erőforrásnak a teljes URI-ja, amelyhez a hozzáférés igényelve van. Például, http://<namespace>.servicebus.windows.net/<entityPath>
vagy sb://<namespace>.servicebus.windows.net/<entityPath>
; azaz http://contoso.servicebus.windows.net/contosoTopics/T1/Subscriptions/S3
.
Az URI-nak százalékkódoltnak kell lennie.
Az aláíráshoz használt közös hozzáférés-engedélyezési szabályt az URI által megadott entitáson vagy annak egyik hierarchikus szülőjén kell konfigurálni. Például, http://contoso.servicebus.windows.net/contosoTopics/T1
vagy http://contoso.servicebus.windows.net
az előző példában.
Az SAS-jogkivonat érvényes az összes olyan erőforrásra, amelynek előtagja a <resourceURI>
használt.signature-string
Kulcsok újragenerálása
Javasoljuk, hogy rendszeresen újragenerálja a közös hozzáférésű hozzáférés engedélyezési házirendjében használt kulcsokat. Az elsődleges és másodlagos kulcshelyek léteznek, hogy fokozatosan válthassa a kulcsokat. Ha az alkalmazás általában az elsődleges kulcsot használja, az elsődleges kulcsot átmásolhatja a másodlagos kulcshelyre, és csak ezután hozhatja létre újra az elsődleges kulcsot. Az új elsődleges kulcs értéke ezután konfigurálható az ügyfélalkalmazásokba, amelyek továbbra is hozzáférnek a régi elsődleges kulcs használatával a másodlagos ponton. Az összes ügyfél frissítése után újragenerálhatja a másodlagos kulcsot, hogy végül kivonja a régi elsődleges kulcsot.
Ha tudja vagy gyanítja, hogy egy kulcs sérült, és vissza kell vonnia a kulcsokat, újra létrehozhatja a közös hozzáférésű hozzáférési engedélyezési házirend elsődleges és másodlagos kulcsát is, és új kulcsokkal helyettesítheti őket. Ez az eljárás érvényteleníti a régi kulcsokkal aláírt összes jogkivonatot.
Az elsődleges és másodlagos kulcsok azure portalon való újragenerálásához kövesse az alábbi lépéseket:
Lépjen a Service Bus-névtérre az Azure Portalon.
Válassza a megosztott hozzáférési szabályzatokat a bal oldali menüben.
Válassza ki a szabályzatot a listából. Az alábbi példában a RootManageSharedAccessKey van kiválasztva.
Az elsődleges kulcs újragenerálásához az SAS-házirend: RootManageSharedAccessKey lapon válassza az Elsődleges kulcs újragenerálása lehetőséget a parancssávon.
A másodlagos kulcs újragenerálásához az SAS-házirend: RootManageSharedAccessKey lapon válassza a ... lehetőséget a parancssávon, majd válassza a Másodlagos kulcs újragenerálása lehetőséget.
Ha Az Azure PowerShellt használja, a parancsmaggal újragenerálhatja a New-AzServiceBusKey
Service Bus-névtér elsődleges és másodlagos kulcsait. A paraméterrel megadhatja a generált elsődleges és másodlagos kulcsok értékeit -KeyValue
is.
Ha Az Azure CLI-t használja, a paranccsal újragenerálhatja a az servicebus namespace authorization-rule keys renew
Service Bus-névtér elsődleges és másodlagos kulcsait. A paraméterrel megadhatja a generált elsődleges és másodlagos kulcsok értékeit --key-value
is.
Közös hozzáférésű jogosultságkód-hitelesítés a Service Bus használatával
Az alábbiakban ismertetett forgatókönyv az engedélyezési szabályok konfigurálását, az SAS-jogkivonatok létrehozását és az ügyfél-engedélyezést foglalja magában.
A konfigurációt szemléltető és SAS-hitelesítést használó Service Bus-alkalmazás mintáját lásd: Közös hozzáférésű jogosultságkód-hitelesítés a Service Bus használatával.
Hozzáférés a megosztott hozzáférés engedélyezésére vonatkozó szabályokhoz egy entitáson
A Service Bus felügyeleti kódtárainak üzenetsoraiban vagy témaköreiben található lekérési/frissítési művelettel érheti el/frissítheti a megfelelő közös hozzáférésű hozzáférési engedélyezési szabályokat. Az üzenetsorok vagy témakörök ezen kódtárak használatával történő létrehozásakor is hozzáadhatja a szabályokat.
Közös hozzáférésű jogosultságkódon alapuló hitelesítés használata
A Service Bus SDK bármelyikét használó alkalmazások a hivatalosan támogatott nyelvek (például .NET, Java, JavaScript és Python) bármelyikében használhatják az SAS-engedélyezést az ügyfélkonstruktornak átadott kapcsolati sztring keresztül.
A kapcsolati sztringek tartalmazhatnak egy szabálynevet (SharedAccessKeyName) és szabálykulcsot (SharedAccessKey) vagy egy korábban kibocsátott jogkivonatot (SharedAccessSignature). Ha a kapcsolati sztring egy kapcsolati sztring elfogadó konstruktornak vagy gyári metódusnak átadott kapcsolati sztring, a rendszer automatikusan létrehozza és feltölti az SAS-jogkivonat-szolgáltatót.
Az SAS-engedélyezés Service Bus-előfizetésekkel való használatához használhatja a Service Bus-névtérben vagy egy témakörben konfigurált SAS-kulcsokat.
A közös hozzáférésű jogosultságkód használata (HTTP-szinten)
Most, hogy már tudja, hogyan hozhat létre közös hozzáférésű jogosultságkódokat a Service Bus bármely entitásához, készen áll a HTTP POST végrehajtására:
POST https://<yournamespace>.servicebus.windows.net/<yourentity>/messages
Content-Type: application/json
Authorization: SharedAccessSignature sr=https%3A%2F%2F<yournamespace>.servicebus.windows.net%2F<yourentity>&sig=<yoursignature from code above>&se=1438205742&skn=KeyName
ContentType: application/atom+xml;type=entry;charset=utf-8
Ne feledje, ez mindenre jó. SAS-t létrehozhat egy üzenetsorhoz, témakörhöz vagy előfizetéshez.
Ha SAS-jogkivonatot ad egy feladónak vagy ügyfélnek, akkor nem rendelkezik közvetlenül a kulcssal, és nem tudják visszafejteni a kivonatot annak beszerzéséhez. Így ön szabályozhatja, hogy mit férhetnek hozzá, és mennyi ideig. Fontos megjegyezni, hogy ha módosítja a házirend elsődleges kulcsát, az abból létrehozott közös hozzáférésű jogosultságkódok érvénytelenek lesznek.
A közös hozzáférésű jogosultságkód használata (AMQP-szinten)
Az előző szakaszban láthatta, hogyan használhatja az SAS-jogkivonatot egy HTTP POST-kéréssel, amely adatokat küld a Service Busnak. Mint tudja, a Service Bus az Advanced Message Queuing Protocol (AMQP) használatával érhető el, amely a teljesítmény szempontjából előnyben részesített protokoll, számos esetben. Az AMQP sas-jogkivonat-használatát az AMQP jogcímalapú biztonsági verzió 1.0 című dokumentum ismerteti, amely 2013 óta működik, de az Azure ma támogatja.
Mielőtt elkezdene adatokat küldeni a Service Busnak, a közzétevőnek el kell küldenie az SAS-jogkivonatot egy AMQP-üzenetben egy jól definiált, $cbs nevű AMQP-csomópontra (ez a szolgáltatás által az összes SAS-jogkivonat beszerzéséhez és érvényesítéséhez használt "speciális" üzenetsorként tekinthető meg). A közzétevőnek meg kell adnia a Válasz mezőt az AMQP-üzenetben; ez az a csomópont, amelyben a szolgáltatás a jogkivonat érvényesítésének eredményével válaszol a közzétevőnek (a közzétevő és a szolgáltatás közötti egyszerű kérés-válaszminta). Ez a válaszcsomópont "menet közben" jön létre, és az AMQP 1.0 specifikációjának megfelelően "távoli csomópont dinamikus létrehozásáról" beszél. Miután ellenőrizte, hogy az SAS-jogkivonat érvényes-e, a közzétevő továbbléphet, és elkezdhet adatokat küldeni a szolgáltatásnak.
Az alábbi lépések bemutatják, hogyan küldheti el az SAS-jogkivonatot AMQP protokollal a AMQP.NET Lite-kódtár használatával. Ez akkor hasznos, ha nem tudja használni a hivatalos Service Bus SDK-t (például WinRT-en, .NET Compact Frameworken, .NET Micro Frameworken és Mono-n) a C#-ban. Ez a kódtár hasznos annak megértéséhez, hogy a jogcímalapú biztonság hogyan működik az AMQP szintjén, ahogy látta, hogyan működik a HTTP-szinten (egy HTTP POST kéréssel és az "Engedélyezés" fejlécen belül küldött SAS-jogkivonattal). Ha nincs szüksége ilyen mély ismeretekre az AMQP-ről, használhatja a hivatalos Service Bus SDK-t bármely támogatott nyelven, például .NET, Java, JavaScript, Python és Go nyelven, amely ezt teszi ön helyett.
C#
/// <summary>
/// Send claim-based security (CBS) token
/// </summary>
/// <param name="shareAccessSignature">Shared access signature (token) to send</param>
private bool PutCbsToken(Connection connection, string sasToken)
{
bool result = true;
Session session = new Session(connection);
string cbsClientAddress = "cbs-client-reply-to";
var cbsSender = new SenderLink(session, "cbs-sender", "$cbs");
var cbsReceiver = new ReceiverLink(session, cbsClientAddress, "$cbs");
// construct the put-token message
var request = new Message(sasToken);
request.Properties = new Properties();
request.Properties.MessageId = Guid.NewGuid().ToString();
request.Properties.ReplyTo = cbsClientAddress;
request.ApplicationProperties = new ApplicationProperties();
request.ApplicationProperties["operation"] = "put-token";
request.ApplicationProperties["type"] = "servicebus.windows.net:sastoken";
request.ApplicationProperties["name"] = Fx.Format("amqp://{0}/{1}", sbNamespace, entity);
cbsSender.Send(request);
// receive the response
var response = cbsReceiver.Receive();
if (response == null || response.Properties == null || response.ApplicationProperties == null)
{
result = false;
}
else
{
int statusCode = (int)response.ApplicationProperties["status-code"];
if (statusCode != (int)HttpStatusCode.Accepted && statusCode != (int)HttpStatusCode.OK)
{
result = false;
}
}
// the sender/receiver might be kept open for refreshing tokens
cbsSender.Close();
cbsReceiver.Close();
session.Close();
return result;
}
A PutCbsToken()
metódus megkapja a kapcsolatot (AMQP kapcsolatosztálypéldány az AMQP .NET Lite-kódtár által biztosítottak szerint), amely a szolgáltatáshoz való TCP-kapcsolatot és az sasToken paramétert jelöli, amely az elküldendő SAS-jogkivonat.
Feljegyzés
Fontos, hogy a kapcsolat névtelen SASL hitelesítési mechanizmussal jön létre (és ne az alapértelmezett EGYSZERŰ felhasználónévvel és jelszóval, amikor nem kell elküldenie az SAS-jogkivonatot).
Ezután a közzétevő két AMQP-hivatkozást hoz létre az SAS-jogkivonat elküldéséhez és a szolgáltatástól kapott válasz (a jogkivonat-érvényesítési eredmény) fogadásához.
Az AMQP-üzenet számos tulajdonságot és több információt tartalmaz, mint egy egyszerű üzenet. Az SAS-jogkivonat az üzenet törzse (a konstruktor használatával). A "Válasz" tulajdonság a csomópont nevére van beállítva, hogy megkapja az érvényesítési eredményt a fogadó hivatkozáson (tetszés szerint módosíthatja a nevét, és a szolgáltatás dinamikusan hozza létre). A szolgáltatás az utolsó három alkalmazás-/egyéni tulajdonsággal jelzi, hogy milyen műveletet kell végrehajtania. A CBS-tervezet specifikációjának megfelelően a művelet neve ("put-token"), a jogkivonat típusa (ebben az esetben a ) és annak a célközönségnek a neve, servicebus.windows.net:sastoken
amelyre a jogkivonat vonatkozik (a teljes entitás).
Miután a közzétevő elküldte az SAS-jogkivonatot a feladó hivatkozására, a közzétevőnek el kell olvasnia a választ a fogadó hivatkozáson. A válasz egy egyszerű AMQP-üzenet egy "status-code" nevű alkalmazástulajdonságtal, amely ugyanazokat az értékeket tartalmazhatja, mint egy HTTP-állapotkód.
A Service Bus-műveletekhez szükséges jogosultságok
Az alábbi táblázat a Service Bus-erőforrások különböző műveleteihez szükséges hozzáférési jogosultságokat mutatja be.
Művelet | Igény megadása kötelező | Jogcím hatóköre |
---|---|---|
Namespace | ||
Engedélyezési szabály konfigurálása névtéren | Kezelés | Bármely névtércím |
Szolgáltatásregisztrációs adatbázis | ||
Privát szabályzatok számbavétele | Kezelés | Bármely névtércím |
Névtér figyelésének megkezdése | Figyelés | Bármely névtércím |
Üzenetek küldése névtérbeli figyelőnek | Küldés | Bármely névtércím |
Feldolgozási sor | ||
Üzenetsor létrehozása | Kezelés | Bármely névtércím |
Üzenetsor törlése | Kezelés | Bármely érvényes üzenetsor-cím |
Üzenetsorok számbavétele | Kezelés | /$Resources/Üzenetsorok |
Az üzenetsor leírásának lekérése | Kezelés | Bármely érvényes üzenetsor-cím |
Engedélyezési szabály konfigurálása üzenetsorhoz | Kezelés | Bármely érvényes üzenetsor-cím |
Küldés az üzenetsorba | Küldés | Bármely érvényes üzenetsor-cím |
Üzenetek fogadása üzenetsorból | Figyelés | Bármely érvényes üzenetsor-cím |
Üzenetek elhagyása vagy befejezése az üzenet betekintő zárolási módban való fogadása után | Figyelés | Bármely érvényes üzenetsor-cím |
Üzenet elhalasztása későbbi lekéréshez | Figyelés | Bármely érvényes üzenetsor-cím |
Deadletter egy üzenet | Figyelés | Bármely érvényes üzenetsor-cím |
Üzenetsor-munkamenethez társított állapot lekérése | Figyelés | Bármely érvényes üzenetsor-cím |
Üzenetsor-munkamenethez társított állapot beállítása | Figyelés | Bármely érvényes üzenetsor-cím |
Üzenet ütemezése későbbi kézbesítéshez | Figyelés | Bármely érvényes üzenetsor-cím |
Téma | ||
Üzenettémakör létrehozása | Kezelés | Bármely névtércím |
Témakör törlése | Kezelés | Bármely érvényes témakörcím |
Témakörök számbavétele | Kezelés | /$Resources/Témakörök |
A témakör leírásának lekérése | Kezelés | Bármely érvényes témakörcím |
Engedélyezési szabály konfigurálása egy témakörhöz | Kezelés | Bármely érvényes témakörcím |
Küldés a témakörbe | Küldés | Bármely érvényes témakörcím |
Előfizetés | ||
Előfizetés létrehozása | Kezelés | Bármely névtércím |
Előfizetés törlése | Kezelés | .. /myTopic/Subscriptions/mySubscription |
Előfizetések számbavétele | Kezelés | .. /myTopic/Subscriptions |
Előfizetés leírásának lekérése | Kezelés | .. /myTopic/Subscriptions/mySubscription |
Üzenetek elhagyása vagy befejezése az üzenet betekintő zárolási módban való fogadása után | Figyelés | .. /myTopic/Subscriptions/mySubscription |
Üzenet elhalasztása későbbi lekéréshez | Figyelés | .. /myTopic/Subscriptions/mySubscription |
Deadletter egy üzenet | Figyelés | .. /myTopic/Subscriptions/mySubscription |
Témakör-munkamenethez társított állapot lekérése | Figyelés | .. /myTopic/Subscriptions/mySubscription |
Témakör-munkamenethez társított állapot beállítása | Figyelés | .. /myTopic/Subscriptions/mySubscription |
Szabályok | ||
Szabály létrehozása | Figyelés | .. /myTopic/Subscriptions/mySubscription |
Szabály törlése | Figyelés | .. /myTopic/Subscriptions/mySubscription |
Szabályok számbavétele | Kezelés vagy figyelés | .. /myTopic/Subscriptions/mySubscription/Rules |
Következő lépések
A Service Bus üzenetkezelésről az alábbi témakörökben találhat további információkat.