首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >继续返回401状态- Bearer error="invalid_token",error_description=“签名无效”

继续返回401状态- Bearer error="invalid_token",error_description=“签名无效”
EN

Stack Overflow用户
提问于 2021-05-04 12:52:09
回答 1查看 450关注 0票数 1

我在我的Web中实现了Jwt,成功地获得了一个登录令牌。我复制/粘贴此令牌以用于授权,然后收到

error= error="invalid_token",error_description=“签名无效”

ValidIssuer是在Azure中部署的WebAPI Url

ValidAudience是角前端URL,也部署在Azure中。

我花了几个小时寻找这个问题,但我似乎没有找到解决办法。

即使把ValidateIssuer & -Audience变成假,也解决不了问题。是我错过了什么还是你看到了错误?

Startup.cs

代码语言:javascript
复制
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddCors(options =>
            {
                options.AddPolicy("CorsPolicy", builder =>
                {
                    builder.AllowAnyOrigin()
                    .AllowAnyHeader()
                    .AllowAnyMethod();
                });
            });
            services.ConfigureIISIntegration();

            services.ConfigureMsSqlContext(Configuration);

            services.ConfigureRepositoryWrapper();

            services.AddAuthentication(opt => {
                opt.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                opt.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
                opt.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
            })
            .AddJwtBearer(options =>
            {
                options.SaveToken = true;
                options.RequireHttpsMetadata = false;
                options.TokenValidationParameters = new TokenValidationParameters
                {
                    ValidateIssuer = true,
                    ValidateAudience = true,
                    ValidIssuer = Configuration["JWT:Issuer"],
                    ValidAudience = Configuration["JWT:Audience"],
                    IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["JWT:Secret"]))
                };
            });

            services.AddControllers();
        }

        
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            app.UseDeveloperExceptionPage();

            app.UseHttpsRedirection();
            app.UseStaticFiles();

            app.UseCors("CorsPolicy");

            app.UseForwardedHeaders(new ForwardedHeadersOptions
            {
                ForwardedHeaders = ForwardedHeaders.All
            });

            app.UseAuthentication();
            app.UseRouting();
            app.UseAuthorization();
            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
            });
        }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-05 16:03:59

解决我的问题,也许很小,但影响很大。

我忘了在请求方法的顶部添加授权-属性。

代码语言:javascript
复制
[HttpGet, Authorize]
public IActionResult GetMaterialDetails()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67385143

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档