寻找如何解决这个问题的建议:
我有一个使用JWT身份验证和用户角色授权保护的asp.net core 2 webapi项目。
我在我的asp.net webapi中添加了第三方中间件,公开了指标端点。
我可以在指标中间件中设置端点路由和端口,但没有授权选项。
我想保护这些端点与我自己的API端点相同,因此只有某个角色可以访问它们,但不知道如何解决这个问题,也许某些其他自定义中间件会在链路下方找到这些路由并检查对于JWT?
答案 0 :(得分:1)
您有正确的想法,下面是一个如何通过端点保护它的示例。
public class MyAuthorizeMiddleware
{
private readonly RequestDelegate _next;
public MyAuthorizeMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task Invoke(HttpContext context)
{
if (context.Request.Path.StartsWithSegments("/endpoint")
&& !context.User.Identity.IsAuthenticated)
{
context.Response.StatusCode = StatusCodes.Status401Unauthorized;
return;
}
await _next.Invoke(context);
}
}