首页 > 解决方案 > 为什么错误 500 Web Api JWT 在服务器上进行身份验证?

问题描述

我有以下方法来使用 JWT 对用户进行身份验证

public async Task<IActionResult> Login([FromBody] Usuario usuario)
if (ModelState.IsValid)
{
     var result = await _signInManager.PasswordSignInAsync(usuario.Email, usuario.Password, isPersistent: false, lockoutOnFailure: false);
     if (result.Succeeded)
     {
         return BuildTokenAsync(usuario);
     }
         else
     {
         ModelState.AddModelError(string.Empty, "Invalid login attempt.");
         return BadRequest(ModelState);
     }
}

private IActionResult BuildTokenAsync(Usuario usuario)
{
    var claims = new[]
    {
        new Claim(JwtRegisteredClaimNames.UniqueName, usuario.Email),
        new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString())
        };

        var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration["Llave_super_secreta"]));
        var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);

        var expiration = DateTime.UtcNow.AddHours(1);

        JwtSecurityToken token = new JwtSecurityToken(
           issuer: "https://mydomain",
           audience: "https://mydomain",
           claims: claims,
           expires: expiration,
           signingCredentials: creds);

        return Ok(new
        {
            token = new JwtSecurityTokenHandler().WriteToken(token),
            expiration = expiration
        });

    }
}

在localhost中没有问题,给我发token就可以了。

结果在本地主机

但是在服务中,出现错误500。

结果在服务器

如果我向服务器上的另一个服务发送呼叫,则没有问题。一切都很好,只是为了验证我有问题。

服务器具有 SSL 证书。

服务器配置

知道它可能是什么吗?

标签: c#restapi

解决方案


我发现了问题。解决方案是环境变量没有被传递给服务器


推荐阅读