public async Task <UsuarioSaida> RetornaUsuario(string login) { return(await Task <List <UsuarioSaida> > .Run( () => { UsuarioSaida saida = null; var usu = _Repositorio.Query(where : a => a.Login.ToUpper().Trim() == login.ToUpper().Trim()).FirstOrDefault(); if (usu != null) { saida = _mapper.Map <UsuarioSaida>(usu); } return saida; })); }
private IActionResult CriarResponseTokenJwt(UsuarioSaida usuario, DateTime dataCriacaoToken, DateTime dataExpiracaoToken, ConfigurationHelper configHelper) { var identity = new ClaimsIdentity( new GenericIdentity(usuario.Nome), // Geração de claims. No contexto desse sistema, claims não precisaram ser criadas. new[] { new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString("N")), new Claim(JwtRegisteredClaimNames.UniqueName, usuario.Email), new Claim("Nome", usuario.Nome), new Claim("IdUsuario", usuario.Id.ToString()) } ); var jwtHandler = new JwtSecurityTokenHandler(); // Configuração realizada, seguindo o artigo "ASP.NET Core 2.0: autenticação em APIs utilizando JWT" // (https://medium.com/@renato.groffe/asp-net-core-2-0-autentica%C3%A7%C3%A3o-em-apis-utilizando-jwt-json-web-tokens-4b1871efd) var key = new SymmetricSecurityKey(System.Text.Encoding.ASCII.GetBytes(configHelper.JwtTokenConfig.SecurityKey)); var securityToken = jwtHandler.CreateToken(new SecurityTokenDescriptor { Issuer = configHelper.JwtTokenConfig.Issuer, Audience = configHelper.JwtTokenConfig.Audience, SigningCredentials = new SigningCredentials(key, SecurityAlgorithms.HmacSha256), Subject = identity, NotBefore = dataCriacaoToken, Expires = dataExpiracaoToken }); // Cria o token JWT em formato de string var jwtToken = jwtHandler.WriteToken(securityToken); return(new ApiResult(new Saida(true, new[] { UsuarioMensagem.Usuario_Autenticado_Com_Sucesso }, new { DataCriacaoToken = dataCriacaoToken.ToString("dd/MM/yyyy HH:mm:ss"), DataExpiracaoToken = dataExpiracaoToken.ToString("dd/MM/yyyy HH:mm:ss"), Token = jwtToken, }))); }
private ISaida CriarResponseTokenJwt(UsuarioSaida usuario, DateTime dataCriacaoToken, DateTime dataExpiracaoToken, JwtTokenConfig tokenConfig) { var identity = new ClaimsIdentity( new GenericIdentity(usuario.Nome), // Geração de claims. No contexto desse sistema, claims não precisaram ser criadas. new[] { new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString("N")), new Claim(JwtRegisteredClaimNames.UniqueName, usuario.Email), new Claim("IdUsuario", usuario.Id.ToString()) } // Adiciona as perissões de acesso do usuário .Union(usuario.PermissoesAcesso.Select(x => new Claim(x, x))) ); var jwtHandler = new JwtSecurityTokenHandler(); var securityToken = jwtHandler.CreateToken(new SecurityTokenDescriptor { Issuer = tokenConfig.Issuer, Audience = tokenConfig.Audience, SigningCredentials = tokenConfig.SigningCredentials, Subject = identity, NotBefore = dataCriacaoToken, Expires = dataExpiracaoToken }); // Cria o token JWT em formato de string var jwtToken = jwtHandler.WriteToken(securityToken); return(new Saida(true, new[] { UsuarioMensagem.Usuario_Autenticado_Com_Sucesso }, new { DataCriacaoToken = dataCriacaoToken, DataExpiracaoToken = dataExpiracaoToken, Token = jwtToken, })); }