Exemplo n.º 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));
        }
Exemplo n.º 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();
        }
Exemplo n.º 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);
            });
        }
Exemplo n.º 4
0
        public async Task <ActionResult> OwinEdit_Partial(EditModel model)
        {
            if (!ModelState.IsValid)
            {
                return(PartialView(model));
            }
            if (model.ExpireTimeSpan < new TimeSpan(0, 10, 0))
            {
                ModelState.AddModelError(nameof(model.ExpireTimeSpan), this.__ResStr("timeSpan", "The minimum expiration timespan should be at least 10 minutes"));
                return(PartialView(model));
            }
            if (model.SecurityStampValidationInterval < new TimeSpan(0, 1, 0))
            {
                ModelState.AddModelError(nameof(model.SecurityStampValidationInterval), this.__ResStr("securityInterval", "The minimum validation interval should be at least 1 minute"));
                return(PartialView(model));
            }

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

            OwinConfigHelper.SetValue <bool>(Module.AreaName, "OWin:SlidingExpiration", model.SlidingExpiration);
            OwinConfigHelper.SetValue <long>(Module.AreaName, "OWin:ExpireTimeSpan", model.ExpireTimeSpan.Ticks);
            OwinConfigHelper.SetValue <long>(Module.AreaName, "OWin:SecurityStampValidationInterval", model.SecurityStampValidationInterval.Ticks);
            OwinConfigHelper.SetValue <long>(Module.AreaName, "PasswordRenewal", model.PasswordRenewal.Ticks);

            OwinConfigHelper.SetValue <bool>(Module.AreaName, "MicrosoftAccount:Enabled", model.UseMicrosoft);
            OwinConfigHelper.SetValue <string>(Module.AreaName, "MicrosoftAccount:Public", model.MicrosoftPublic);
            OwinConfigHelper.SetValue <string>(Module.AreaName, "MicrosoftAccount:Private", model.MicrosoftPrivate);
            OwinConfigHelper.SetValue <bool>(Module.AreaName, "GoogleAccount:Enabled", model.UseGoogle);
            OwinConfigHelper.SetValue <string>(Module.AreaName, "GoogleAccount:Public", model.GooglePublic);
            OwinConfigHelper.SetValue <string>(Module.AreaName, "GoogleAccount:Private", model.GooglePrivate);
            OwinConfigHelper.SetValue <bool>(Module.AreaName, "FacebookAccount:Enabled", model.UseFacebook);
            OwinConfigHelper.SetValue <string>(Module.AreaName, "FacebookAccount:Public", model.FacebookPublic);
            OwinConfigHelper.SetValue <string>(Module.AreaName, "FacebookAccount:Private", model.FacebookPrivate);
            OwinConfigHelper.SetValue <bool>(Module.AreaName, "TwitterAccount:Enabled", model.UseTwitter);
            OwinConfigHelper.SetValue <string>(Module.AreaName, "TwitterAccount:Public", model.TwitterPublic);
            OwinConfigHelper.SetValue <string>(Module.AreaName, "TwitterAccount:Private", model.TwitterPrivate);
            await OwinConfigHelper.SaveAsync();

            await Auditing.AddAuditAsync($"{nameof(OwinEditModuleController)}.{nameof(OwinEdit_Partial)}", "Login", Guid.Empty,
                                         $"{nameof(OwinEdit_Partial)}", RequiresRestart : true
                                         );

            return(FormProcessed(model, this.__ResStr("okSaved", "Login provider settings successfully saved - These settings won't take effect until the site (including all instances) is restarted."), NextPage: Manager.CurrentSite.HomePageUrl));
        }
Exemplo n.º 5
0
        public ActionResult Location(LocationDto model)
        {
            OwinConfigHelper helper = new OwinConfigHelper();

            return(Success(helper.SetLocation(model)));
        }