Azure Functions v2和Google Auth

时间:2018-11-18 19:37:33

标签: azure azure-functions

我已经按照本文https://blogs.msdn.microsoft.com/stuartleeks/2018/02/19/azure-functions-and-app-service-authentication/

中所述的方式设置了Azure Functions 2

我可以使用Google令牌调用/.auth/login/google端点,并取回简单的auth令牌。

然后我可以调用/.auth/me端点并获取我的个人资料信息。

但是在我的代码中,Thread.CurrentPrincipal.Identity为null。我似乎找不到任何解决方案。我已验证我的请求已将x-zumo-auth头设置为从登录端点检索到的简单身份验证令牌。当然,该功能设置为匿名。

我希望我缺少一些简单的东西。感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

自2018年11月28日起,此功能现已预览。此功能仅对Functions 2.x运行时可用。目前,它也仅适用于.NET语言。

  

ClaimsPrincipal可作为请求上下文的一部分提供,例如   如以下示例所示:

using System.Net; 
using Microsoft.AspNetCore.Mvc; 
using System.Security.Claims;

public static IActionResult Run(HttpRequest req, ILogger log)
{
    ClaimsPrincipal identities = req.HttpContext.User;
    // ...
    return new OkResult();
}
     

或者,ClaimsPrincipal可以简单地作为   函数签名中的附加参数:

using System.Net;
using Microsoft.AspNetCore.Mvc;
using System.Security.Claims;
using Newtonsoft.Json.Linq;

public static void Run(JObject input, ClaimsPrincipal principal, ILogger log)
{
    // ...
    return;
}

参考:https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-http-webhook#working-with-client-identities

答案 1 :(得分:1)

找到了答案,但仍然令我感到惊讶的是

https://docs.microsoft.com/en-us/azure/app-service/app-service-authentication-overview

  

对于Azure Functions,对于.NET代码而言,ClaimsPrincipal.Current没有被合并,但是您仍然可以在请求标头中找到用户声明。

但是,我看到了无数的示例,人们看到了在Azure函数中引用它们的方式,好像应该将其水化一样。

我确实可以在标题中找到所需的声明,并且可以使用该声明,但是我感觉仍然缺少某些东西...