Azure Function App:身份验证中断开发门户

Posted

技术标签:

【中文标题】Azure Function App:身份验证中断开发门户【英文标题】:Azure Function App: Authentication Breaks Development Portal 【发布时间】:2017-03-30 09:06:10 【问题描述】:

我已将 Azure Active Directory 身份验证添加到我的函数应用,但只要我将“请求未通过身份验证时采取的操作”设置为“使用 Azure Active Directory 登录”,函数应用的开发界面就会产生此留言:

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

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

有人知道解决方法吗?

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

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);        

但是,这(正确地)不会重定向到身份验证提供程序...我希望应用程序为我处理所有这些问题,但如果这样做意味着我看不到编译消息/日志消息,这让人很难看到发生了什么。

【问题讨论】:

【参考方案1】:

内森,

不幸的是,目前这是一个限制,我们正在这里跟踪它: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;

我们知道这并不理想,感谢您在我们努力改进这一点时的耐心等待。

谢谢!

【讨论】:

我有重定向工作,但被重定向到这个网址:myfunction.azurewebsites.net/.auth/login/aad/callback,你是怎么解决这个问题的?

以上是关于Azure Function App:身份验证中断开发门户的主要内容,如果未能解决你的问题,请参考以下文章