Asp.net核心WEB API安全第三方中间件路由?

时间:2018-05-02 15:55:13

标签: c# asp.net-core asp.net-core-webapi

寻找如何解决这个问题的建议:

我有一个使用JWT身份验证和用户角色授权保护的asp.net core 2 webapi项目。

我在我的asp.net webapi中添加了第三方中间件,公开了指标端点。

我可以在指标中间件中设置端点路由和端口,但没有授权选项。

我想保护这些端点与我自己的API端点相同,因此只有某个角色可以访问它们,但不知道如何解决这个问题,也许某些其他自定义中间件会在链路下方找到这些路由并检查对于JWT?

1 个答案:

答案 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);
    }
}