1
0
mirror of https://github.com/bitwarden/server.git synced 2025-06-10 13:10:31 -05:00

Add docs and remove TODO comments

This commit is contained in:
Justin Baur 2025-05-07 15:11:35 -04:00
parent 7e5c4b3922
commit 03820b4fba
No known key found for this signature in database
2 changed files with 12 additions and 5 deletions

View File

@ -46,8 +46,6 @@ internal class DynamicClientStore : IClientStore
// Increment past the period
var identifierName = clientIdSpan[..firstPeriod++];
// TODO: Validate some rules about the identifierName?
var identifier = clientIdSpan[firstPeriod..];
// The identifier is required to be non-empty
@ -56,6 +54,7 @@ internal class DynamicClientStore : IClientStore
return Task.FromResult<Client?>(null);
}
// Once identifierName is proven valid, materialize the string
var clientBuilder = _serviceProvider.GetKeyedService<IClientProvider>(identifierName.ToString());
if (clientBuilder == null)

View File

@ -4,15 +4,23 @@ namespace Microsoft.Extensions.DependencyInjection;
public static class ServiceCollectionExtensions
{
/// <summary>
/// Registers a custom <see cref="IClientProvider"/> for the given identifier to be called when a client id with
/// the identifier is attempting authentication.
/// </summary>
/// <typeparam name="T">Your custom implementation of <see cref="IClientProvider"/>.</typeparam>
/// <param name="services">The service collection to add services to.</param>
/// <param name="identifier">
/// The identifier to be used to invoke your client provider if a <c>client_id</c> is prefixed with your identifier
/// then your <see cref="IClientProvider"/> implementation will be invoked with the data after the seperating <c>.</c>.
/// </param>
/// <returns>The <see cref="IServiceCollection"/> for additional chaining.</returns>
public static IServiceCollection AddClientProvider<T>(this IServiceCollection services, string identifier)
where T : class, IClientProvider
{
ArgumentNullException.ThrowIfNull(services);
ArgumentException.ThrowIfNullOrWhiteSpace(identifier);
// TODO: Track name so that if they register the same one twice it's an error?
// TODO: We could allow customization of service lifetime
services.AddKeyedTransient<IClientProvider, T>(identifier);
return services;