/* * 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; using JetBrains.Annotations; 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. /// public class OpenIddictServerDataProtectionConfiguration : IConfigureOptions, IPostConfigureOptions { private readonly IDataProtectionProvider _dataProtectionProvider; /// /// Creates a new instance of the class. /// /// The ASP.NET Core Data Protection provider. public OpenIddictServerDataProtectionConfiguration([NotNull] IDataProtectionProvider dataProtectionProvider) => _dataProtectionProvider = dataProtectionProvider; public void Configure([NotNull] OpenIddictServerOptions options) { if (options == null) { throw new ArgumentNullException(nameof(options)); } // Register the built-in event handlers used by the OpenIddict Data Protection server components. foreach (var handler in OpenIddictServerDataProtectionHandlers.DefaultHandlers) { options.DefaultHandlers.Add(handler); } } /// /// Populates the default OpenIddict ASP.NET Core Data Protection server options /// and ensures that the configuration is in a consistent and valid state. /// /// The name of the options instance to configure, if applicable. /// The options instance to initialize. public void PostConfigure([CanBeNull] string name, [NotNull] OpenIddictServerDataProtectionOptions options) { if (options == null) { throw new ArgumentNullException(nameof(options)); } options.DataProtectionProvider ??= _dataProtectionProvider; } } }