已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
深圳市达算科技有限公司 电话传真网址:使用WebDAV实现网盘 一.问题描述学生在学校实验室使用带电脑的仪器做实验一般会产生工作文档,学校为了仪器电脑安全着想,规定学生只能刻盘带走这些文档。这样做很明显会浪费,也不方便。于是是乎学校想架设这样一个网络硬盘服务器,学生做实验产生的文档上传给它,然后学生回到住处后下载这些文档,每个学生在服务器上都有一个私人存储空间,此空间用于存储他个人文档,只有他自己及其导师可以访问。服务器已存在一个用户模块,维护导师学生的关系,以及每个人的登录用户名和密码。二.开发环境:Win2003+IIS 6+WebDAV+.Net 4三.关于WebDAV1.什么是WebDAV?简而言之,WebDAV是一种HTTP1.1的扩展协议,可以在像操作本地文件夹一样操作服务器上的文件夹。2.WebDAV的优势: 一套自己定义的安全完善的身份验证机制。 穿墙 HTTPS传送数据 使用一个TCP连接传送所有文件 方便的客户端工具:和局域网中的文件共享一样简单使用。3.在IIS6上搭建WebDAV搭建WebDAV简单得很,只要如下步骤:a.添加WebDAV:进入“添加/删除Windows组件”页面,依次选择“Windows组件向导应用程序服务器详细信息Internet信息服务(IIS)详细信息万维网服务WebDAV发布”,按提示完成该组件的安装。b.启用WebDAV服务:依次点击“开始程序管理工具Internet信息服务(IIS)管理器”,弹出IIS管理控制台窗口。在左侧栏中选中“Web服务扩展”,在右侧栏中选中“WebDAV”选项后点击“允许”按钮就可启用“WebDAV服务扩展”。 c.发布共享资源:在Internet信息服务(IIS)管理器窗口中,展开“网站”选项,右键点击“默认网站”,在弹出的菜单中选择“新建虚拟目录”,在弹出“虚拟目录创建向导”对话框,按步骤完成。 d.测试访问:默认情况下发布的共享资源是匿名访问的,所以直接浏览器输入http:/服务器IP/共享资源名称,则显示共享的目录和文件。4.IIS6上的WebDAV验证客户端从上面的搭建我们知道默认情况下发布的资源是匿名访问的,这情况比较符合公共文件夹,不能满足我这个需求:“每个学生在服务器上都有一个私人存储空间,此空间用于存储他个人文档,只有他自己及其导师可以访问。”,所以考虑其它身份验证方法。WebDAV有以下身份验证方法: 匿名身份验证:允许任何人访问该目录。 基本身份验证:以明文形式通过连接发送密码。可以截取和解读明文密码。只有在通过安全套接字层加密密码时,才能打开基本身份验证。 摘要式身份验证:是将信息发布到通过 Internet 和防火墙访问的服务器上的极佳选择,因为密码在网络上是以 MD5 哈希值的形式来发送的。然而,密码以明文形式保存在 Active Directory 中。 高级摘要式身份验证:是摘要式身份验证的改进形式,因为除了以 MD5 哈希值形式通过网络发送密码外,密码还以 MD5 哈希值的形式(而不是明文形式)保存在 Active Directory 中。这使得高级摘要式身份验证成为将信息发布到通过 Internet 和防火墙访问的服务器的最佳选择。 集成 Windows 身份验证:是一种安全的验证形式,因为在通过网络发送用户名和密码之前,先将它们进行哈希计算。用户的浏览器通过与 Web 服务器进行密码交换(包括散列)来证明其知晓密码。 .NET Passport身份验证:使用 cookies 来验证用户凭据。比较选择: 匿名身份验证:没什么可说的了。 集成 Windows 身份验证:必须创建 Windows 用户帐户,并设置相应的 NTFS 权限。可行,为每个人创建Windows用户帐户,并且对每个人的目录设置对应学生及其导师的权限。 摘要式身份验证:针对 Windows 域服务器创建的,用户必须拥有存储在域控制器上的 Active Directory 中的有效 Windows 用户帐户。 高级摘要式身份验证:同上。 .NET Passport身份验证:没搞懂。四.实现思路 本来我是打算不想用“集成 Windows 身份验证”实现,而是连接数据库验证。但我找遍资料,发现IIS6本身已实现WebDAV协议,也就是说实现WebDAV协议的身份验证机制,也没提供通过连接数据库验证机制,除非自己写代码实现WebDAV协议。事实上Apache服务器的mod_dav模块支持数据库验证。无办法,现在的实现思路是:WebDAV使用集成 Windows 身份验证;为当添加用户时,为该用户创建一个Windows用户帐户和私人目录,并把用户添加到私人目录,如果用户是学生还要把其导师添加到其私人目录,分配权限。 这里涉及的技术问题有:1.创建目录,添加目录用户权限;2.创建Windows用户。五.实现我创建了一个测试项目,写下的代码是实现的核心代码。首先,创建以下窗体,目录位置就是WebDAV发布资源的位置: 以下是实现代码:view sourceprint?001using System; 002using System.Collections.Generic; 003using System.ComponentModel; 004using System.Data; 005using System.Drawing; 006using System.Linq; 007using System.Text; 008using System.Windows.Forms; 009using System.IO; 010using System.Diagnostics; 011using System.Security.AccessControl; 012using System.DirectoryServices; 013014namespace WebDisk 015 016public partial class Form1 : Form 017 018public Form1() 019 020InitializeComponent(); 021 022023private void button2_Click(object sender, EventArgs e) 024 025if (folderBrowserDialog1.ShowDialog() = System.Windows.Forms.DialogResult.OK) 026 027textBox3.Text = folderBrowserDialog1.SelectedPath; 028 029 030031private void button1_Click(object sender, EventArgs e) 032 033var user = textBox1.Text; 034var passwd = textBox2.Text; 035var userpath = textBox3.Text + + user; 036037try038 039mddir(userpath); 040CreateLocalUser(user, passwd, userpath); 041addpathqx(userpath, user, 完全控制); 042 043catch (Exception ex) 044 045MessageBox.Show(ex.Message, ex.Message, MessageBoxButtons.OK, MessageBoxIcon.Error); 046return; 047 048MessageBox.Show(OK); 049 050051/创建目录 052public bool mddir(string pathname) 053 054if (!Directory.Exists(pathname) 055 056Directory.CreateDirectory(pathname); 057return true; 058 059else060 return false; 061 062063/创建Windows帐户 064public static void CreateLocalUser(string username, string password, string description) 065 066DirectoryEntry AD = new DirectoryEntry(WinNT:/ + Environment.MachineName + ,computer); 067DirectoryEntry NewUser = AD.Children.Add(username, user); 068NewUser.Invoke(SetPassword, new object password ); 069NewUser.Invoke(Put, new object Description, description ); 070NewUser.CommitChanges(); 071 072073/给目录添加用户 074public void addpathqx(string pathname, string username, string qx) 075 076DirectoryInfo dirinfo = new DirectoryInfo(pathname); 077if (dirinfo.Attributes & FileAttributes.ReadOnly) != 0) 078 079dirinfo.Attributes = FileAttributes.Normal; 080 081/取得访问控制列表 082DirectorySecurity dirsecurity = dirinfo.GetAccessControl(); 083/ string strDomain = Dns.GetHostName(); 084switch (qx) 085 086case 完全控制: 087dirsecurity.AddAccessRule(new FileSystemAccessRule(username, FileSystemRights.FullControl, AccessControlType.Allow); 088break; 089case 只读: 090dirsecurity.AddAccessRule(new FileSystemAccessRule(username, FileSystemRights.Read, AccessControlType.Allow); 091break; 092case 写入: 093dirsecurity.AddAccessRule(new FileSystemAccessRule(username, FileSystemRights.Write, AccessControlType.Allow); 094break; 095default: 096dirsecurity.AddAccessRule(new FileSystemAccessRule(username, FileSystemRights.FullControl, AccessControlType.Deny); 097break; 098 099100dirinfo.SetAccessControl(dirsecurity); 101102/取消目录从父继承 103DirectorySecurity fs1 = System.IO.Directory.GetAccessControl(pathname); 104fs1.SetAccessRuleProtection(true, false); 105System.IO.Directory.SetAccessControl(pathname, fs1); 106107/AccessControlType.Allow允许访问受保护对象/Deny拒绝访问受保护对象 108/FullControl、Read 和 Write 完全控制,读,写 109/FileSystemRights.Write写入/Delete删除 /DeleteSubdirectoriesAndFiles删除文件夹和文件/ListDirectory读取 110/Modify读写删除-修改/只读打开文件和复制/ 111 112113 114115这里
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 美术系论文格式写作规范
- 电力企业物资管理存在的问题及改进措施
- MBA各专业毕业论文选题与题目参考
- 船舶静电的成因及防范对策的研究
- 初中议论文(合集15)
- 《名著导读:儒林外史》
- Akt信号转导通路总结
- 2024全新砌体结构课件
- pbl教学案例学习教案
- 《白毛女》教案设计
- MoldFlow实例分析报告-中英文对照课件
- 被巡察单位组织人事工作汇报集合5篇
- 商务英语常用单词
- 泸定桥的资料
- 建设工程施工合同(GF-2017-0201) 专用条款模板
- 现代设备管理课程教学大纲
- 工业硅项目可行性研究报告
- DBJ50∕T-330-2019 增强型水泥基泡沫保温隔声板建筑地面工程应用技术标准
- 《设计心理学》课件5-审美心理学
- 电子束曝光技术页PPT课件
- (完整word版)香蕉水MSDS
评论
0/150
提交评论