在过去的24小时里,我一直在阅读有关如何创建Azure功能的所有内容,并已成功将MVC WebApi转换为具有多个功能的新功能应用程序.我的问题是我没有找到任何关于如何使用它们进行最基本的身份验证的明确文档或教程.
我的情景很简单.在我的AAD中配置用户,然后授予这些用户访问特定功能的权限.网站上的用户将点击UI元素,这些元素又会触发调用我的Azure功能的Javascript.在函数中,我需要能够以某种方式验证它们的身份,因为我将把它传递给与SQL实例交互的其他函数.
有人可以指点我的文档,文章,一个例子,一些东西,这表明我如何实现这一目标?
为了记录,我在门户网站上找到了我的功能应用程序的"身份验证"配置,并选择了AAD作为我的身份验证提供程序.我已经添加了我的功能应用程序并配置了一些用户.然后我编写了以下测试函数:
[FunctionName("GetThings")]
public static HttpResponseMessage Run([HttpTrigger(AuthorizationLevel.User, "GET", Route = null)]HttpRequestMessage req, TraceWriter log)
{
log.Info("Getting all the things");
var identity = ClaimsPrincipal.Current.Identity;
return identity.IsAuthenticated ?
req.CreateResponse(HttpStatusCode.Unauthorized, "Not authenticated!") :
req.CreateResponse(HttpStatusCode.OK, $"Hi {identity.Name}!");
}
Run Code Online (Sandbox Code Playgroud)
目前,当我尝试直接点击端点时,我会被重定向到登录页面......所以我猜这部分是有效的.我如何生成/检索用户令牌,将请求发送到函数或在服务器上处理它们并不清楚.
救命?
我们有一个基于Asp.Net核心的Web应用程序.它不包含任何配置的身份验证中间件.
我们托管Azure App Service并使用身份验证/授权选项(EasyAuth)对Azure AD进行身份验证.
身份验证效果很好 - 我们插入了必需的标头,我们可以在/.auth/me上看到经过身份验证的身份.但是HttpContext.User属性不会被填充.
这是Asp.Net核心的兼容性问题吗?或者我做错了什么?
authentication azure-web-sites azure-active-directory asp.net-core
我想编写一些ASP .NET Core中间件来将Azure Apps EasyAuth HTTP标头转换为声明.我找到了两种方法:
解析EasyAuth在HTTP标头中提供的令牌.这似乎不是一个通用的解决方案,因为我必须编写代码来解析每个身份提供者的令牌.
向/.auth/me发出服务器端请求.这会返回一些我想要转换为声明的JSON,但我不确定是否必须手动执行此操作或者是否支持框架.
#2是最好的方法,是否有任何框架支持?