// Para obtener más información para configurar la autenticación, visite http://go.microsoft.com/fwlink/?LinkId=301864 public void ConfigureAuth(IAppBuilder app) { // Configure el contexto de base de datos, el administrador de usuarios y el administrador de inicios de sesión para usar una única instancia por solicitud app.CreatePerOwinContext(() => BitSecurityContext.Create("SecurityConnection")); app.CreatePerOwinContext <BitUserManager>(BitUserManager.Create); app.CreatePerOwinContext <BitSignInManager>(BitSignInManager.Create); // Permitir que la aplicación use una cookie para almacenar información para el usuario que inicia sesión // y una cookie para almacenar temporalmente información sobre un usuario que inicia sesión con un proveedor de inicio de sesión de terceros // Configurar cookie de inicio de sesión app.UseCookieAuthentication(new CookieAuthenticationOptions { AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, LoginPath = new PathString("/Account/Login"), CookieName = "BitEngine-IdentityService", Provider = new CookieAuthenticationProvider { // Permite a la aplicación validar la marca de seguridad cuando el usuario inicia sesión. // Es una característica de seguridad que se usa cuando se cambia una contraseña o se agrega un inicio de sesión externo a la cuenta. OnValidateIdentity = SecurityStampValidator.OnValidateIdentity <BitUserManager, BitUser, Guid>( validateInterval: TimeSpan.FromMinutes(30), regenerateIdentityCallback: (manager, user) => user.GenerateUserIdentityAsync(manager), getUserIdCallback: (id) => (Guid.Parse(id.GetUserId()))) } }); app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie); // Permite que la aplicación almacene temporalmente la información del usuario cuando se verifica el segundo factor en el proceso de autenticación de dos factores. app.UseTwoFactorSignInCookie(DefaultAuthenticationTypes.TwoFactorCookie, TimeSpan.FromMinutes(5)); // Permite que la aplicación recuerde el segundo factor de verificación de inicio de sesión, como el teléfono o correo electrónico. // Cuando selecciona esta opción, el segundo paso de la verificación del proceso de inicio de sesión se recordará en el dispositivo desde el que ha iniciado sesión. // Es similar a la opción Recordarme al iniciar sesión. app.UseTwoFactorRememberBrowserCookie(DefaultAuthenticationTypes.TwoFactorRememberBrowserCookie); // Quitar los comentarios de las siguientes líneas para habilitar el inicio de sesión con proveedores de inicio de sesión de terceros //app.UseMicrosoftAccountAuthentication( // clientId: "", // clientSecret: ""); //app.UseTwitterAuthentication( // consumerKey: "", // consumerSecret: ""); //app.UseFacebookAuthentication( // appId: "", // appSecret: ""); //app.UseGoogleAuthentication(new GoogleOAuth2AuthenticationOptions() //{ // ClientId = "", // ClientSecret = "" //}); }
public ServiceResult <Usuario> Create(CreateUsuarioDto createUsuario) { ServiceResult <Usuario> result; try { IdentityResult idenityResult = null; Usuario usuario = null; var user = new BitUser { UserName = createUsuario.Email, Email = createUsuario.Email, EmailConfirmed = createUsuario.EmailConfirmed }; //adding roles if (createUsuario.RolesIds.Length > 0) { foreach (var roleId in createUsuario.RolesIds) { user.Roles.Add(new BitUserRole { RoleId = roleId }); } } var securityContext = new BitSecurityContext(); BitUserManager userManager = new BitUserManager(new BitUserStore(securityContext)); using (var scope = new TransactionScope(TransactionScopeOption.Required)) { idenityResult = userManager.Create(user, createUsuario.Password); if (idenityResult.Succeeded) { usuario = new Usuario { Id = user.Id, Email = user.Email }; _usuarioRepository.Insert(usuario); _context.SaveChanges(); } else { result = new ServiceErrorResult <Usuario>(new OperationError(ErrorType.Validation, string.Join(",", idenityResult.Errors))); } scope.Complete(); } result = new ServiceSucceedResult <Usuario>(usuario); } catch (Exception ex) { OperationError error = new OperationError(ErrorType.Exception, "No se realizó la inserción", ex); result = new ServiceErrorResult <Usuario>(ErrorType.Exception, "No se insertó", ex); } return(result); }
protected override bool AuthorizeCore(HttpContextBase httpContext) { var user = (ClaimsIdentity)HttpContext.Current.User.Identity; if (!user.IsAuthenticated) { return(false); } var userId = user.Claims.SingleOrDefault(x => x.Type == ClaimTypes.NameIdentifier).Value; BitSecurityContext securityContext = httpContext.GetOwinContext().Get <BitSecurityContext>(); var id = Guid.Parse(userId); var repository = new PermissionRepository(securityContext); var valid = repository.HasPermission(id, PermissionKey); return(valid); }
/// <summary> /// Devuelve las opciones de menú que corresponden al usuario según sus permisos /// </summary> /// <param name="context">Contexto de OWIN</param> /// <returns>Colección de permisos</returns> public static ICollection <BitMenuItem> GetUserMenu(this IOwinContext context) { var user = (ClaimsIdentity)HttpContext.Current.User.Identity; if (!user.IsAuthenticated) { return(new List <BitMenuItem>()); } var userId = user.Claims.SingleOrDefault(x => x.Type == ClaimTypes.NameIdentifier).Value; BitSecurityContext securityContext = context.Get <BitSecurityContext>(); var id = Guid.Parse(userId); var repository = new MenuItemRepository(securityContext); return(repository.GetMenuByUsuarioId(id)); }
public PermissionRepository(BitSecurityContext context) { _context = context; }
public MenuItemRepository(BitSecurityContext context) { _context = context; }
public RoleRepository(BitSecurityContext context) { _context = context; }