Uwierzytelnianie CBS dla Azure AMQP Service Bus

· Funkcje

Od sgcWebSockets 2026.1.0 Azure AMQP 1.0 obsługuje uwierzytelnianie CBS za pomocą tokenów SAS i JWT.

Azure Service Bus implementuje Claims-Based Security (CBS) przez AMQP w celu autoryzacji nadawców i odbiorców po wstępnym handshake SASL. Klient otwiera łącze zarządzania do węzła $cbs i wysyła żądanie put-token zawierające token SAS (Shared Access Signature) lub JWT wystawiony przez Microsoft Entra ID. Po zweryfikowaniu tokenu przez brokera autoryzacja jest buforowana przez czas jego ważności, a aplikacja może tworzyć łącza nadawcy i odbiorcy dla kolejek, tematów lub subskrypcji.


Jak działa Azure CBS

Azure Service Bus implementuje CBS przez AMQP w celu autoryzacji nadawców i odbiorców po wstępnym handshake SASL. Klient otwiera łącze zarządzania do węzła $cbs i wysyła żądanie put-token zawierające token SAS lub JWT wystawiony przez Microsoft Entra ID. Po zweryfikowaniu tokenu przez brokera autoryzacja jest buforowana przez czas jego ważności, a aplikacja może tworzyć łącza nadawcy i odbiorcy dla kolejek, tematów lub subskrypcji.

Klient AMQP1 w sgcWebSockets 2026.1.0 automatyzuje ten przepływ za pomocą dwóch metod pomocniczych naturalnych dla programistów Delphi:


Obie metody wymagają aktywnego połączenia AMQP i przyjmują następujące parametry:

Poniższe przykłady pokazują, jak uwierzytelniać się przez CBS przed wysyłaniem wiadomości.

// ... create TCP client
oClient := TsgcWebSocketClient.Create(nil);
oClient.Specifications.RFC6455 := False;
oClient.Host := 'esegece.servicebus.windows.net';
oClient.Host := 'esegece.servicebus.windows.net';
oClient.Port := 5671;
oClient.TLS := True;
// ... create AMQP1 protocol client
oAMQP1 := TsgcWSClient_AMQP1.Create(nil);
oAMQP1.Specifications.RFC6455 := False;
oAMQP1.AMQPOptions.Authentication.AuthType := amqp1authSASLAnonymous;
oAMQP1.Client := oClient;
// ... connect and publish SAS token through CBS
oClient.Active := True;
// ... wait till the connection is active and send the authentication
oAMQP1.CreateAzureCbsSasToken('cbs', 'esegece', 'queue1',
  'RootManageSharedAccessKey', 'BhJ78+w8kMXhS/eE/nBy0cRzodx9tipbi+ASbAXIaH8=',
  3600, 10000, True);

Następny przykład skupia się wyłącznie na uwierzytelnianiu Microsoft Entra ID (Azure AD) przy użyciu tokenów JWT. Pokazuje, jak żądać tokenu przepływem client credentials i publikować go do $cbs przed tworzeniem łączy do wysyłania lub odbierania wiadomości. 

oClient := TsgcWebSocketClient.Create(nil);
oClient.Specifications.RFC6455 := False;
oClient.Host := 'esegece.servicebus.windows.net';
oClient.Host := 'esegece.servicebus.windows.net';
oClient.Port := 5671;
oClient.TLS := True;
// ... create AMQP1 protocol client
oAMQP1 := TsgcWSClient_AMQP1.Create(nil);
oAMQP1.Specifications.RFC6455 := False;
oAMQP1.AMQPOptions.Authentication.AuthType := amqp1authSASLAnonymous;
oAMQP1.Client := oClient;
// ... connect and publish JWT through CBS
oClient.Active := True;
// ... wait till the connection is active and send the authentication
oAMQP1.CreateAzureCbsJWT('cbs', 'esegece', 'queue1',
  '00000000-0000-0000-0000-000000000000', // Tenant ID
  '11111111-1111-1111-1111-111111111111', // Application ID
  'client-secret', 8080, 3600, 10000, True);