/// <summary>
        /// Add Security extensions - Used to wire up the dependency injection
        /// </summary>
        /// <typeparam name="TAuthenticator">The authenticator - Used to authenticate the custom User model</typeparam>
        /// <typeparam name="TUserModel">The custom User model</typeparam>
        /// <param name="services">The services collection</param>
        /// <param name="configuration">The configurations -- appsettings</param>
        /// <param name="addClaims">Add the Claims using the IdTypeBuilder (<see cref="IdTypeBuilder{TUserModel}"/>)</param>
        /// <param name="addSwaggerSecurity">Enable security in Swagger UI</param>
        /// <returns>The services collection</returns>
        public static IServiceCollection AddSecurity <TAuthenticator, TUserModel>(this IServiceCollection services,
                                                                                  IConfiguration configuration,
                                                                                  Action <IIdTypeBuilder <TUserModel> > addClaims = null,
                                                                                  bool addSwaggerSecurity = false)
            where TAuthenticator : class, IAuthentication <TUserModel>
            where TUserModel : class, IAuthenticationUser
        {
            var securitySettings = configuration.SecuritySettings();

            IdTypeHelpers.LoadClaimTypes();

            services.AddSingletonIfNotExists(securitySettings);
            services.AddSingletonIfNotExists <BaseSecuritySettings>(securitySettings);
            if (addClaims != null)
            {
                services.AddSingletonIfNotExists <Action <IIdTypeBuilder <TUserModel> > >(x => addClaims);
            }
            services.AddScopedIfNotExists <ISecurityService <TUserModel>, SecurityService <TUserModel> >();
            services.AddScopedIfNotExists <IAuthentication <TUserModel>, TAuthenticator>();
            services.AddScopedIfNotExists <IHttpClient, HttpClientHandler>(x => new HttpClientHandler(new HttpClient()));

            services.AddSwaggerAndJwtBearerScheme(addSwaggerSecurity, securitySettings);

            return(services);
        }
Exemple #2
0
        /// <summary>
        /// Add Security extensions - Used to wire up the dependency injection
        /// </summary>
        /// <typeparam name="TAuthenticator">The authenticator - Used to authenticate the custom User model</typeparam>
        /// <typeparam name="TUserModel">The custom User model</typeparam>
        /// <param name="services">The services collection</param>
        /// <param name="configuration">The configurations -- appsettings</param>
        /// <param name="addClaims">Add the Claims using the IdTypeBuilder (<see cref="IdTypeBuilder{TUserModel}"/>)</param>
        /// <param name="addSwaggerSecurity">Enable security in Swagger UI</param>
        /// <returns>The services collection</returns>
        public static IServiceCollection AddSecurity <TAuthenticator, TUserModel>(this IServiceCollection services,
                                                                                  IConfiguration configuration,
                                                                                  Action <IIdTypeBuilder <TUserModel> > addClaims = null,
                                                                                  bool addSwaggerSecurity = false)
            where TAuthenticator : class, IAuthentication <TUserModel>
            where TUserModel : class, IAuthenticationUser
        {
            var securitySettings = new SecuritySettings();

            configuration.Bind("SecuritySettings", securitySettings);
            IdTypeHelpers.LoadClaimTypes();

            services.AddSingleton(securitySettings);
            services.AddSingleton <BaseSecuritySettings>(securitySettings);
            if (addClaims != null)
            {
                services.AddSingleton <Action <IIdTypeBuilder <TUserModel> > >(x => addClaims);
            }
            services.AddScoped <ISecurityService <TUserModel>, SecurityService <TUserModel> >();
            services.AddScoped <IAuthentication <TUserModel>, TAuthenticator>();

            if (addSwaggerSecurity)
            {
                services.AddSecureSwaggerDocumentation();
            }

            if (!IsJwtSchemeAdded)
            {
                services.AddJwtBearerScheme(securitySettings);
                IsJwtSchemeAdded = true;
            }

            return(services);
        }
