Пример #1
0
        public ActionResult OwinEdit()
        {
            EditModel model = new EditModel {
            };

            model.RequireDigit           = OwinConfigHelper.GetValue <bool>(Module.AreaName, "Password:RequireDigit", false);
            model.RequiredLength         = OwinConfigHelper.GetValue <int>(Module.AreaName, "Password:RequiredLength", 6);
            model.RequireNonAlphanumeric = OwinConfigHelper.GetValue <bool>(Module.AreaName, "Password:RequireNonAlphanumeric", false);
            model.RequireUppercase       = OwinConfigHelper.GetValue <bool>(Module.AreaName, "Password:RequireUppercase", false);
            model.RequireLowercase       = OwinConfigHelper.GetValue <bool>(Module.AreaName, "Password:RequireLowercase", false);

            model.SlidingExpiration = OwinConfigHelper.GetValue <bool>(Module.AreaName, "OWin:SlidingExpiration", true);
            long ticks = OwinConfigHelper.GetValue <long>(Module.AreaName, "OWin:ExpireTimeSpan", new TimeSpan(10, 0, 0, 0).Ticks); // 10 days

            model.ExpireTimeSpan = new TimeSpan(ticks);
            ticks = OwinConfigHelper.GetValue <long>(Module.AreaName, "OWin:SecurityStampValidationInterval", new TimeSpan(0, 30, 0).Ticks); // 30 minutes
            model.SecurityStampValidationInterval = new TimeSpan(ticks);
            ticks = OwinConfigHelper.GetValue <long>(Module.AreaName, "PasswordRenewal", new TimeSpan(0, 0, 0).Ticks);                       // 0  = indefinitely
            model.PasswordRenewal = new TimeSpan(ticks);

            model.UseMicrosoft     = OwinConfigHelper.GetValue <bool>(Module.AreaName, "MicrosoftAccount:Enabled");
            model.MicrosoftPublic  = OwinConfigHelper.GetValue <string>(Module.AreaName, "MicrosoftAccount:Public");
            model.MicrosoftPrivate = OwinConfigHelper.GetValue <string>(Module.AreaName, "MicrosoftAccount:Private");
            model.UseGoogle        = OwinConfigHelper.GetValue <bool>(Module.AreaName, "GoogleAccount:Enabled");
            model.GooglePublic     = OwinConfigHelper.GetValue <string>(Module.AreaName, "GoogleAccount:Public");
            model.GooglePrivate    = OwinConfigHelper.GetValue <string>(Module.AreaName, "GoogleAccount:Private");
            model.UseFacebook      = OwinConfigHelper.GetValue <bool>(Module.AreaName, "FacebookAccount:Enabled");
            model.FacebookPublic   = OwinConfigHelper.GetValue <string>(Module.AreaName, "FacebookAccount:Public");
            model.FacebookPrivate  = OwinConfigHelper.GetValue <string>(Module.AreaName, "FacebookAccount:Private");
            model.UseTwitter       = OwinConfigHelper.GetValue <bool>(Module.AreaName, "TwitterAccount:Enabled");
            model.TwitterPublic    = OwinConfigHelper.GetValue <string>(Module.AreaName, "TwitterAccount:Public");
            model.TwitterPrivate   = OwinConfigHelper.GetValue <string>(Module.AreaName, "TwitterAccount:Private");
            return(View(model));
        }
Пример #2
0
        public void SetupLoginProviders(IServiceCollection services)
        {
            // https://github.com/aspnet/Security/issues/1310

            AuthenticationBuilder authBuilder = services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme);

            {
                string pub  = OwinConfigHelper.GetValue <string>(AREA, "FacebookAccount:Public");
                string priv = OwinConfigHelper.GetValue <string>(AREA, "FacebookAccount:Private");
                if (!string.IsNullOrWhiteSpace(pub) && !string.IsNullOrWhiteSpace(priv))
                {
                    authBuilder.AddFacebook(o => {
                        o.AppId     = pub;
                        o.AppSecret = priv;
                    });
                }
            }
            {
                string pub  = OwinConfigHelper.GetValue <string>(AREA, "GoogleAccount:Public");
                string priv = OwinConfigHelper.GetValue <string>(AREA, "GoogleAccount:Private");
                if (!string.IsNullOrWhiteSpace(pub) && !string.IsNullOrWhiteSpace(priv))
                {
                    authBuilder.AddGoogle(o => {
                        o.ClientId     = pub;
                        o.ClientSecret = priv;
                    });
                }
            }
            {
                string pub  = OwinConfigHelper.GetValue <string>(AREA, "TwitterAccount:Public");
                string priv = OwinConfigHelper.GetValue <string>(AREA, "TwitterAccount:Private");
                if (!string.IsNullOrWhiteSpace(pub) && !string.IsNullOrWhiteSpace(priv))
                {
                    authBuilder.AddTwitter(o => {
                        o.ConsumerKey    = pub;
                        o.ConsumerSecret = priv;
                    });
                }
            }
            {
                string pub  = OwinConfigHelper.GetValue <string>(AREA, "MicrosoftAccount:Public");
                string priv = OwinConfigHelper.GetValue <string>(AREA, "MicrosoftAccount:Private");
                if (!string.IsNullOrWhiteSpace(pub) && !string.IsNullOrWhiteSpace(priv))
                {
                    authBuilder.AddMicrosoftAccount(o => {
                        o.ClientId     = pub;
                        o.ClientSecret = priv;
                    });
                }
            }

            authBuilder.AddDynamicAuthentication();
        }
