在.NET 4后端,我们有一个X.509证书,形式为X509Certificate2
或X509Certificate
。在Silverlight前端,我们希望显示该证书的详细信息。
在.NET中,我们可以简单地使用X509Certificate2UI
,这会打开标准的Windows证书详细信息对话框。 (更新:此对话框可以显示任何X509Certificate2
实例,无论它来自何处。)但该类在Silverlight中不可用。 (请注意,Silverlight中也不提供X509Certificate2
,但X509Certificate
是。)
我目前看到的唯一方法是将X509Certificate
的实例发送到前端(更新:我知道如何做到这一点),并在之上构建我们自己的Silverlight UI那个信息。
我的问题:是否有更简单的方法,或者是否已经可以从某个地方获得这样的用户界面?
答案 0 :(得分:2)
您可以在.Net中创建一个Com自动化对象,该对象调用X509Certificate2UI,运行您的Silverlight应用程序完全信任,并使用AutomationFactory.CreateObject来调用该对象。
注意:调用com对象的安全上下文可能与用户的安全上下文不同;您可能需要适当地设置证书的安全性。
答案 1 :(得分:0)
我记得X509Certificate2UI显示了Windows证书对话框,也可以通过“证书”中的微软管理控制台快照进行访问。
我猜它只能显示本地证书。由于Silverlight安全限制,我也猜测这个事件是不可能的(当作为webapplication运行时)。
但如果我错了,请纠正我。
答案 2 :(得分:0)
您从托管silverlight对象的asp.net应用程序中获取要显示的信息,并通过对象的InitParams传递要显示的内容,然后在App.xaml.cs文件中检索它们。我正在使用此方法来传递Web服务端点配置。您可以传递键/值的任意组合。
如果您不熟悉,请参阅此msdn链接以获取有关该方法的更多详细信息。
http://msdn.microsoft.com/en-us/library/cc189004%28v=vs.95%29.aspx
答案 3 :(得分:0)
由于缺乏积极的回应,我得出结论,最简单的选择是在X509Certificate
实例之上构建我们自己的UI。对于非常简单实现,请调用X509Certificate.ToString(true)
(或服务器端X509Certicate2
上的等效项)并向用户显示生成的文本。结果并不是真正用户友好,但至少所有信息都在那里。