身份验证失败,并且核心 WebApi 的 Asp.Net 取消保护票证失败”

当我将持有者令牌与受 保护的 AspNetCore 控制器一起使用时,我收到日志消息:[Authorize]


info: Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationHandler[7]

      Identity.Application was not authenticated. Failure message: Unprotect ticket failed

我试图理解这意味着什么,以及可能导致这种情况的原因。


Api 的类具有以下设置。Api 使用 AspNet Identity Core。Startup


public void ConfigureServices(IServiceCollection services)

{

    services.AddDbContext<UserAccountDbContext>(options => options.UseSqlServer(connectionString,

                                                                                     sql => sql.MigrationsAssembly(MigrationsAssembly)));


    services.AddIdentity<UserAccount, IdentityRole>()

                    .AddEntityFrameworkStores<UserAccountDbContext>();


    services.AddTransient<UserManager<UserAccount>>();


    services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);


    services.AddAuthorization();


    services.AddAuthentication("Bearer")

            .AddJwtBearer("Bearer", options =>

                                             {

                                                options.Authority = _configuration.OAuth2.ServerUri;

                                                options.RequireHttpsMetadata = false;

                                                options.Audience = "api";

                                            });

        }

和:


public void Configure(IApplicationBuilder app, IHostingEnvironment env)

{

    if (env.IsDevelopment())

    {

        app.UseDeveloperExceptionPage();

    }


    app.UseAuthentication();

    app.UseMvc();

}

对调用方的响应是“未经授权”(401),没有任何解释。


编辑:


我认为这与评论所建议的cookie有关。我看到一块饼干。我清除了这个并尝试但没有帮助。我认为这可能与我的令牌服务器和Api服务器的设置方式有关(两者都使用AspNet Identity)。Identity.Application


我有一个Mvc项目在localhost:5000上作为Idp运行。然后,我的用户管理器 Api 具有受保护的控制器,它托管在 localhost:5001 上。当我尝试访问受保护的控制器时,我被重定向到IdP项目中的登录页面(我认为这是设置cookie的原因)。然后,我尝试将令牌与控制器一起使用,我得到了上面提到的错误。




holdtom
浏览 166回答 2
2回答

Helenr

当我在端口 5000 上启动开发服务器时,我还收到“取消保护票证失败”错误消息。在Chrome中,我有很多来自另一个项目的cookie,该项目也运行在5000。已删除所有 Cookie 和错误消息消失。

catspeake

当您在两个 Web 服务器之间平衡流量并且尚未将数据保护配置为共享密钥时,可能会发生这种情况。
打开App,查看更多内容
随时随地看视频慕课网APP