|
在.NET中建立Web service安全措施(第一部分)本文关键字 理论探讨 广告 在.NET中建立Web service安全措施(第一部分) 到目前为止安全性是开发和部署Web service的最基本的内容之一。有很多的论文、文档以及示例说明怎样保护Web service,但是这些信息中的绝大多数所涉及到的都是些有关理论和实践的高级、抽象的定义,很少人提及其具体实现。 在这个三部系列的第一部分,我们将通过一个使用定制的SOAP HEADER的例子来讨论一些有关具体编程的Web service安全性。示例Web service将使用cookie去获取用户的安全环境(context),从而在方法间维护状态,Web service消费者将使用一个Windows应用程序来实现。 一个可重用安全模式 多数情况下,用户、角色、商业规则以及授权是已经实现了的,你只要简单地提取这些信息。Web service需要实现一个模式以确定请求客户的信任凭证。理论上在Web service中可以传递用户ID和密码给每个方法,但是一个更面向对象的方法是创建一个继承System.Web.Services.Protocols.SoapHeader的类。这个类将成为我们的SOAP Header,它将被传递到Web service,其中包含我们用来验证用户的所有信息。 服务器实现 列表1 Public Class SecurityContext Public userId As String <WebService(Namespace:="http://tempuri.org/")> _ Public secureCtx As SecurityContext <WebMethod()> Public Function HelloWorld() As String Else End Function <WebMethod(), SoapHeader("secureCtx", Required:=True,
_ If secureCtx Is Nothing Then Return False If secureCtx.userId = "John" And secureCtx.password = "Doe"
_ End Function End Class LoginUser()函数接受我们的SecureContext Soap Header类的一个实例,它像使用其他对象一样使用这个传入的对象。注意对象名字在引号中被参考的,并且与secureCtx类属性匹配。 然后这个方法就通过检查usrId和secureCtx对象中的密码变量来完成验证。如果LoginUser()方法确认用户是合法的,它就产生一个验证单据,并将其插入响应的cookie集合中。 HelloWorld()方法是一个一旦客户端得到验证以后你可以在Web service中调用的一个很普通的方法。这个模式需要较少的代码,因为在一个session中只需进行一次授权,然后就可以简单地将Web service实现逻辑包装起来。 If Context.User.Identity.IsAuthenticated = True Then...
现在Web service已经实现并且可以运行,我们需要编写Web service消费者。这个模式的不足之处是客户端必须启用cookie以维护安全单据。典型的客户端一般都是一个Web浏览器,明显地它提供内建cookie处理功能,如果用户没有禁用它。但是如果客户端是一个桌面Windows应用程序,那么如何去访问Web service呢?列表2的示例代码给出了如何从Windows应用程序中消费Web service。 列表2 Public Class Form1 ' Generate a cookie container object #Region " Windows Form Designer generated code " 'This call is required by the Windows Form
Designer. 'Add any initialization after the InitializeComponent()
call Private Sub btnLogin_Click(ByVal sender As System.Object,
_ secureCtx.userId = "John" wsobj.SecurityContextValue = secureCtx Me.lblReturnMsg.Text = "LoginUser returned: " +
_ Private Sub btnHelloWorld_Click(ByVal sender As System.Object,
_ Private WSObj As
New 要从其它的ASP.NET应用中消费Web service,除了手工的Cookie存储代码外,其它部分的代码几乎完全一样。从一个桌面应用程序消费Web service提供了一个强大的功能、灵活性以及可扩展性。 你安全吗? 当然并不是所有的应用程序都需要上面的安全模式,尤其是在你的Web service可以自由使用的时候。但是其它的应用程序就需要严格安全尺度,他们的卖点就是其安全级别。 如果您希望与本文章的作者或其所在机构,进一步交流,请联系:畅享网 姜小姐 jill.jiang@amteam.org | 021-51096826-112 | 在线联系 |
前沿论丛2009年第三期——知识管理..国内中小企业普遍存在管理基础薄弱、规范化程度低、信息化基础差等方面的问题,而知识管理的实施难度甚至要高于ERP的实施,因为简单的从上而下压迫式的推行只能做到知识…… |
|
|