通行证: 用户 密码 域名空间  下载中心 社区论坛 信息公告 MY小屋
联系我们
设为首页
加入收藏

 

QQ,ASP,PHP,JSP,XML,SQL,.Net,编程 程序 网页图象 建站经验 私服
首页 | 新闻资讯 | 编程开发 | 网页设计 | 图形图象 | 网络媒体 | 网站模板 | 数 据 库 | 投稿
论坛 | 操作系统 | 系统优化 | 网络安全 | 黑客技术 | 硬件学堂 | 硬件报价 | 服 务 器 | 地图
专题 | 应用软件 | 聊天通讯 | Q Q 专栏 | 建站经验 | 在线工具 | 站长Club | 注 册 表 | 旧版
社会 | 游戏娱乐 | 设计欣赏 | 疑难解答 | 社区论坛 | 韩国素材 | 素材图库 | 广告服务 | 服务
当前位置:首页>>编程开发>>NET专区>>正文 新版上线![旧版]
注:打开慢时请稍等

安全性和 WebService

http://www.iyit.net  日期:2006-8-28 14:54:38  来源:  点击:
参加讨论Windows 身份验证和授权

使用对 .aspx 页所采用的方法,通过 Windows 身份验证来保证 XML Web 服务的安全性(详见基于 Windows 的身份验证一节)。若需要身份验证,请在 IIS 管理控制台中为您的应用程序启用“集成的 Windows 身份验证”,并禁用“匿名访问”。若要允许或拒绝特定的用户访问服务,请使用 ASP.NET 配置系统,或在服务文件本身中设置 ACL,如下例所示:

<configuration>

  <system.web>
    <authentication mode="Windows"/>
  </system.web>

  <location path="secureservice.asmx">

    <system.web>
      <authorization>
        <allow users="Administrator"/>
        <allow users="DOMAIN\Bradley"/>
        <deny roles="BUILTIN\Power Users"/>
      </authorization>
    </system.web>

  </location>

</configuration>

这非常适合已知 XML Web 服务的客户端将作为某个特定 Windows 用户运行的情况。更有趣的情况是客户端作为一个用户运行,但却代表另一个用户。请考虑一个 ASP.NET 页,它访问的安全 XML Web 服务不模拟访问它的客户端。对于这样的情况,在连接到 Web 服务前,应通过编程设置用户名和密码。下面的示例使用基本身份验证,并说明一个简单的 WebService

<%@ WebService language="VB" Class="SecureService" %>

Imports System.Web.Services
Imports System

Class SecureService : Inherits WebService


    <WebMethod()> Public Function SecureTest As String
        Return "Hello from the secure web service"
    End
End Class
C# VB JScript  

可以在 IIS 中做适当的设置,要求对此服务进行基本身份验证,如下所示:

  1. 打开 IIS MMC 控制台。

    Start->Run "inetmgr"
    
  2. 在左边的窗格中,展开目录树查找虚拟目录。
  3. 在右边的窗格中,右击“Secureservice.asmx”并选择“属性”。
  4. 选择“文件安全性”选项卡。在“匿名访问和验证控件”下,单击“编辑”。

    • 禁用匿名访问。
    • 禁用集成 Windows 身份验证。
    • 启用基本身份验证。

  5. 单击“确定”保存这些设置并退出 MMC 控制台。
WebService 代理类提供两个属性:UsernamePassword。可以使用这两个属性指定凭据,并通过凭据连接到远程 Web 服务。必须将它们设置成 Web 服务的计算机或域上的有效 Windows 凭据。

<%@ Import Namespace="SecureService" %>

<html>
<script language="VB" runat="server">

    Public Sub Page_Load(sender As Object, e As EventArgs)

        Dim s As New SecureService

        s.Credentials = New System.Net.NetworkCredential("Administrator", "test123")

        Message.Text = s.SecureTest()
    End Sub

</script>

<body>
  <h4><font face="verdana">
    <asp:Label id="Message" runat="server"/>
  </font></h4>
</body>

</html>
C# VB JScript  

WebService 类还提供 System.Security.Principal.IPrincipal 类型的 User 属性,该属性可用来检索有关客户端用户的信息。此外,可以使用 ASP.NET 配置系统中的 Authorization 节授权对 Web 服务的访问。

使用 Soap 标头自定义身份验证和授权

Windows 身份验证非常适合 Intranet 方案,这种情况下您是对自己的域中的用户进行身份验证。然而在 Internet 上,您可能需要对 SQL 数据库执行自定义身份验证和授权。在这种情况中,应向服务传递自定义凭据(如用户名和密码),并让服务自己处理身份验证和授权。

