ASP.NET中WebService的两种身份验证方法

摘要:
1、 通过SOAPHeader进行身份验证此方法通过设置SOAPHeader信息来验证身份,主要通过以下步骤:1。在服务器上实现SOAPHeader类publicclassCredentialSoapHeader:System.Web.Services.Protocols.SOAPHeader{//身份验证publicstringUserId{get;set;}的用户名//身份验证public的密码

一、通过SOAP Header身份验证

此方法是通过设置SOAP Header信息来验证身份,主要通过以下几步:

1、在服务端实现一个SOAP Header类

public class CredentialSoapHeader : System.Web.Services.Protocols.SoapHeader
{
    //验证身份的用户名
    public string UserId
    {
        get;
        set;
    }

    //验证身份的密码
    public string Password
    {
        get;
        set;
    }
}

2、创建WebService

[WebService(Namespace=http://tempuri.org/)]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class WebService : System.Web.Services.WebService
{
    public WebService()
    {
        //如果使用设计的组件,请取消注释以下行
        //InitializeComponent();
    }

     //生成一个CredentialSoapHeader类的实例
    public CredentialSoapHeader header;

    [WebMethod(Description="用户验证测试")]
    [System.Web.Services.Protocols.SoapHeader("header")] //用户身份验证的soap header
    public string HelloWorld(string contents)
    {
        //验证是否有权访问(当然,也可以通过查询数据库实现,具体视项目要求)
        if(header.UserId.equals("admin") && header.Password.equals("admin"))
        {
            return "Hello World " + contents;
        }
        else
        {
            return "无权使用此服务";
        }
    }
}

3、调用WebService

protected void Button1_Click(object sender, EventArgs e)
{
    localhost.WebService service = new localhost.WebService();
    localhost.CredentialSoapHeader header = new localhost.CredentialSoapHeader();
    //设置SOAP Header
    Header.UserId = "admin";
    Header.Password = "admin";
    service.CredentialSoapHeader = header;

    //调用Web方法
    Response.Write(service.HelloWorld("测试"));
}

二、通过集成windows身份验证

1、将WebService设为集成Windows身份验证

2、客户端引用代码

localhost.WebService service = new localhost.WebService();
service.Credentials = new NetworkCredential("guest","123"); //guest是用户名,123是密码
string result = service.HelloWorld("测试");

免责声明:文章转载自《ASP.NET中WebService的两种身份验证方法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇vscode修改多行注释的快捷键Haskell学习笔记下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

VMP加壳(三):VMP壳爆破实战-破解某编辑类软件

同时,记住在内存视图中向VMP0段提供断点后继续单击确认按钮,以查看调用方法的位置(此处的返回地址为0x5E01E9),但此处返回push(或vm条目)。这个地方会是验证码检测的入口吗!通过字符串查找各种键提示(sn、不正确注册等)的内存:通过访问断点查找键代码,然后找出调用该函数的函数,这与JCC指令的距离更远。...

docker.service启动失败:Unit not found的原因及解决办法

解决方案是删除/usr/lib/systemd/system/docker.service的[UNIT]中包含的dockersocket,然后重新加载systemctldaemon,最后是systemctlstartdocker.service。启动成功。在类似的情况下,docker.socket缺失,但新版本需要docker.seocket。这是因为Fla...

安装samba服务器实现Linux mint和Windows共享文件

安装samba服务器以实现Linuxmint和Windows共享文件。在Linuxmint普通用户下执行命令:sudoapt-geinstallsamba、installsamba和打开smb。conf配置文件,并执行命令gedit/etc/samba/smb-Coff,如果您想安装gedit(sudoapt-geinstallgedit),还可以使用Lin...

Selenium操作示例——鼠标悬停显示二级菜单,再点击二级菜单或下拉列表

这两天在python中玩selenium时,我遇到了一个问题,那就是鼠标移动到页面上的一个按钮或菜单,二级菜单或下拉菜单自动弹出,然后二级菜单或者下拉列表自动点击。...

Java 安全之:csrf攻击总结

最近,我在维护一些旧项目。在调试期间,我发现请求被反复拒绝。我仔细查看了项目的源代码,发现存在csrftoken验证。我借此机会了解了csrf攻击,并将其总结成一篇论文。受攻击的网站无法阻止攻击。在整个过程中,攻击者无法获取受害者的登录凭据,只能“冒充”。CSRF攻击成功,因为服务器将攻击者发送的请求误认为是用户的请求。服务器通过验证请求是否携带正确的令牌来...

jquery跨域请求数据

Jquery跨域请求数据Jquery跨请求数据。事实上,这很容易。请遵循以下步骤:首先,编写js,通过get获取远程数据。请注意,回调参数应添加在链接之后,这意味着将回调函数地址传输到远程页面。',{params},函数cb{alert;alert;},'json');第二:编写处理程序。publicvoidProcessRequest{context.Re...