如何为经过身份验证的用户获取X509Certificate2对象?

时间:2016-06-24 04:53:27

标签: c# asp.net asp.net-mvc authentication asp.net-web-api

我有点超出我的深度所以如果我说/问/做一些愚蠢的事情,请耐心等待。

无论如何,我有一个dll,我需要用于我的项目。本质上,这个DLL是我需要使用的另一个服务的接口。我没有拥有dll所以我根本无法更改它的接口/代码,并且底层服务的接口是未知的(显然可以使用它的SDK dll)。我需要从这个sdk使用的功能之一要求我提供用户名和&密码为String格式,StringSecureString格式,或只提供X509Certificate2对象。

我的网站目前已配置为使用Windows身份验证。我想做的是能够在不询问用户密码的情况下调用此dll(因为他们已经必须输入密码才能访问该站点)。我假设在地狱中有一个滚雪球的机会我可以访问用户的密码本身作为StringSecureString,但看起来我可以构建x509证书对象做这样的事情:

var x509 = new X509Certificate2(Request.ClientCertificate.Certificate);

不幸的是,似乎Request.ClientCertificate.Certificate因任何原因总是空着。

还有其他方法可以访问此信息吗?如果我有足够的信息来冒充用户(通过HttpContext.Request.LogonUserIdentity.Impersonate()),那么我是否应该没有足够的信息来为这个用户构建一个X509Certificate2对象?如果没有,我需要做什么才能在请求中填充客户端证书?

非常感谢任何帮助。谢谢!

0 个答案:

没有答案