将额外的信息连同请求一起传递给 XML Web 服务的简便方法是通过 SOAP 标头。为此,需要在服务中定义一个从 SOAPHeader 派生的类,然后将服务的公共字段声明为该类型。这在服务的公共合同中公开,并且当从 WebServiceUtil.exe 创建代理时可由客户端使用,如下例所示:

Imports System.Web.Services
Imports System.Web.Services.Protocols

' AuthHeader class extends from SoapHeader
Public Class AuthHeader : Inherits SoapHeader
    Public Username As String
    Public Password As String
End Class

Public Class HeaderService : Inherits WebService
    Public sHeader As AuthHeader
    ...
End Class
C# VB JScript  

服务中的每个 WebMethod 都可以使用 SoapHeader 自定义属性定义一组关联的标头。默认情况下,标头是必需的,但也可以定义可选标头。SoapHeader 属性指定公共字段的名称或者 ClientServer 类的属性(本标题中称为 Headers 属性)。在为输入标头调用方法前,WebService 设置 Headers 属性的值;而当方法为输出标头返回时,WebService 检索该值。有关输出标头或可选标头的更多信息,请参阅 .NET 框架 SDK 文档。


<WebMethod(), SoapHeader("sHeader")> Public Function SecureMethod() As String

    If (sHeader Is Nothing)
        Return "ERROR: Please supply credentials"
    Else
        Return "USER: " & sHeader.Username
    End If
End Function
C# VB JScript  

然后,客户端在调用要求标头的方法之前,直接在代理类上设置标头,如下面的示例所示:

Dim h As New HeaderService
Dim myHeader As New AuthHeader
myHeader.Username = "JohnDoe"
myHeader.Password = "password"
h.AuthHeader = myHeader
Dim result As String = h.SecureMethod()
C# VB JScript  

若要查看此代码的运行情况,请运行下面的示例:

 
VB SoapHeaders.aspx

[运行示例] | [查看源代码]

本节小结

  1. 使用 Windows 身份验证保证服务器上的 XML Web 服务安全性遵从与为 .aspx 页描述的完全相同的模型。
  2. 还可以通过编程来设置 Windows 凭据,使用 WebService 代理类上的 UsernamePassword 属性。
  3. 最后,可以自定义身份验证,将凭据信息作为 SOAPHeaders 并连同 SOAP 请求一起传递给需要它的方法。

编辑: [发送给好友] [打印本页] [关闭窗口] [返回顶部]
上一篇:ASP.NET 用户帐户模拟
下一篇:没有了
转载请注明来源:www.iyit.net
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。

 相关文章
最新更新 热点排行 推荐新闻
安全性和 WebService
ASP.NET 用户帐户模拟
ASP.NET 授权用户和角色
ASP.NET 基于窗体的身份验证
ASP.NET 基于 Windows 的身份验证
安全性和 WebService
ASP.NET 用户帐户模拟
ASP.NET 授权用户和角色
ASP.NET 基于窗体的身份验证
ASP.NET 基于 Windows 的身份验证
ASP.NET 身份验证和授权
ASP.NET 安全性概述
处理错误
ASP.NET 使用进程模型
部署 ASP.NET 应用程序
缓存服务 页数据缓存
缓存服务 页片段缓存
HTTP 处理程序和工厂
使用 Global.asax 文件
HTML 文本模式匹配
WIN XP蓝屏代码大全
QQ密码被盗怎么办!我教你找回密码
WinRAR将推出免费正版序列号!
备份软件GHOST使用教程
轻易破解Winrar,Winzip密码
让WinRAR汗颜的压缩软件UHARC
Win XP操作系统优化精髓
XP中重新安装或修复IE6的三种方法
Ghost批处理命令用法详解
挖掘隐藏在Windows XP中的实用工具(续
在ASP.net中保存/取出图片入/从SQL数据
一个.net 压缩位图至JPEG的代码
ASP.NET2.0数据库入门之常见错误
在ASP.NET中防止注入攻击
用ASP.NET开发Web服务的五则技巧
国内首次发现带有感染文件特征盗号病毒
从键盘磨损看电脑主人
如何控制我的电脑只允许登录我自己的Q
QQ密码被盗怎么办!我教你找回密码
使用身份验证来禁止内部用户上网 
Win Powershell遭遇病毒 最好升级软件
SiteAdvisor 助你远离恶意网站
提升流量 站长应该做的五件事
XP中重新安装或修复IE6的三种方法
XP下Asp.net访问被拒绝
 友情链接
设置首 页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接
Copyrights ? 2004-2006 iYiT.Net All Rights Reserved.
网站合作、广告联系QQ:147007642、466949678
易特网络技术 点击这里给我发消息