gpt4 book ai didi

azure - 是否可以在 Windows Azure 网站中使用客户端证书

转载 作者:太空宇宙 更新时间:2023-11-03 12:51:18 25 4
gpt4 key购买 nike

我正在开发一个 Windows 服务应用程序,该应用程序将在客户 PC/服务器上运行并访问 Azure 网站中托管的 Web API 端点。它需要对用户进行身份验证,我不希望将凭据存储在客户的计算机上。因此,我已经使用客户端证书来对用户进行身份验证。我使用自签名证书对本地非 Azure 网站 IIS 实例进行此操作。但是,我无法让它在 Azure 网站中运行。

据我所知,有两个问题我没有找到太多相关文档:

  • 如何在网站实例的受信任根中安装我自己的 CA 证书?或者这只适用于已经受信任的 CA 证书?
  • 如何为此应用程序启用“接受客户端证书”?在 IIS 中,您可以在“SSL 设置”下执行此操作。文档表明修改 app.config 的 system.webServer/security/access 节点可以实现此目的,但显然您不能在网站中执行此操作。网站文档表明该节点已解锁以便在 web.config 中使用,但是添加该节点会导致错误“由于发生内部服务器错误,无法显示页面。”,即使自定义错误已关闭。

最佳答案

对于 Azure 网站与 Web 角色,客户端身份验证选项相当有限。网站不允许您以提升的权限运行程序,而这是进行 IIS 更改并将证书存储到受信任的根中所必需的。

有一种方法可以将您的网站配置为始终请求客户端证书(您无法像 IIS“接受”配置一样将其设为可选的好处)。此功能目前仅可通过 Azure 管理 REST API 使用,无法通过门户 UI 访问它。您可以找到更多信息here 。本质上,您将 clientCertEnabled 网站设置设置为 true。此选项的机制与传统的客户端身份验证不同,在传统的客户端身份验证中,服务器需要具有 CA 证书,客户端证书可使用该 CA 证书在其受信任的根中进行签名。服务器不对客户端证书运行任何验证,应用程序需要自行运行证书检查,该检查位于请求 header “X-ARR-ClientCert”中。 HttpRequestMessage 上的 GetClientCertificate() 扩展方法将自动解析它。

或者,您可以将 Web API 作为 Web 角色托管。这允许以提升的权限访问正在运行的启动任务,从而允许访问受信任的根目录并进行 IIS 配置,更多详细信息/示例 here 。可以将 CA 证书复制到应用程序文件夹或通过 Azure 门户上传到用户存储,以便可在启动任务中将其复制到受信任的根。可以通过 ServerManager 类以 NuGet 包形式提供的“Microsoft.Web.Administration”库来进行 IIS 更改。

关于azure - 是否可以在 Windows Azure 网站中使用客户端证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28572767/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com