public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context) { context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "*" }); var autenticarRequest = new AutenticarRequest { UsuarioLogin = context.UserName, Senha = context.Password }; var usuario = _serviceUsuario.Autenticar(autenticarRequest); if (usuario == null) { context.SetError("Erro de Autenticação", "Usuário ou Senha Inválidos."); return; } var identity = new ClaimsIdentity(context.Options.AuthenticationType); //Definindo as Claims identity.AddClaim(new Claim("UsuarioId", usuario.Id.ToString())); identity.AddClaim(new Claim("UsuarioNome", usuario.Nome)); identity.AddClaim(new Claim("UsuarioLogin", usuario.UsuarioLogin)); identity.AddClaim(new Claim("UsuarioEmail", usuario.Email)); var principal = new GenericPrincipal(identity, new string[] { }); Thread.CurrentPrincipal = principal; context.Validated(identity); }
public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context) { try { IServiceUsuario serviceUsuario = _container.Resolve <IServiceUsuario>(); var request = new UsuarioLoginRequest(); request.Email = context.UserName; request.Senha = context.Password; UsuarioLoginResponse response = serviceUsuario.Autenticar(request); if ((serviceUsuario.IsInvalid()) || (response == null)) { context.SetError("invalid_grant", "Usuário não encontrado."); serviceUsuario.ClearNotifications(); return; } var identity = new ClaimsIdentity(context.Options.AuthenticationType); identity.AddClaim(new Claim(ClaimTypes.Name, response.Nome)); identity.AddClaim(new Claim(ClaimTypes.Role, response.Perfil)); var roles = new List <string>(); roles.Add(response.Perfil); var principal = new GenericPrincipal(identity, roles.ToArray()); Thread.CurrentPrincipal = principal; context.Validated(identity); } catch (Exception ex) { context.SetError("invalid_grant", ex.Message); return; } }
public object Autenticar( [FromBody] AutenticarRequest request, [FromServices] SigningConfigurations signingConfigurations, [FromServices] TokenConfigurations tokenConfigurations) { bool credencialValidas = false; AutenticarResponse response = _serviceUsuario.Autenticar(request); credencialValidas = response != null; if (credencialValidas) { ClaimsIdentity identity = new ClaimsIdentity( new GenericIdentity(response.Id.ToString(), "Id"), new[] { new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString("N")), new Claim("Usuario", JsonConvert.SerializeObject(response)) // guarda as informações do usuário na claim }); DateTime dataCriacao = DateTime.Now; DateTime dataExpiracao = dataCriacao + TimeSpan.FromSeconds(tokenConfigurations.Seconds); var handler = new JwtSecurityTokenHandler(); //Criar o Token var securityToken = handler.CreateToken(new SecurityTokenDescriptor { Issuer = tokenConfigurations.Issuer, Audience = tokenConfigurations.Audience, SigningCredentials = signingConfigurations.SigningCredentials, Subject = identity, NotBefore = dataCriacao, Expires = dataExpiracao }); var token = handler.WriteToken(securityToken); return(new { authenticated = true, created = dataCriacao.ToString("yyyy-MM-dd HH:mm:ss"), expiration = dataExpiracao.ToString("yyyy-MM-dd HH:mm:ss"), accessToken = token, message = "Ok", primeiroNomeDoPropriedade = response.PrimeiroNome }); } else { return(new { authenticated = false, _serviceUsuario.Notifications }); } }
public object Autenticar([FromBody] AutenticarUsuarioRequest request, [FromServices] TokenConfigurations tokenConfigurations, [FromServices] SigningConfigurations signingConfigurations) { AutenticarUsuarioResponse response = (AutenticarUsuarioResponse)_serviceUsuario.Autenticar(request); if (!(response is null)) { DateTime dataCriacao = DateTime.Now; DateTime dataExpiracao = dataCriacao + TimeSpan.FromSeconds(tokenConfigurations.Seconds); ClaimsIdentity identity = new ClaimsIdentity( new GenericIdentity(response.Id.ToString(), "Id"), new[] { new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString("N")), new Claim("Usuario", JsonConvert.SerializeObject(response)) } ); var handler = new JwtSecurityTokenHandler(); var securityToken = handler.CreateToken(new SecurityTokenDescriptor { Issuer = tokenConfigurations.Issuer, Audience = tokenConfigurations.Audience, SigningCredentials = signingConfigurations.SigningCredentials, Subject = identity, NotBefore = dataCriacao, Expires = dataExpiracao }); var token = handler.WriteToken(securityToken); _httpContextAcessor.HttpContext.User.AddIdentity(identity); return(new { authenticated = true, created = dataCriacao.ToString("yyyy-MM-dd HH:mm:ss"), expiration = dataExpiracao.ToString("yyyy-MM-dd HH:mm:ss"), accessToken = token, message = "OK", response.Email }); }
public async Task <IActionResult> Login([FromBody] LoginRequest param) { var result = await _service.Autenticar(param); return(Result(result)); }