/// <summary>
        /// Registers the Entity Framework Core stores services in the DI container and
        /// configures OpenIddict to use the Entity Framework Core entities by default.
        /// </summary>
        /// <param name="builder">The services builder used by OpenIddict to register new services.</param>
        /// <remarks>This extension can be safely called multiple times.</remarks>
        /// <returns>The <see cref="OpenIddictEntityFrameworkCoreBuilder"/>.</returns>
        public static OpenIddictEntityFrameworkCoreBuilder UseEntityFrameworkCore(this OpenIddictCoreBuilder builder)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            // Since Entity Framework Core may be used with databases performing case-insensitive
            // or culture-sensitive comparisons, ensure the additional filtering logic is enforced
            // in case case-sensitive stores were registered before this extension was called.
            builder.Configure(options => options.DisableAdditionalFiltering = false);

            builder.SetDefaultApplicationEntity <OpenIddictEntityFrameworkCoreApplication>()
            .SetDefaultAuthorizationEntity <OpenIddictEntityFrameworkCoreAuthorization>()
            .SetDefaultScopeEntity <OpenIddictEntityFrameworkCoreScope>()
            .SetDefaultTokenEntity <OpenIddictEntityFrameworkCoreToken>();

            builder.ReplaceApplicationStoreResolver <OpenIddictEntityFrameworkCoreApplicationStoreResolver>()
            .ReplaceAuthorizationStoreResolver <OpenIddictEntityFrameworkCoreAuthorizationStoreResolver>()
            .ReplaceScopeStoreResolver <OpenIddictEntityFrameworkCoreScopeStoreResolver>()
            .ReplaceTokenStoreResolver <OpenIddictEntityFrameworkCoreTokenStoreResolver>();

            builder.Services.TryAddSingleton <OpenIddictEntityFrameworkCoreApplicationStoreResolver.TypeResolutionCache>();
            builder.Services.TryAddSingleton <OpenIddictEntityFrameworkCoreAuthorizationStoreResolver.TypeResolutionCache>();
            builder.Services.TryAddSingleton <OpenIddictEntityFrameworkCoreScopeStoreResolver.TypeResolutionCache>();
            builder.Services.TryAddSingleton <OpenIddictEntityFrameworkCoreTokenStoreResolver.TypeResolutionCache>();

            builder.Services.TryAddScoped(typeof(OpenIddictEntityFrameworkCoreApplicationStore <, , , ,>));
            builder.Services.TryAddScoped(typeof(OpenIddictEntityFrameworkCoreAuthorizationStore <, , , ,>));
            builder.Services.TryAddScoped(typeof(OpenIddictEntityFrameworkCoreScopeStore <, ,>));
            builder.Services.TryAddScoped(typeof(OpenIddictEntityFrameworkCoreTokenStore <, , , ,>));

            return(new OpenIddictEntityFrameworkCoreBuilder(builder.Services));
        }
