首页 > 解决方案 > ASP.NET WebApi 总是返回 401 Unauthorized

问题描述

我正在尝试在我的 WebApi 中创建一个新端点,该端点将从另一台服务器调用。因此,我想为我的 WebApp 设置基于 S2S JWT 承载的身份验证。

startup.cs 代码如下所示

        public void Configuration(IAppBuilder app)
    {
        InitializeLoggers();
        HttpConfiguration httpConfiguration = new HttpConfiguration();
        WebApiConfig.Register(httpConfiguration);
        app.Use<JwtS2SAuthMiddleware>();
        app.UseWebApi(httpConfiguration);
    }

我在这里添加了新行app.Use<JwtS2SAuthMiddleware>();

在 JwtS2SAuthMiddleware 内部,我做了以下检查

  1. context.Request.Path.Value.StartsWith("/newendpoint");
  2. 从请求头中获取授权不记名令牌
  3. 使用 JwtSecurityTokenHandler.ValidateToken() 验证受众、颁发者、颁发者签名密钥
  4. 验证 JWT 中包含的 appId 是否在 App Id 的允许列表中

使用 Fiddler 的请求进行调试后,我看到所有上述检查都通过了,但响应仍然是 401 Unauthorized 并显示一条消息

{"message":"Authorization has been denied for this request."}

在我的 JwtS2SAuthMiddleware 类中进行检查后,如果我需要其他任何东西,有人可以帮忙吗?谢谢。

标签: authenticationjwtauthorizationbearer-tokenowin-middleware

解决方案


推荐阅读