JWT Bearer ASP.Net Core 3.1用户在服务器上为空

维也纳卡森酒店

今天,我一直在尝试使用Microsoft.AspNetCore.Authentication.JwtBearer库将JSON Web令牌信息绑定到HttpContext.User。

问题:每次调用服务器时,我都可以使用[Authorize]属性进入函数,但是User对象完全空白。很高兴知道每个用户是谁。

我在客户端解码的JWT: coded_jwt

我的客户端函数在服务器上调用[Authorize] C#方法:

testAuth() {
    let token = localStorage.getItem("jwt");
    console.log(this.jwtHelper.decodeToken(token)); // Where I got the decoded JWT picture
    this.http.get(this.baseUrl + "Authentication/Test", {
      headers: new HttpHeaders({
        "Content-Type": "application/json",
        "Authentication": "Bearer " + token
      })
    }).subscribe(response => {
      console.log(response); // never happens
    }, err => {
      console.log(err); // always happens because User.Identity is null
    });
  }

服务器方法,其中User.Identity始终为空,但可以通过[Authorize]属性来允许我们进行以下操作:

[HttpGet]
[Authorize]
public IActionResult Test()
{
    // User.Identity is always blank, so a 500 error is thrown because Name == null
    return Ok(HttpContext.User.Identity.Name);
}

中间件管道: Startup.cs中的ConfigureServices():

services.AddControllers();

            // Enable CORS (cross origin requests) so other sites can send requests to the auth API
            services.AddCors();

            // JWT
            // Use JSON Web Tokens for auth
            services.AddAuthentication(opt => {
                opt.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                opt.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
            })
            .AddJwtBearer(x =>
            {
                x.RequireHttpsMetadata = false;
                x.SaveToken = true;
                x.TokenValidationParameters = new TokenValidationParameters
                {
                    ValidateAudience = true,
                    ValidateIssuerSigningKey = true,
                    ValidateLifetime = false,
                    IssuerSigningKey = new SymmetricSecurityKey(System.Text.Encoding.UTF8.GetBytes(Configuration.GetValue<string>("JwtInfo:SecretKey"))),
                    ValidIssuer = Configuration.GetValue<string>("JwtInfo:ServerAddress", "http://localhost:44351/"), // Address that this project is running on
                    ValidAudience = Configuration.GetValue<string>("JwtInfo:ValidRecipients", "http://localhost:44364/") // Addresses of projects that are allowed to access this API
                };
            });

在Startup.cs中的Configure():

app.UseHttpsRedirection();

            app.UseRouting();

            // Allow CORS (cross origin requests)
            // This must come before routing, authentication, and endpoints
            app.UseCors(option => option
                .AllowAnyOrigin()
                .AllowAnyMethod()
                .AllowAnyHeader());

            // Use JWT authentication
            app.UseAuthentication();
            app.UseAuthorization();

如何正确地将JWT声明与用户的声明绑定在一起?

如果用户为空,我如何通过[授权]?

感谢您的帮助!

维也纳卡森酒店

包含令牌的标头设置不正确。它应该是:

"Authorization": "Bearer " + token

代替“身份验证”:“承载者” +令牌

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Microsoft Graph令牌和Jwt Bearer令牌保护ASP.NET Core Web API

来自分类Dev

ASP.NET Core web api 编辑 Bearer auth

来自分类Dev

ASP.Net Core JWT令牌验证

来自分类Dev

Bearer Token Auth - 如何在控制器 ASP.NET Core 2.1 中获取登录用户值

来自分类Dev

ASP.NET Core MVC 2:NameValueCollection 实例在服务器端为空

来自分类Dev

使用Identity Core发行Bearer JWT令牌

来自分类Dev

使用 jwt 授权在 Asp.net core 中检查用户验证

来自分类Dev

在ASP.NET Core的Swagger中使用JWT(授权:承载)

来自分类Dev

如何将 JWT 用于 asp.net Core

来自分类Dev

在ASP.NET Core 2.2中使用nswag设置Bearer令牌

来自分类Dev

使用来自Azure AD的Bearer令牌来保护ASP.Net Core 3.1 API

来自分类Dev

从Angular 2到ASP.net Core的POST请求不起作用。服务器端为空值