Пример #3
0
        public void Setup(IServiceCollection services)
        {
            string login = WebConfigHelper.GetValue <string>(AREA, "LoginProviderSettings");

            if (!string.IsNullOrWhiteSpace(login))
            {
                OwinConfigHelper.InitAsync(Path.Combine(YetaWFManager.RootFolderWebProject, login)).Wait();// wait ok, startup only, load login provider settings
            }
            services.AddIdentity <UserDefinition, RoleDefinition>()
            .AddUserStore <UserStore>()
            .AddRoleStore <RoleStore>();

            services.Configure <IdentityOptions>(options => {
                // Password settings
                options.Password.RequireDigit           = OwinConfigHelper.GetValue <bool>(AREA, "Password:RequireDigit", false);
                options.Password.RequiredLength         = OwinConfigHelper.GetValue <int>(AREA, "Password:RequiredLength", 6);
                options.Password.RequireNonAlphanumeric = OwinConfigHelper.GetValue <bool>(AREA, "Password:RequireNonAlphanumeric", false);
                options.Password.RequireUppercase       = OwinConfigHelper.GetValue <bool>(AREA, "Password:RequireUppercase", false);
                options.Password.RequireLowercase       = OwinConfigHelper.GetValue <bool>(AREA, "Password:RequireLowercase", false);

                // long secIntvl = OwinConfigHelper.GetValue<long>(AREA, "OWin:SecurityStampValidationInterval", new TimeSpan(0, 30, 0).Ticks); // 30 minutes

                // We handle lockouts
                options.Lockout.DefaultLockoutTimeSpan  = TimeSpan.FromMinutes(0);
                options.Lockout.MaxFailedAccessAttempts = 0;

                // User settings
                // the default is acceptable: options.User.AllowedUserNameCharacters
                // We handle email/name ourselves
                options.User.RequireUniqueEmail = false;
            });

            services.ConfigureApplicationCookie(c => {
                long ticks            = OwinConfigHelper.GetValue <long>(AREA, "OWin:ExpireTimeSpan", new TimeSpan(10, 0, 0, 0).Ticks);
                c.Cookie.Name         = string.Format(".YetaWF.Cookies.{0}", YetaWFManager.DefaultSiteName);
                c.Cookie.SecurePolicy = Microsoft.AspNetCore.Http.CookieSecurePolicy.SameAsRequest;
                c.Cookie.SameSite     = OwinConfigHelper.GetValue <Microsoft.AspNetCore.Http.SameSiteMode>(AREA, "OWin:SameSiteMode", Microsoft.AspNetCore.Http.SameSiteMode.Strict);
                c.ExpireTimeSpan      = new TimeSpan(ticks);
                c.SlidingExpiration   = OwinConfigHelper.GetValue <bool>(AREA, "OWin:SlidingExpiration", true);
            });
            services.ConfigureExternalCookie(c => {
                long ticks            = OwinConfigHelper.GetValue <long>(AREA, "OWin:ExpireTimeSpan", new TimeSpan(10, 0, 0, 0).Ticks);
                c.Cookie.Name         = string.Format(".YetaWF.Cookies.Ext.{0}", YetaWFManager.DefaultSiteName);
                c.Cookie.SecurePolicy = Microsoft.AspNetCore.Http.CookieSecurePolicy.SameAsRequest;
                c.Cookie.SameSite     = OwinConfigHelper.GetValue <Microsoft.AspNetCore.Http.SameSiteMode>(AREA, "OWin:SameSiteMode", Microsoft.AspNetCore.Http.SameSiteMode.Strict);
                c.ExpireTimeSpan      = new TimeSpan(ticks);
                c.SlidingExpiration   = OwinConfigHelper.GetValue <bool>(AREA, "OWin:SlidingExpiration", true);
            });
        }