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:身份验证中断开发门户的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 Azure AD B2C 使用身份验证功能在 Azure Web App 上添加身份验证?

移动设备上的 Azure App Service 身份验证问题

Azure Function App Binding ClaimsPrincial 不设置来自 JWT 的声明

资源所有者密码凭据令牌在 Azure Function App 上导致 401

实现 JWT 身份验证 Azure Function 3.x - 使用 JWT 令牌获取当前用户的声明

Azure Functions App with APIM 使用托管标识 - 身份验证和授权