Conversation
|
@Tornhoof I appreciate you taking a look! |
|
What @Tornhoof said |
|
@danielmarbach @MatthiasWerning @Tornhoof - I'm pretty much done with this. I'm going to modify the OAuth2 integration test to include restarting RabbitMQ mid-test, and probably add those annotations to JsonToken. |
|
@lukebakken before I take a deeper look I'm curious to hear why you didn't go down the route of collapsing the refreshing into the provider similar to how Azure.Identity does it? |
Time constraints. |
Tornhoof
left a comment
There was a problem hiding this comment.
This looks a lot better than before :)
Fixes #1639 * Remove all traces of credential refresh from `RabbitMQ.Client` * Add `CredentialsRefresher`, which does not use timers, and calls refresh based on `ValidUntil` * Use `ICredentialsProvider` in the auth mechanisms, async * Pass `CancellationToken` around and correctly dispose Http objects (thanks @Tornhoof) * Use `SemaphoreSlim` * Refresh token at 1/3 the interval value. * Close connection mid-integration test for OAuth2 * Use OAuth2 for EasyNetQ.Management.Client in OAuth2 tests. * Create separate credentials provider for HTTP API requests. * Set RabbitMQ logging to debug for OAuth2 * Use `JsonPropertyName` * Use OAuth2 for HTTP API access. Thanks @MarcialRosales
47b5ce7 to
2018045
Compare
|
@danielmarbach @Tornhoof @paulomorgado @MatthiasWerning @MarcialRosales I plan on merging this in a few hours to produce another version 7 RC. |
|
The earliest I can review is probably tomorrow |
|
Thanks @danielmarbach. I'm going to merge this PR to produce a new RC, but of course I welcome your review. Any changes can be addressed in a follow-up PR. |
Fixes #1639
RabbitMQ.ClientCredentialsRefresher, which does not use timers, and calls refresh based onValidUntilNote, there is still a lot of work to get all tests running, but this gives you the idea.
Also, there is a big TODO around integrating these changes with
PlainMechanismcc @danielmarbach @MatthiasWerning