Azure功能应用程序:身份验证中断开发门户

时间:2016-11-16 08:45:49

标签: azure azure-functions

我已将Azure Active Directory身份验证添加到我的功能应用程序中,但只要我将“请求未经过身份验证时执行的操作”设置为“使用Azure Active Directory登录”,功能应用程序的开发界面就会生成此消息:

错误: 我们无法访问您的功能应用。您的应用可能有临时问题或可能无法启动。您可以查看日志或在几分钟后重试。 会议ID:23a5880ec94743f5a9d3ac705515b294 时间戳:2016-11-16T08:36:54.242Z

大概添加身份验证要求会以某种方式中断对功能应用程序的访问...虽然我能够在代码编辑器中进行更改,但它们确实生效了,我不再在日志面板中看到更新:没有编译例如,输出消息。

有没有人知道这方面的解决方法?

到目前为止,我已尝试将auth选项保留为“允许匿名请求(无操作)”并使用以下代码:

public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log)
{
    log.Info("C# HTTP trigger function processed a request.");

    var user = "Anonymous";
    var claimsPrincipal = Thread.CurrentPrincipal as ClaimsPrincipal;
    if (claimsPrincipal != null && claimsPrincipal.Identity.IsAuthenticated)
    {
        user = claimsPrincipal.Identity.Name;
        log.Info($"Hello {user}");    
    }       

    return req.CreateResponse(HttpStatusCode.OK, "Hello " + user);        
}

然而,这(正确)不会重定向到身份验证提供程序...我更愿意让应用程序为我照顾所有gunge,但如果这样做意味着我看不到编译消息/日志消息,很难看出发生了什么。

1 个答案:

答案 0 :(得分:4)

森,

不幸的是,目前这是一个限制,我们会在此处进行跟踪:https://github.com/projectkudu/AzureFunctionsPortal/issues/794

您的方法,允许匿名和验证功能是我们目前的建议。要扩展您的解决方法,您可以添加以下代码以在检测到匿名用户时启动登录重定向(以下代码假定您使用的是AAD)。

else
{
    log.Info("Received an anonymous request! Redirecting...");
    var res = req.CreateResponse(HttpStatusCode.Redirect);
    res.Headers.Location = new Uri(req.RequestUri, $"/.auth/login/aad?post_login_redirect_uri={req.RequestUri.AbsolutePath}&token_mode=session");
    return res;
}

我们理解这并非理想,并且在我们努力改善这一点时感谢您的耐心。

谢谢!