Exemple #3
0
        /// <summary>
        /// Add Security extensions - Used to wire up the dependency injection
        /// </summary>
        /// <typeparam name="TAuthenticator">The authenticator - Used to authenticate the default authentication</typeparam>
        /// <param name="services">The services collection</param>
        /// <param name="configuration">The configurations -- appsettings</param>
        /// <param name="addSwaggerSecurity">Enable security in Swagger UI</param>
        /// <returns>The services collection</returns>
        public static IServiceCollection AddSecurity <TAuthenticator>(this IServiceCollection services,
                                                                      IConfiguration configuration,
                                                                      bool addSwaggerSecurity = false)
            where TAuthenticator : class, IAuthentication
        {
            var securitySettings = new SecuritySettings();

            configuration.Bind("SecuritySettings", securitySettings);
            IdTypeHelpers.LoadClaimTypes();

            services.AddSingleton(securitySettings);
            services.AddScoped <ISecurityService, SecurityService>();
            services.AddScoped <IAuthentication, TAuthenticator>();

            if (addSwaggerSecurity)
            {
                services.AddSecureSwaggerDocumentation();
            }

            if (!IsJwtSchemeAdded)
            {
                services.AddJwtBearerScheme(securitySettings);
                IsJwtSchemeAdded = true;
            }

            return(services);
        }
        /// <summary>
        /// Add Facebook security extension
        /// </summary>
        /// <param name="services">The services collection</param>
        /// <param name="configuration">The configurations -- appsettings</param>
        /// <param name="addClaims">Add the Claims using the IdTypeBuilder (<see cref="IdTypeBuilder{TUserModel}"/>)</param>
        /// <param name="addSwaggerSecurity">Enable security in Swagger UI</param>
        /// <returns>The services collection</returns>
        public static IServiceCollection AddGoogleSecurity(this IServiceCollection services,
                                                           IConfiguration configuration,
                                                           Action <IIdTypeBuilder <GoogleAuthModel> > addClaims = null,
                                                           bool addSwaggerSecurity = false)
        {
            var securitySettings = configuration.SecuritySettings();

            IdTypeHelpers.LoadClaimTypes();

            services.AddSingleton(securitySettings);

            services.AddSingleton <BaseSecuritySettings>(securitySettings);
            if (addClaims != null)
            {
                services.AddSingleton <Action <IIdTypeBuilder <GoogleAuthModel> > >(x => addClaims);
            }
            services.AddSingleton <GoogleSecuritySettings>(securitySettings.GoogleSecuritySettings);
            services.AddScoped <IAuthentication <GoogleAuthModel, GoogleResponseModel>, GoogleAuthenticator>();
            services.AddScoped <ISecurityClient <GoogleAuthModel, GoogleResponseModel>, GoogleClient>();
            services.AddScoped <IHttpClient, HttpClientHandler>();

            services.AddSwaggerAndJwtBearerScheme(addSwaggerSecurity, securitySettings);

            return(services);
        }
        /// <summary>
        /// To Claim Types extensions. Gets the ClaimTypes for a specified IdType
        /// </summary>
        /// <param name="idType"></param>
        /// <returns>ClaimTypes</returns>
        public static string ToClaimTypes(this IdType idType)
        {
            var claimTypes = IdTypeHelpers.ClaimTypes;

            if (claimTypes == null || !claimTypes.Any())
            {
                IdTypeHelpers.LoadClaimTypes();

                claimTypes = IdTypeHelpers.ClaimTypes;
            }

            return(claimTypes[idType.ToString()]);
        }
        /// <summary>
        /// Add Security extensions - Used to wire up the dependency injection
        /// </summary>
        /// <typeparam name="TAuthenticator">The authenticator - Used to authenticate the default authentication</typeparam>
        /// <param name="services">The services collection</param>
        /// <param name="configuration">The configurations -- appsettings</param>
        /// <param name="addSwaggerSecurity">Enable security in Swagger UI</param>
        /// <returns>The services collection</returns>
        public static IServiceCollection AddSecurity <TAuthenticator>(this IServiceCollection services,
                                                                      IConfiguration configuration,
                                                                      bool addSwaggerSecurity = false)
            where TAuthenticator : class, IAuthentication
        {
            var securitySettings = configuration.SecuritySettings();

            IdTypeHelpers.LoadClaimTypes();

            services.AddSingletonIfNotExists(securitySettings);
            services.AddScopedIfNotExists <ISecurityService, SecurityService>();
            services.AddScopedIfNotExists <IAuthentication, TAuthenticator>();
            services.AddScopedIfNotExists <IHttpClient, HttpClientHandler>(x => new HttpClientHandler(new HttpClient()));

            services.AddSwaggerAndJwtBearerScheme(addSwaggerSecurity, securitySettings);

            return(services);
        }
