Azure Function App:身份验证中断开发门户
Azure Function App: Authentication Breaks Development Portal
我已将 Azure Active Directory 身份验证添加到我的函数应用程序,但是一旦我将 "Action to take when request is not authenticated" 设置为 "Login with Azure Active Directory",函数应用程序的开发界面就会产生此消息:
错误:
我们无法访问你的函数应用。您的应用可能遇到暂时性问题或无法启动。您可以检查日志或在几分钟后重试。
会话 ID:23a5880ec94743f5a9d3ac705515b294
时间戳:2016-11-16T08:36:54.242Z
大概添加身份验证要求会以某种方式中断对函数应用程序的访问...尽管我能够在代码编辑器中进行更改并且它们确实生效,但我不再在日志面板中看到更新:例如,没有编译输出消息。
有人知道解决这个问题的方法吗?
到目前为止,我已经尝试将身份验证选项保留为 "Allow anonymous requests (no action)" 并使用以下代码:
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);
}
但是,这(正确地)不会重定向到身份验证提供程序...我更愿意让该应用程序为我处理所有这些麻烦事,但如果这样做意味着我看不到编译消息/ 记录消息,这使得很难看到发生了什么。
内森,
不幸的是,目前这是一个限制,我们正在此处跟踪它: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;
}
我们知道这并不理想,感谢您在我们努力改进的过程中耐心等待。
谢谢!
我已将 Azure Active Directory 身份验证添加到我的函数应用程序,但是一旦我将 "Action to take when request is not authenticated" 设置为 "Login with Azure Active Directory",函数应用程序的开发界面就会产生此消息:
错误: 我们无法访问你的函数应用。您的应用可能遇到暂时性问题或无法启动。您可以检查日志或在几分钟后重试。 会话 ID:23a5880ec94743f5a9d3ac705515b294 时间戳:2016-11-16T08:36:54.242Z
大概添加身份验证要求会以某种方式中断对函数应用程序的访问...尽管我能够在代码编辑器中进行更改并且它们确实生效,但我不再在日志面板中看到更新:例如,没有编译输出消息。
有人知道解决这个问题的方法吗?
到目前为止,我已经尝试将身份验证选项保留为 "Allow anonymous requests (no action)" 并使用以下代码:
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);
}
但是,这(正确地)不会重定向到身份验证提供程序...我更愿意让该应用程序为我处理所有这些麻烦事,但如果这样做意味着我看不到编译消息/ 记录消息,这使得很难看到发生了什么。
内森,
不幸的是,目前这是一个限制,我们正在此处跟踪它: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;
}
我们知道这并不理想,感谢您在我们努力改进的过程中耐心等待。
谢谢!