我正在开发Windows服务应用程序,该应用程序将在客户PC /服务器上运行,并访问Azure网站中托管的Web API终结点。它需要对用户进行身份验证,我希望不要将凭据存储在客户的计算机上。因此,我使用了客户端证书来对用户进行身份验证。我针对具有自签名证书的本地非Azure网站IIS实例进行此操作。但是,我无法使其在Azure网站上运行。
据我所知,有两个问题我没有找到太多文档:
对于Azure网站与Web角色,客户端身份验证选项相当有限。网站不允许您以提升的权限运行程序,这是进行IIS更改并将证书存储到受信任的根目录中所必需的。
有一种方法可以将您的网站配置为始终(客户端无法像使用IIS“接受”配置那样将其设置为可选)来请求客户端证书。该功能当前仅通过Azure管理REST API可用,您无法通过门户网站UI对其进行访问。您可以在这里找到更多信息。本质上,您将clientCertEnabled网站设置为true。此选项的机制与传统的客户端身份验证不同,在传统的客户端身份验证中,服务器需要具有一个CA证书,用于在其受信任的根中签名该客户端证书。服务器不对客户端证书运行任何验证,应用程序需要自己运行证书检查,该检查位于请求标头“ X-ARR-ClientCert”中。HttpRequestMessage的GetClientCertificate()扩展方法将自动对其进行解析。
或者,您可以将Web API托管为Web角色。这样就可以访问具有增强权限的运行中启动任务,该权限允许访问受信任的root并进行IIS配置,更多详细信息/示例在此处。您可以将CA证书复制到app文件夹,也可以通过Azure门户上传到用户存储,以便在启动任务中可以将其复制到受信任的根。可以通过ServerManager类的NuGet包中的“ Microsoft.Web.Administration”库进行IIS更改。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句