Exemple #7
0
        /// <summary>
        /// Add Azure AD security extension
        /// </summary>
        /// <param name="services">The services collection</param>
        /// <param name="configuration">The configurations -- appsettings</param>
        /// <param name="addSwaggerSecurity">Enable security in Swagger UI</param>
        /// <returns>The services collection</returns>
        public static IServiceCollection AddAzureADSecurity(this IServiceCollection services,
                                                            IConfiguration configuration,
                                                            bool addSwaggerSecurity = false)
        {
            var securitySettings = configuration.SecuritySettings();

            IdTypeHelpers.LoadClaimTypes();

            services.AddSingletonIfNotExists(securitySettings);
            services.AddSingletonIfNotExists <AzureADSecuritySettings>(securitySettings.AzureADSecuritySettings);
            services.AddScopedIfNotExists <IAuthentication <AzureADAuthModel, AzureADResponseModel>, AzureAuthenticator>();
            services.AddScopedIfNotExists <ISecurityClient <AzureADResponseModel>, AzureClient>();
            services.AddScopedIfNotExists <IHttpClient, HttpClientHandler>(x => new HttpClientHandler(new HttpClient()));

            services.AddSwaggerAndJwtBearerScheme(addSwaggerSecurity, securitySettings);

            return(services);
        }
        /// <summary>
        /// Add Azure AD security extension
        /// </summary>
        /// <param name="services">The services collection</param>
        /// <param name="configuration">The configurations -- appsettings</param>
        /// <param name="addSwaggerSecurity">Enable security in Swagger UI</param>
        /// <returns>The services collection</returns>
        public static IServiceCollection AddAzureADSecurity(this IServiceCollection services,
                                                            IConfiguration configuration,
                                                            bool addSwaggerSecurity = false)
        {
            var securitySettings = configuration.SecuritySettings();

            IdTypeHelpers.LoadClaimTypes();

            services.AddSingleton(securitySettings);
            services.AddSingleton <AzureADSecuritySettings>(securitySettings.AzureADSecuritySettings);
            services.AddScoped <IAuthentication <AzureADAuthModel, AzureADResponseModel>, AzureAuthenticator>();
            services.AddScoped <ISecurityClient <AzureADResponseModel>, AzureClient>();
            services.AddScoped <IHttpClient, HttpClientHandler>();

            if (addSwaggerSecurity)
            {
                services.AddSecureSwaggerDocumentation();
            }

            return(services);
        }
Exemple #9
0
        private AddSecurityBuilder(SecuritySettings securitySettings, bool isJwtSchemeAdded, IServiceCollection services, bool addSwaggerSecurity = false)
        {
            if (!IsDefaultAdded || !IsCustomAdded || !IsAzureAdded || !IsFacebookAdded)
            {
                SecuritySettings = securitySettings;
                Services         = services;

                IdTypeHelpers.LoadClaimTypes();

                if (!isJwtSchemeAdded)
                {
                    Services.AddJwtBearerScheme(SecuritySettings);
                }

                if (addSwaggerSecurity && !IsSwaggerAdded)
                {
                    Services.AddSecureSwaggerDocumentation();

                    IsSwaggerAdded = true;
                }
            }
        }
Exemple #10
0
        public AddSecurityBuilder(SecuritySettings securitySettings, bool isJwtSchemeAdded, IServiceCollection services, bool addSwaggerSecurity = false)
        {
            if (!IsInitDone)
            {
                SecuritySettings = securitySettings;
                Services         = services;

                IdTypeHelpers.LoadClaimTypes();

                if (!isJwtSchemeAdded)
                {
                    Services.AddJwtBearerScheme(SecuritySettings);
                }

                if (addSwaggerSecurity && !IsSwaggerAdded)
                {
                    Services.AddSecureSwaggerDocumentation();

                    IsSwaggerAdded = true;
                }

                IsInitDone = true;
            }
        }