JWT中来自Azure Active Directory的角色对Azure HTTP触发器功能的授权

时间:2019-12-27 16:56:43

标签: c# azure authentication .net-core azure-functions

我有一个Azure HTTP触发功能,使用Azure Active Directory进行身份验证。这很好用,但是我希望我可以使用一个方法属性来保护每个单独的函数,该方法属性可以验证经过身份验证的主体的角色。我发现Authorize属性正是​​我想要的。

例如:

[Authorize(Roles = "myCustomRole")]
[FunctionName("myTriggerFunction")]
public static async Task<IActionResult> Run(
       [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = null)] HttpRequest req,
        ClaimsPrincipal claimsPrincipal,
        ILogger log)
{
    log.LogInformation("Welcome " + claimsPrincipal.Identity.Name);
}

我可以使用以下内容来挖掘ClaimsPrincipal对象,并最终获得具有值的角色声明(以及JWT的所有其他内容):

foreach (Claim claim in claimsPrincipal.Claims)
{
    log.logInformation("CLAIM TYPE: " + claim.Type + "; CLAIM VALUE: " + claim.Value);
}

我希望能够使用属性保护每个方法。这很容易做到吗?

0 个答案:

没有答案