【问题标题】:C# Authorization filters for Azure Services?Azure 服务的 C# 授权筛选器?
【发布时间】:2021-08-05 01:18:53
【问题描述】:

问题:是否有针对 ASP.NET Web API 的过滤器可以过滤请求以仅允许来自其他 azure 服务的调用?

存在这样的授权过滤器,它可以读取策略,但如果说该服务必须调用另一个 azure 服务以获取一些附加信息,我希望能够将该受保护端点专门用于另一个与之交互的 Azure 服务。最好的方法是什么?

[HttpGet("HQClient/{clientID}")]
[Authorize(Policy = "read:clients")]
public async Task<ActionResult<HQClient>> GetHQClientByID(Guid clientID)
{
     // Implementation
}

【问题讨论】:

    标签: c# asp.net azure authorization


    【解决方案1】:

    编写一个中间件,检查请求是否来自 azure 服务,并从启动类(asp.net 核心)或 MVCApplication 类方法(asp.net MVC)中的“配置”方法调用它

    public void Configure(IApplicationBuilder app)
    {
        app.Use(async (context, next) =>
        {
            //write the code that check for azure services then..
        
            //this calls the next delegate/middleware in the pipeline
            await next();
        });
    
    }
    

    您还可以编写自定义过滤器并在那里执行逻辑

    //sample filter
    class AuthorizeOnlyAzureServices : ActionFilterAttribute
    {
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            //check for azure services
        }
    }
    
    //sample filter usage
    
    public class HomeController : Controller
    {
        [AuthorizeOnlyAzureServices]
        public ActionResult Index()
        {
            return View();
        }
    }
    

    你也可以类似地使用属性

    //sample attribute
    public class AuthorizeOnlyAzureServicesAttribute : System.Attribute  
    {  
        public AuthorizeOnlyAzureServicesAttribute(HttpRequest request)  
        {  
            //check that the request is from azure service  
        }  
    }
    
    //sample usage
    [AuthorizeOnlyAzureServices(System.Web.HttpContext.Current.Request)]
    public ActionResult Index()
    {
        //code goes here
        return View();
    }
    

    【讨论】:

    • 绝妙的答案!感谢您的帮助和解释!
    猜你喜欢
    • 2016-12-17
    • 1970-01-01
    • 1970-01-01
    • 2011-08-09
    • 2016-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多