我正在构建一个小型Azure无服务器应用程序,该应用程序具有3个不同的功能,这些功能由3个不同的HTTP事件触发。我为每个功能将“授权级别”设置为“匿名”。然后,我设置了身份验证(在应用程序级别)以链接到我的Azure Active Directory。尽管我花了一些时间弄清楚那部分,但最终它看起来像一个魅力。问题是,现在我需要为每个函数传递承载令牌,而我需要其中一个函数可以公开访问。 有什么方法不需要我将一个功能拆分为单独的Azure应用程序吗?
答案 0 :(得分:0)
不确定如何实现应用程序级别的安全性,但是在常规的OWIN或CORE应用程序中,如果令牌处理程序未在Authorization标头(没有标头)中找到有效令牌,则会将未经身份验证的请求传递给控制器方法或令牌无效)。然后由方法决定是处理请求还是拒绝未授权。您可以相应地更改令牌验证程序吗? (实际上,如果您的API可以接收由不同发行者(AAD,B2C和Ping发行)发行的令牌,则您可以配置多个令牌处理程序,每个处理程序都会尝试
答案 1 :(得分:0)
我认为URL授权规则应该在这里有所帮助。
对于您的方案,启用身份验证/授权并允许门户中的匿名访问。接下来,您将要在网站的根目录中创建一个authorization.json
文件,并定义两条路由:
authorization.json
{
"routes": [{
"path_prefix": "/",
"policies": { "unauthenticated_action": "RedirectToLoginPage" }
},{
"path_prefix": "/api/HttpTrigger1",
"policies": { "unauthenticated_action": "AllowAnonymous" }
}]
}
注意::在启用身份验证/授权并在wwwroot文件夹中添加authorization.json文件后,请确保停止/启动Function App。