来自分类Dev

ASP.Net Core 3远程证书在MacO上无效

来自分类Dev

带ASP.NET Identity 3的JWT承载令牌

来自分类Dev

从3.1.4范围更新身份服务器4 4.0.0后,范围与Mongo DB的asp.net core 3无效

来自分类Dev

ASP.NET Core MVC MySQL服务器连接

来自分类Dev

自己的认证和授权服务器asp net core

来自分类Dev

从ASP.NET Core 2.2迁移后,ASP.NET Core 3.1.1 Jwt重定向而不是返回HTTP状态401

来自分类Dev

如何确定Windows服务器上是否已安装asp.net Core

来自分类Dev

Asp Net core 3的配置是否与Asp Net core 3无关?

来自分类Dev

.NET Core-JWT-SecurityTokenNoExpirationException

来自分类Dev

.NET Standard和.NET Core 3.x或ASP.NET Core 3.x

来自分类Dev

共享cookie .net Core 3和Asp.net

来自分类Dev

使用ADFS的JWT承载身份验证将ASP.NET Framework迁移到ASP.NET Core 3.1

来自分类Dev

JWT始终在.net Core API上返回未经授权的401

来自分类Dev

5.7.0用户未通过mailkit和strato服务器在asp.net core1中进行身份验证

来自分类Dev

将自定义验证添加到ASP.NET Core的JWT令牌中?

来自分类Dev

ASP.NET Core RC2 Jwt令牌KID错误

来自分类Dev

在ASP .Net Core 2.2中添加JWT令牌后,授权不起作用

Related 相关文章

  1. 1

    使用Microsoft Graph令牌和Jwt Bearer令牌保护ASP.NET Core Web API

  2. 2

    ASP.NET Core web api 编辑 Bearer auth

  3. 3

    ASP.Net Core JWT令牌验证

  4. 4

    Bearer Token Auth - 如何在控制器 ASP.NET Core 2.1 中获取登录用户值

  5. 5

    ASP.NET Core MVC 2:NameValueCollection 实例在服务器端为空

  6. 6

    使用Identity Core发行Bearer JWT令牌

  7. 7

    使用 jwt 授权在 Asp.net core 中检查用户验证

  8. 8

    在ASP.NET Core的Swagger中使用JWT(授权:承载)

  9. 9

    如何将 JWT 用于 asp.net Core

  10. 10

    在ASP.NET Core 2.2中使用nswag设置Bearer令牌

  11. 11

    使用来自Azure AD的Bearer令牌来保护ASP.Net Core 3.1 API

  12. 12

    从Angular 2到ASP.net Core的POST请求不起作用。服务器端为空值

  13. 13

    ASP.Net Core 3远程证书在MacO上无效

  14. 14

    带ASP.NET Identity 3的JWT承载令牌

  15. 15

    从3.1.4范围更新身份服务器4 4.0.0后,范围与Mongo DB的asp.net core 3无效

  16. 16

    ASP.NET Core MVC MySQL服务器连接

  17. 17

    自己的认证和授权服务器asp net core

  18. 18

    从ASP.NET Core 2.2迁移后,ASP.NET Core 3.1.1 Jwt重定向而不是返回HTTP状态401

  19. 19

    如何确定Windows服务器上是否已安装asp.net Core

  20. 20

    Asp Net core 3的配置是否与Asp Net core 3无关?

  21. 21

    .NET Core-JWT-SecurityTokenNoExpirationException

  22. 22

    .NET Standard和.NET Core 3.x或ASP.NET Core 3.x

  23. 23

    共享cookie .net Core 3和Asp.net

  24. 24

    使用ADFS的JWT承载身份验证将ASP.NET Framework迁移到ASP.NET Core 3.1

  25. 25

    JWT始终在.net Core API上返回未经授权的401

  26. 26

    5.7.0用户未通过mailkit和strato服务器在asp.net core1中进行身份验证

  27. 27

    将自定义验证添加到ASP.NET Core的JWT令牌中?

  28. 28

    ASP.NET Core RC2 Jwt令牌KID错误

  29. 29

    在ASP .Net Core 2.2中添加JWT令牌后,授权不起作用

热门标签

归档