コード例 #1
0
        private TokenDates GetTokenDates(TokenConfigurations tokenConfigurations)
        {
            try
            {
                DateTime   dataCriacao   = DateTime.Now;
                DateTime   dataExpiracao = dataCriacao.AddSeconds(tokenConfigurations.Seconds);
                TokenDates tkDt          = new TokenDates(dataCriacao, dataExpiracao);

                return(tkDt);
            }
            catch (Exception)
            {
                return(null);
            }
        }
コード例 #2
0
        private string CreateToken(TokenDates tkDate, ClaimsIdentity identity, SigningConfigurations signingConfigurations, TokenConfigurations tokenConfigurations)
        {
            try
            {
                var handler       = new JwtSecurityTokenHandler();
                var securityToken = handler.CreateToken(new SecurityTokenDescriptor
                {
                    Issuer             = tokenConfigurations.Issuer,
                    Audience           = tokenConfigurations.Audience,
                    SigningCredentials = signingConfigurations.SigningCredentials,
                    Subject            = identity,
                    NotBefore          = tkDate.NotBefore,
                    Expires            = tkDate.Expires
                });
                string token = handler.WriteToken(securityToken);

                return(token);
            }
            catch (Exception ex)
            {
                return(null);
            }
        }
コード例 #3
0
        public AuthResult AuthUser(UserDb userDb, string inputPassword, SigningConfigurations signingConfigurations, TokenConfigurations tokenConfigurations)
        {
            try
            {
                bool credenciaisValidas = ValidateCredentials(userDb, inputPassword);

                if (credenciaisValidas)
                {
                    ClaimsIdentity identity = CreateClaims(userDb);

                    if (identity != null)
                    {
                        TokenDates tkDate = GetTokenDates(tokenConfigurations);

                        if (tkDate != null)
                        {
                            string token = CreateToken(tkDate, identity, signingConfigurations, tokenConfigurations);

                            if (!string.IsNullOrWhiteSpace(token))
                            {
                                authResult.authenticated = true;
                                authResult.created       = tkDate.NotBefore;
                                authResult.expiration    = tkDate.Expires;
                                authResult.accessToken   = $"Bearer {token}";
                                authResult.message       = "OK";

                                return(authResult);
                            }
                            else
                            {
                                authResult.authenticated = false;
                                authResult.message       = "Falha ao gerar token.";

                                return(authResult);
                            }
                        }
                        else
                        {
                            authResult.authenticated = false;
                            authResult.message       = "Falha ao gerar validade do token.";

                            return(authResult);
                        }
                    }
                    else
                    {
                        authResult.authenticated = false;
                        authResult.message       = "Impossível gerar token.";

                        return(authResult);
                    }
                }
                else
                {
                    authResult.authenticated = false;
                    authResult.message       = "Credenciais inválidas!";

                    return(authResult);
                }
            }
            catch (Exception ex)
            {
                authResult.authenticated = false;
                authResult.message       = "Ocorreu um erro durante a autenticação.";

                return(authResult);
            }
        }