【问题标题】:Azure functions Authentication - possible without AD?Azure 功能身份验证 - 可以在没有 AD 的情况下进行吗?
【发布时间】:2020-08-12 11:35:39
【问题描述】:

我正在努力保护一些 Azure Functions 端点。我尝试使用证书,但遇到了一些问题

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

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

【问题讨论】:

  • 你有没有考虑在你的函数前面添加 Azure API 管理(在消费层)?
  • 不,但我会阅读更多内容,看看会发生什么。谢谢你的想法。
  • 我认为这将是一个更清洁的解决方案,因为它会将样板代码(例如 auth)保留在您的函数之外

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


【解决方案1】:

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

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

首先,您的应用服务计划必须处于基本、标准、高级或独立层。

其次,启用客户端证书:

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

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

有关如何为 Azure 应用服务配置 TLS 相互身份验证的更多详细信息,请参阅此article

【讨论】:

  • 好的,基本上我需要在 App 服务级别设置证书 - 然后我可以通过该标头访问它?有趣的。我将在今天晚些时候尝试一下。非常感谢!
  • 好的。如果它对您有帮助,请接受它作为答案。单击复选框并将其变为绿色。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-30
  • 2014-04-29
  • 1970-01-01
  • 2020-01-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多