/* * Licensed under the Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0) * See https://github.com/openiddict/openiddict-core for more information concerning * the license and the contributors participating to this project. */ using System.ComponentModel; using Microsoft.AspNetCore.DataProtection; using Microsoft.Extensions.Options; namespace OpenIddict.Server.DataProtection; /// /// Contains the methods required to ensure that the OpenIddict ASP.NET Core Data Protection configuration is valid. /// [EditorBrowsable(EditorBrowsableState.Advanced)] public sealed class OpenIddictServerDataProtectionConfiguration : IConfigureOptions, IPostConfigureOptions { private readonly IServiceProvider _provider; /// /// Creates a new instance of the class. /// /// The service provider used to resolve dependencies. public OpenIddictServerDataProtectionConfiguration(IServiceProvider provider) => _provider = provider ?? throw new ArgumentNullException(nameof(provider)); /// public void Configure(OpenIddictServerOptions options) { ArgumentNullException.ThrowIfNull(options); // Register the built-in event handlers used by the OpenIddict Data Protection server components. options.Handlers.AddRange(OpenIddictServerDataProtectionHandlers.DefaultHandlers); } /// public void PostConfigure(string? name, OpenIddictServerDataProtectionOptions options) { ArgumentNullException.ThrowIfNull(options); options.DataProtectionProvider ??= _provider.GetDataProtectionProvider(); } }