Azure AMQP Service Bus CBS Authentication

· Özellikler

sgcWebSockets 2026.1.0'dan itibaren Azure AMQP 1.0, SAS Tokenları ve JWT kullanarak CBS Kimlik Doğrulamasını destekler.

Azure Service Bus, ilk SASL el sıkışmasından sonra gönderenleri ve alıcıları yetkilendirmek için AMQP üzerinden Claims-Based Security (CBS) uygular. İstemci, $cbs düğümüne bir yönetim bağlantısı açar ve Shared Access Signature (SAS) tokenı veya Microsoft Entra ID tarafından verilen bir JSON Web Token (JWT) içeren bir put-token isteği gönderir. Broker tokenı doğruladığında, yetkilendirme ömrü boyunca önbelleğe alınır ve uygulama kuyruklara, konulara veya aboneliklere karşı gönderen ve alıcı bağlantıları oluşturmaya devam edebilir.


Azure CBS Nasıl Çalışır

Azure Service Bus, ilk SASL el sıkışmasından sonra gönderenleri ve alıcıları yetkilendirmek için AMQP üzerinden CBS uygular. İstemci, $cbs düğümüne bir yönetim bağlantısı açar ve SAS tokenı veya Microsoft Entra ID tarafından verilen bir JWT içeren bir put-token isteği gönderir. Broker tokenı doğruladığında, yetkilendirme ömrü boyunca önbelleğe alınır ve uygulama kuyruklara, konulara veya aboneliklere karşı gönderen ve alıcı bağlantıları oluşturmaya devam edebilir.

sgcWebSockets 2026.1.0'daki AMQP1 istemcisi, bu akışı Delphi geliştiricilerine doğal gelen iki yardımcı metot aracılığıyla otomatikleştirir:


Her iki metot da etkin bir AMQP bağlantısı gerektirir ve aşağıdaki parametreleri kabul eder:

Aşağıdaki örnekler, mesaj göndermeden önce CBS ile nasıl kimlik doğrulaması yapılacağını göstermektedir.

// ... 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);

Sonraki örnek yalnızca JWT kullanan Microsoft Entra ID (Azure AD) kimlik doğrulamasına odaklanır. Mesaj göndermek veya almak için bağlantılar oluşturmadan önce client credentials akışıyla bir tokenın nasıl isteneceğini ve $cbs'e nasıl yayınlanacağını gösterir. 

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);