请选择 进入手机版 | 继续访问电脑版

因斯福论坛

搜索
查看: 8406|回复: 0

配置浏览器以使用WPF XBAP网络应用程序

[复制链接]
发表于 2014-9-2 21:01:04 | 显示全部楼层 |阅读模式
写在前面
本文涉及对计算机安全设置的修改,不当操作可能会对计算机带来安全隐患,请操作之前认真了解相关内容,并且在您确定目标应用程序是安全的前提下进行操作。
本文中的一些知识来自其他作者分享的文章,列出如下:
Hanselman:《Firefox, WPF andXBAP》http://www.hanselman.com/blog/FirefoxWPFAndXBAP.aspx
Ouch:《使用IE9、FireFox与Chrome浏览WPF BrowserApplication(.XBAP)的方式》http://www.dotblogs.com.tw/ouch1978/archive/2011/03/16/wpf-view-xbap-in-browsers.aspx
冰戈:《WPF的XBAP文件也能在Firefox中查看》http://www.cnblogs.com/Hedonister/archive/2006/11/24/571235.html

WPF XBAP网络应用程序
WPF应用程序是运行在微软.NET Framework上的应用程序,它可以被部署到网络浏览器上运行,文件以打包形式发布并由客户端计算机的WPF主机加载程序进行加载和运行,即XAML浏览器应用程序(XBAP)。
为能够运行发布在网络上的WPF应用程序,必须安装相应版本的.NET Framework。

想要了解更多关于WPF浏览器应用程序的信息,可参考:
关于WPF:http://zh.wikipedia.org/wiki/Windows_Presentation_Foundation
关于XBAP:http://zh.wikipedia.org/wiki/XAML_Browser_Applicationhttp://www.xbap.org
关于.NET Framework:http://www.microsoft.com/zh-cn/download/details.aspx?id=17718
其他参考页面:
http://msdn.microsoft.com/zh-cn/library/cc716877(v=vs.110).aspx
http://social.msdn.microsoft.com/Forums/zh-CN/747c6b78-a821-4498-a37f-1b79197de803/xbap-plugin-for-firefox-in-windows-7?forum=wpf
http://stackoverflow.com/questions/17443883/firefox-v22-0-wont-download-and-display-xbap-anymore

正常运行的WPF网络程序加载时如图所示:
                              
app loader.jpg
浏览器对WPF XBAP程序进行加载,需要调用相应的WPF插件并进行安全设置。对于微软自家产品,IE对XBAP程序的支持最好,因此推荐使用IE浏览器运行此程序;火狐浏览器和Chrome浏览器据说也可以运行XBAP,但笔者只尝试使用了火狐浏览器,并且没有成功。下面首先介绍站点信任和权限内容,随后分别针对IE和火狐(Firefox)浏览器的设置进行简要说明。

信任权限
在计算机程序在运行时,操作系统会为其分配一定的权限,使程序在有限的资源(内存、本地硬盘、注册表等)范围内进行操作,以防止意外或恶意代码破坏系统或造成其他危害。
运行WPF XBAP程序和本地程序相似,由于可访问计算机资源,往往需要较高的权限级别,因此必须“信任”其来源后,程序才能正常运行,否则可能发生.xbap文件不加载(WPF宿主不会启动,而是由浏览器对.xbap进行处理,提示打开或保存),或加载程序运行时发生权限错误。

savebutnotload.PNG
nottrusted.PNG

为使WPF XBAP程序获得“完全信任权限”,有两种情况:

