Azure函数身份验证-是否可以在没有AD的情况下进行?

时间:2020-08-12 11:35:39

标签: c# azure azure-functions azure-authentication

我正在保护一些Azure Functions终结点的安全。我尝试使用证书,但是碰到了几堵墙

  1. 在FunctionsStartup中(从中得出我的启动),我找不到连接AddAuth和Auth方法/类的方法。 (我尝试搜索有关此主题的更多信息,但所有答案都针对Web API其他类型的身份验证)
  2. 我尝试至少检查是否存在证书,但这也不起作用。我试图从request-context-connection-ClientCertificate获取证书或从标头中读取证书。不在本地或已部署版本上工作。证书始终为空。

我看到有一些方法可以使用AD(也可以使用Facebook,google等)保护它,但是首先我很好奇是否有人成功实现了另一种Auth方法,更像是经典的Web api方法(JWT)令牌,证书或其他类似的东西

1 个答案:

答案 0 :(得分:1)

Access restrictions使您可以定义优先级排序的允许/拒绝列表,以控制对应用程序的网络访问。该列表可以包括IP addresses或Azure Virtual Network subnets。如果有一个或多个条目,则列表末尾会存在一个隐式“拒绝全部”。

此外,当客户端请求通过TLS / SSL时,您可以请求客户端证书并验证证书。这种机制称为TLS相互认证或客户端证书认证。

首先,您的App Service计划必须位于“基本”,“标准”,“高级”或“隔离”层。

第二,启用客户端证书:

az webapp update --set clientCertEnabled=true --name <app_name> --resource-group <group_name>

最后,访问客户端证书。 App Service将客户端证书注入X-ARR-ClientCert请求标头。您的应用代码负责验证客户端证书。

有关如何为Azure App Service配置TLS相互身份验证的详细信息,请参阅此article