只允许公共访问Azure应用程序的1个终结点

时间:2019-04-30 11:37:04

标签: azure azure-active-directory azure-functions

我正在构建一个小型Azure无服务器应用程序,该应用程序具有3个不同的功能,这些功能由3个不同的HTTP事件触发。我为每个功能将“授权级别”设置为“匿名”。然后,我设置了身份验证(在应用程序级别)以链接到我的Azure Active Directory。尽管我花了一些时间弄清楚那部分,但最终它看起来像一个魅力。问题是,现在我需要为每个函数传递承载令牌,而我需要其中一个函数可以公开访问。 有什么方法不需要我将一个功能拆分为单独的Azure应用程序吗?

2 个答案:

答案 0 :(得分:0)

不确定如何实现应用程序级别的安全性,但是在常规的OWIN或CORE应用程序中,如果令牌处理程序未在Authorization标头(没有标头)中找到有效令牌,则会将未经身份验证的请求传递给控制器​​方法或令牌无效)。然后由方法决定是处理请求还是拒绝未授权。您可以相应地更改令牌验证程序吗? (实际上,如果您的API可以接收由不同发行者(AAD,B2C和Ping发行)发行的令牌,则您可以配置多个令牌处理程序,每个处理程序都会尝试

答案 1 :(得分:0)

我认为URL授权规则应该在这里有所帮助。

对于您的方案,启用身份验证/授权并允许门户中的匿名访问。接下来,您将要在网站的根目录中创建一个authorization.json文件,并定义两条路由:

  • 在根目录禁用匿名访问。
  • 启用匿名功能URL的匿名访问。

authorization.json

{
  "routes": [{
      "path_prefix": "/",
      "policies": { "unauthenticated_action": "RedirectToLoginPage" }
    },{
      "path_prefix": "/api/HttpTrigger1",
      "policies": { "unauthenticated_action": "AllowAnonymous" }
    }]
}

enter image description here enter image description here

注意::在启用身份验证/授权并在wwwroot文件夹中添加authorization.json文件后,请确保停止/启动Function App。