authentication - 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 内部,我做了以下检查
- context.Request.Path.Value.StartsWith("/newendpoint");
- 从请求头中获取授权不记名令牌
- 使用 JwtSecurityTokenHandler.ValidateToken() 验证受众、颁发者、颁发者签名密钥
- 验证 JWT 中包含的 appId 是否在 App Id 的允许列表中
使用 Fiddler 的请求进行调试后,我看到所有上述检查都通过了,但响应仍然是 401 Unauthorized 并显示一条消息
{"message":"Authorization has been denied for this request."}
在我的 JwtS2SAuthMiddleware 类中进行检查后,如果我需要其他任何东西,有人可以帮忙吗?谢谢。
解决方案
推荐阅读
- javascript - 当我试图从 php 文件中检索一个值到 javascript
- python - 在 Python 中展平树
- angularjs - 来自数据库AngularJS Jasmine的对象长度单元测试
- javascript - 模态工作错误
- ios - 代表返回 nil 并且没有被调用
- node.js - Firebase Stripe(错误)承诺必须妥善处理
- netlogo - 如何在 netlogo 的多个程序中使用 to-report
- c# - 使用 DotRas 创建的 IKEv2-VPN 中的远程 ID
- reactjs - 将路由分组为内部组件的 React Router Switch 语句不会转到 Not Found 路由
- qt - 如何在 ipad 中运行 QT Designer Studio 应用程序