コード例 #2
0
        public static OpenIddictCoreBuilder UseEpiInmemoryStore(this OpenIddictCoreBuilder builder)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            builder.Configure(options => options.DisableAdditionalFiltering = false);

            builder.SetDefaultApplicationEntity <EpiOpenIdApplication>();
            builder.SetDefaultScopeEntity <EpiOpenIdScope>();
            builder.SetDefaultAuthorizationEntity <EpiOpenIdAuthorization>();
            builder.SetDefaultTokenEntity <EpiOpenIdToken>();

            builder.ReplaceApplicationStoreResolver <EpiOpenIdApplicationStoreResolver>();
            builder.ReplaceScopeStoreResolver <EpiOpenIdScopeStoreResolver>();
            builder.ReplaceAuthorizationStoreResolver <EpiOpenIdAuthorizationStoreResolver>();
            builder.ReplaceTokenStoreResolver <EpiOpenIdTokenStoreResolver>();

            builder.Services.TryAddSingleton <EpiOpenIdApplicationStoreResolver.TypeResolutionCache>();
            builder.Services.TryAddSingleton <EpiOpenIdScopeStoreResolver.TypeResolutionCache>();
            builder.Services.TryAddSingleton <EpiOpenIdAuthorizationStoreResolver.TypeResolutionCache>();
            builder.Services.TryAddSingleton <EpiOpenIdTokenStoreResolver.TypeResolutionCache>();

            builder.Services.TryAddScoped(typeof(EpiOpenIdApplicationStore <>));
            builder.Services.TryAddScoped(typeof(EpiOpenIdScopeStore <>));
            builder.Services.TryAddScoped(typeof(EpiOpenIdAuthorizationStore <>));
            builder.Services.TryAddScoped(typeof(EpiOpenIdTokenStore <>));

            return(builder);
        }
        public static OpenIddictCoreBuilder UseThreaxIdServerEf(this OpenIddictCoreBuilder builder, Action <Options> configure)
        {
            var options = new Options();

            configure.Invoke(options);

            if (builder is null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            // Since Entity Framework Core may be used with databases performing case-insensitive
            // or culture-sensitive comparisons, ensure the additional filtering logic is enforced
            // in case case-sensitive stores were registered before this extension was called.
            builder.Configure(options => options.DisableAdditionalFiltering = false);

            builder.SetDefaultApplicationEntity <Client>()
            .SetDefaultAuthorizationEntity <Authorization>()
            .SetDefaultScopeEntity <Scope>()
            .SetDefaultTokenEntity <Token>();

            builder.ReplaceApplicationStoreResolver <ApplicationStoreResolver>()
            .ReplaceAuthorizationStoreResolver <AuthorizationStoreResolver>()
            .ReplaceScopeStoreResolver <ScopeStoreResolver>()
            .ReplaceTokenStoreResolver <TokenStoreResolver>();

            builder.ReplaceApplicationManager(typeof(ThreaxOpenIddictApplicationManager <>));

            builder.Services.TryAddScoped <ApplicationStore>();
            builder.Services.TryAddScoped <AuthorizationStore>();
            builder.Services.TryAddScoped <ScopeStore>();
            builder.Services.TryAddScoped <TokenStore>();

            builder.Services.AddDbContext <ConfigurationDbContext>(o =>
            {
                options.SetupConfigurationDbContext.Invoke(o);
            });

            builder.Services.AddDbContext <OperationDbContext>(o =>
            {
                options.SetupOperationDbContext.Invoke(o);
            });

            return(builder);
        }
コード例 #4
0
        public static OpenIddictCoreBuilder UseYesSql(this OpenIddictCoreBuilder builder)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            // Since the YesSql stores may be used with databases performing case-insensitive or
            // culture-sensitive comparisons, ensure the additional filtering logic is enforced
            // in case case-sensitive stores were registered before this extension was called.
            builder.Configure(options => options.DisableAdditionalFiltering = false);

            builder.SetDefaultApplicationEntity <OpenIdApplication>()
            .SetDefaultAuthorizationEntity <OpenIdAuthorization>()
            .SetDefaultScopeEntity <OpenIdScope>()
            .SetDefaultTokenEntity <OpenIdToken>();

            builder.ReplaceApplicationStoreResolver <OpenIdApplicationStoreResolver>()
            .ReplaceAuthorizationStoreResolver <OpenIdAuthorizationStoreResolver>()
            .ReplaceScopeStoreResolver <OpenIdScopeStoreResolver>()
            .ReplaceTokenStoreResolver <OpenIdTokenStoreResolver>();

            builder.Services.TryAddSingleton <OpenIdApplicationStoreResolver.TypeResolutionCache>();
            builder.Services.TryAddSingleton <OpenIdAuthorizationStoreResolver.TypeResolutionCache>();
            builder.Services.TryAddSingleton <OpenIdScopeStoreResolver.TypeResolutionCache>();
            builder.Services.TryAddSingleton <OpenIdTokenStoreResolver.TypeResolutionCache>();

            builder.Services.TryAddScoped(typeof(OpenIdApplicationStore <>));
            builder.Services.TryAddScoped(typeof(OpenIdAuthorizationStore <>));
            builder.Services.TryAddScoped(typeof(OpenIdScopeStore <>));
            builder.Services.TryAddScoped(typeof(OpenIdTokenStore <>));

            builder.Services.TryAddEnumerable(new[]
            {
                ServiceDescriptor.Singleton <IIndexProvider, OpenIdApplicationIndexProvider>(),
                ServiceDescriptor.Singleton <IIndexProvider, OpenIdAuthorizationIndexProvider>(),
                ServiceDescriptor.Singleton <IIndexProvider, OpenIdScopeIndexProvider>(),
                ServiceDescriptor.Singleton <IIndexProvider, OpenIdTokenIndexProvider>()
            });

            return(builder);
        }