public IActionResult Login(LoginViewModel login) { try { // Declara o objeto de login do Glpi LoginGlpiRequest loginGlpiRequest = new LoginGlpiRequest(login.Email, login.Senha); // Efetua Login no Glpi var sessionGlpiResponse = _sessionGlpiService.EfetuarLogin(loginGlpiRequest).Result; // Verifica se a requisição ocorreu com sucesso if (sessionGlpiResponse == null) { return(NotFound()); } //Define os dados que serão fornecidos no token - PayLoad var claims = new[] { new Claim("sessionTokenGlpi", sessionGlpiResponse.TokenSessao.ToString()), }; // Chave de acesso do token var key = new SymmetricSecurityKey(System.Text.Encoding.UTF8.GetBytes("gateaway-chave-autenticacao")); //Credenciais do Token - Header var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256); //Gera o token var token = new JwtSecurityToken( issuer: "GatewayAPI.WebApi", audience: "GatewayAPI.WebApi", claims: claims, expires: DateTime.Now.AddMinutes(30), signingCredentials: creds ); //Retorna Ok com o Token return(Ok(new { token = new JwtSecurityTokenHandler().WriteToken(token) })); } catch (Exception ex) { return(BadRequest(new { mensagem = ex.InnerException != null ? $"{ex.InnerException.Message}": ex.Message })); } }
public async Task <SessionGlpiResponse> EfetuarLogin(LoginGlpiRequest loginGlpi) { // Declara a variavel sessionGlpi SessionGlpiResponse sessionGlpi; try { // Enviar a requisição sessionGlpi = await _sessionGlpiApi.EfetuarLogin(loginGlpi); } catch (Exception ex) { throw new InvalidOperationException("Ocorreu um erro na requisição de login no Glpi: " + ex.Message); } // Retorna o resultado return(sessionGlpi); }