Azure功能的自定义授权

时间:2017-04-18 09:16:34

标签: azure azure-functions

我已经设置了我的Azure功能,我可以看到有一些选项可以支持Azure Active Directory进行身份验证,这看起来很棒。在之前的项目中,我使用.NET Core来托管WebAPI,然后使用授权策略(https://docs.microsoft.com/en-us/aspnet/core/security/authorization/)在我的API中提供基于细粒度声明的授权。我似乎无法在Azure函数中找到等效的机制。

有人能告诉我是否有办法在Azure功能中执行此类操作?

1 个答案:

答案 0 :(得分:4)

目前没有内置的细粒度授权支持。这将为Functions UserVoice提供一个很好的建议项目。

您可以随时将授权逻辑编写为功能的一部分,尽管内置功能肯定会更好。下面的代码片段(C#)在代码中执行身份验证检查并打印声明列表。您可以将其修改为需要特定声明:

using System.Net;
using System.Threading;
using System.Security.Claims;
 
public static void Run(HttpRequestMessage req, TraceWriter log)
{
    if (!Thread.CurrentPrincipal.Identity.IsAuthenticated)
    {
        log.Info("Not authenticated");
        return req.CreateResponse(HttpStatusCode.Unauthorized);
    }
    
    ClaimsIdentity identity = (Thread.CurrentPrincipal as ClaimsPrincipal)?.Identity as ClaimsIdentity;
    if (identity != null) 
       {
        foreach (var claim in identity.Claims)
        {
           log.Info($"{claim.Type} = {claim.Value}");
        }
    }

    // Rest of your function...

    return req.CreateResponse(HttpStatusCode.OK);
}

请注意,在非.NET语言中,您需要检查标题以获取声明信息。您还可以将其与对/.auth/me端点和提供者图端点的调用结合起来。