【问题标题】:.NET CORE 3.0 GetTokenAsync Authorization issue.NET CORE 3.0 GetTokenAsync 授权问题
【发布时间】:2020-05-15 15:38:25
【问题描述】:
Accept: application/json, text/plain, */*
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Authorization: Bearer MyMagicToken
Connection: keep-alive
Content-Length: 103
Content-Type: application/json
Host: localhost:63304
Origin: http://localhost:4200
Referer: http://localhost:4200/fooBar
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-site
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36

我将上述请求发送到我的 WebApI 2 控制器。控制器用[Authorize] 属性装饰

由于某种原因,我的 AUTHORIZE 属性的第一行返回 null

protected override Task HandleRequirementAsync(AuthorizationHandlerContext 
    context, HasPermissionRequirement requirement)
    {
        var token = this._httpContextAccessor.HttpContext.GetTokenAsync("access_token").Result;

我应该如何更改我的 http 请求以使 var token 等于 MyMagicToken

ApiStartup我有

 app.UseAuthentication();
 app.UseAuthorization();

【问题讨论】:

  • 你有请求中间件吗?
  • 不在AUTHORIZATION 代码中,我设置了ErrorMiddleWare
  • 确保认证完成
  • @DanielA.White 我通过添加中间件修改了问题。这是你说的吗?

标签: c# asp.net-core asp.net-core-3.0


【解决方案1】:

如果您需要读取 Bearer 令牌,只需获取 Authorization 标头的值并将其修剪如下:

            var authorizationHeader = this._httpContextAccessor.HttpContext.Request.Headers["Authorization"];
            var tokenValue = authorizationHeader.First().Replace("Bearer ", "");

【讨论】:

  • 你的解决方案有效,我想用 var token = this._httpContextAccessor.HttpContext.GetTokenAsync("access_token").Result; 来做。我很好奇为什么上面的代码不起作用。
  • 如果没有整个启动配置上下文就很难判断:P。我很高兴它对你有用
【解决方案2】:

我认为您的问题是您必须像这样指定身份验证架构

[Authorize(AuthenticationSchemes ="kind of yout auth schema")]

【讨论】:

    【解决方案3】:

    问题不在于GetTokenAsync(),问题在于令牌本身,令牌必须是 JWT 访问格式的令牌。 GetTokenAsync() 不会通过 HTTP 标头寻找带有 Authorization 的标头,而只是获取里面的值。它通过 HTTP 标头寻找 Authorization 标头 AND 具有格式正确的 JWT 令牌

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-21
      • 2020-01-24
      • 2011-04-18
      • 2020-12-29
      • 1970-01-01
      • 1970-01-01
      • 2020-02-12
      相关资源
      最近更新 更多