能够获得证书的情况
站点证书是站点可信性的保证,一般来说,证书由互联网上的权威证书签发机构颁发,使用权威机构自身的证书(根证书)对站点证书进行签名加密。
信任一个证书,意味着对持有该证书和该证书签名的其他数字证书的安全网站或程序的信任,也就意味着允许这些网站对信息的传输,或代码在计算机上的运行。
对于XBAP程序,其部署信息(ClickOnce清单)可能被一个包含私钥的个人信息交换文件(.pfx)签名,而这样的一个私钥往往有与之对应的公钥,且包含在证书文件(.cer)里。
所以在浏览器中添加对这个证书的信任后,运行对应的XBAP程序时就具有完全信任权限了。
对于一个在CA认证机构注册的有效证书,一般是不需要手动添加信任的;但若证书或其根证书尚未得到信任,则要手动添加证书(或根证书)到计算机。
在Windows中添加一个证书,打开Internet选项,转到“内容”选项卡,在“证书”栏中点击“证书”,弹开证书对话框。根据需要,分别在“中级证书颁发机构”、“受信任的根证书颁发机构”、“受信任的发布者”3个分页中导入证书。点击“导入”按钮启动证书导入向导,按照向导提示进行操作。
cermgr.PNG


一般网站
若XBAP程序没有进行ClickOnce清单签名、或无法获取相应证书文件,则要运行程序,就必须信任其来源(站点地址)。
操作系统依据访问系统资源的级别和范围,将操作者来源分为几个区域。在Internet选项的“安全”选项卡中,可以看到这些可配置的区域。
trustsite.PNG

要添加对网站的信任,点击“受信任的站点”区域后,点击“站点”按钮,弹出对话框。
addtrust.PNG

在“将该网站添加到区域”文本框中输入站点地址,并点击“添加”。若站点不是SSL站点,则注意不要勾选下方的“对该区域中的所有站点要求服务器验证(https”选项。
虽然添加了站点信任,首次运行XBAP程序时,系统仍会发出安全警告,询问是否确定要运行。
warning.PNG

若相信程序是安全的,则点击“运行”,程序开始执行,且之后的执行将不再提示安全警告。

IE浏览器设置
IE浏览器提供原生技术支持,因此无需安装额外插件,但要运行WPF XBAP程序,必须设置浏览器安全配置并为其赋予合适的权限。
若浏览器禁用了XAML应用程序,程序加载后将提示“此应用程序类型已禁用”的错误:
fobid.PNG

启用XBAP应用程序,打开IE浏览器的Internet选项,进入到“安全”选项卡,在安全区域中选择“Internet”,之后点击“该区域的安全级别”框中的“自定义级别”。在弹开的“安全设置-Internet区域”对话框中,设置“XAML浏览器应用程序”为“启用”。
    ie sec.PNG ie sec-1.PNG
注意,若“受信任的站点”域安全设置中的相应项被禁用,则也需要进行设置。

Firefox浏览器设置
网络上关于使用Firefox运行XBAP的帖子时间都比较久了,但介绍的方法都基于微软提供的解决方案:
在Firefox中运行WPF XBAP程序需要安装插件,但该插件无法从网络单独获取,它被集成到.NET Framework 3.5 SP1中。要获取插件:可在安装Firefox后安装.NET Framework 3.5 SP1,插件将自动安装到浏览器中;若安装顺序相反,则可选择重装.NET Framework 3.5 SP1,但更聪明的方法是在C:\Windows\Microsoft.NET\Framework\v3.5\Windows PresentationFoundation\NPWPF.dll位置复制到Firefox的插件文件夹中。
解决方法没有提到证书的问题,这是需要特殊留意的,因为火狐浏览器拥有自己的证书存储区(独立于IE,可在火狐浏览器的设置选项中找到,导入证书的方法和IE类似)。
很遗憾地,根据网上一些资料显示,在Firefox 22版本之后该插件已无法正常工作(笔者动笔时火狐浏览器版本号已是31.0),较古老的火狐浏览器可能会工作,但笔者没有测试(这种测试几乎是无意义的,对于不支持HTML5等网络新技术的浏览器,其使用者已经微乎其微)。
一个变通方法是在Firefox中安装IE Tab插件以集成IE内核,并以IE内核方式浏览XBAP程序页面,此时设置方法与在IE中相同。
关于Firefox WPF加载项:http://msdn.microsoft.com/zh-cn/library/cc716877%28v=vs.100%29.aspx




相关帖子

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|因斯福论坛  

GMT+8, 2021-5-16 07:39

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表