Skip to content

Commit 88005a4

Browse files
authored
Merge pull request #62 from rabbitmq/rabbitmq-amqp-dotnet-client-61
Add ANONYMOUS SASL mechanism
2 parents 706269d + 49c7b58 commit 88005a4

File tree

8 files changed

+48
-6
lines changed

8 files changed

+48
-6
lines changed

.ci/ubuntu/rabbitmq.conf

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,5 @@ ssl_options.depth = 1
2222
ssl_options.fail_if_no_peer_cert = false
2323

2424
auth_mechanisms.1 = PLAIN
25-
auth_mechanisms.2 = EXTERNAL
25+
auth_mechanisms.2 = ANONYMOUS
26+
auth_mechanisms.3 = EXTERNAL

.ci/windows/rabbitmq.conf.in

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,5 @@ ssl_options.depth = 1
2020
ssl_options.fail_if_no_peer_cert = false
2121

2222
auth_mechanisms.1 = PLAIN
23-
auth_mechanisms.2 = EXTERNAL
23+
auth_mechanisms.2 = ANONYMOUS
24+
auth_mechanisms.3 = EXTERNAL

.ci/windows/versions.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
{
2-
"erlang": "26.2.5.2",
3-
"rabbitmq": "4.0.0-beta.5"
2+
"erlang": "27.0.1",
3+
"rabbitmq": "4.0.0-beta.6"
44
}

RabbitMQ.AMQP.Client/Impl/AmqpConnection.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,11 @@ [new Symbol("connection_name")] = _connectionSettings.ContainerId,
264264
}
265265
}
266266

267-
if (_connectionSettings.SaslMechanism == SaslMechanism.External)
267+
if (_connectionSettings.SaslMechanism == SaslMechanism.Anonymous)
268+
{
269+
cf.SASL.Profile = SaslProfile.Anonymous;
270+
}
271+
else if (_connectionSettings.SaslMechanism == SaslMechanism.External)
268272
{
269273
cf.SASL.Profile = SaslProfile.External;
270274
}

RabbitMQ.AMQP.Client/Impl/ConnectionSettings.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,8 @@ public ConnectionSettingBuilder MaxFrameSize(uint maxFrameSize)
8989
public ConnectionSettingBuilder SaslMechanism(SaslMechanism saslMechanism)
9090
{
9191
_saslMechanism = saslMechanism;
92-
if (_saslMechanism == Client.SaslMechanism.External)
92+
if (_saslMechanism == Client.SaslMechanism.Anonymous ||
93+
_saslMechanism == Client.SaslMechanism.External)
9394
{
9495
_user = null;
9596
_password = null;

RabbitMQ.AMQP.Client/PublicAPI.Unshipped.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -541,6 +541,7 @@ static RabbitMQ.AMQP.Client.Impl.BackOffDelayPolicy.Create() -> RabbitMQ.AMQP.Cl
541541
static RabbitMQ.AMQP.Client.Impl.BackOffDelayPolicy.Create(int maxAttempt) -> RabbitMQ.AMQP.Client.Impl.BackOffDelayPolicy!
542542
static RabbitMQ.AMQP.Client.Impl.ConnectionSettingBuilder.Create() -> RabbitMQ.AMQP.Client.Impl.ConnectionSettingBuilder!
543543
static RabbitMQ.AMQP.Client.Impl.RecoveryConfiguration.Create() -> RabbitMQ.AMQP.Client.Impl.RecoveryConfiguration!
544+
static readonly RabbitMQ.AMQP.Client.SaslMechanism.Anonymous -> RabbitMQ.AMQP.Client.SaslMechanism!
544545
static readonly RabbitMQ.AMQP.Client.SaslMechanism.External -> RabbitMQ.AMQP.Client.SaslMechanism!
545546
static readonly RabbitMQ.AMQP.Client.SaslMechanism.Plain -> RabbitMQ.AMQP.Client.SaslMechanism!
546547
virtual RabbitMQ.AMQP.Client.Impl.AbstractLifeCycle.Dispose(bool disposing) -> void

RabbitMQ.AMQP.Client/SaslMechanism.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ public class SaslMechanism : IEquatable<SaslMechanism>
1010
{
1111
public static readonly SaslMechanism Plain = new("PLAIN");
1212
public static readonly SaslMechanism External = new("EXTERNAL");
13+
public static readonly SaslMechanism Anonymous = new("ANONYMOUS");
1314

1415
private readonly string _saslMechanism;
1516

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
// This source code is dual-licensed under the Apache License, version
2+
// 2.0, and the Mozilla Public License, version 2.0.
3+
// Copyright (c) 2017-2023 Broadcom. All Rights Reserved. The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
4+
5+
using System.Threading.Tasks;
6+
using RabbitMQ.AMQP.Client;
7+
using RabbitMQ.AMQP.Client.Impl;
8+
using Xunit;
9+
using Xunit.Abstractions;
10+
11+
namespace Tests.ConnectionTests;
12+
13+
public class AnonymousConnectionTests(ITestOutputHelper testOutputHelper)
14+
: IntegrationTest(testOutputHelper, setupConnectionAndManagement: false)
15+
{
16+
[Fact]
17+
public async Task ConnectUsingSaslAnonynmous()
18+
{
19+
Assert.Null(_connection);
20+
Assert.Null(_management);
21+
22+
ConnectionSettingBuilder connectionSettingBuilder = ConnectionSettingBuilder.Create();
23+
24+
_containerId = $"{_testDisplayName}:{Now}";
25+
connectionSettingBuilder.ContainerId(_containerId);
26+
connectionSettingBuilder.SaslMechanism(SaslMechanism.Anonymous);
27+
28+
ConnectionSettings connectionSettings = connectionSettingBuilder.Build();
29+
_connection = await AmqpConnection.CreateAsync(connectionSettings);
30+
31+
Assert.True(_connection.State == State.Open);
32+
}
33+
}

0 commit comments

Comments
 (0)