我有一个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);
}
我希望能够使用属性保护每个方法。这很容易做到吗?