Exemple #1
0
        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;
            }
        }
Exemple #3
0
        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
                });
            }
        }
Exemple #4
0
        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
                });
            }
Exemple #5
0
        public async Task <IActionResult> Login([FromBody] LoginRequest param)
        {
            var result = await _service.Autenticar(param);

            return(Result(result));
        }