zoukankan      html  css  js  c++  java
  • wse说谈(3)——策略,用户令牌

    启用策略之用户令牌(UsernameToken

    实现一下用户令牌策略(UsernameToken

    这里详细的说一下:

    服务端配置

    (一)建立web网站(略)

    (二)配置WSE

    1)在常规(general)选项卡上勾选其中的两项

    2)策略设置

    在策略(Policy)选项卡中设置,这个设置很容易,勾选Enable Policy,添加策略文件:名字为ServicePolicy

    步骤(上传图片比较麻烦,所以直接文字表达):

    服务器策略——客户端验证方法选择Username——用户和角色这里不勾选——消息保护级别默认就行——服务器证书这里不勾选在代码中指定证书,然后选择证书——完成。

    3)用户令牌设置

    这里设置比较简单,添加从UsernameTokenManager派生的类CustomUsernameTokenManager

    这里给个全的:

    protected override string AuthenticateToken(UsernameToken token)

    {

        return "111";

    }

    它就返回密码是:111。如果客户端的的用户令牌密码与这个不符合,那么服务就会拒绝客户访问。这个验证令牌的方法就是这个意思。它就是验证用户令牌中的密码,而用于比较的密码就是这个方法返回的字符串。

     

    客户端配置

    1)策略设置方法与服务端设置相似,但该选择客户端的地方要选择客户端选项(这个应该容易理解吧)。

    2)请求服务时,要设置用户令牌

    3)请求服务时,不要忘记激活用户策略

    下边给出一段完整的代码:

    public void Test()

    {

    FirstInstance.WebServiceWse client =

     new FirstInstance.WebServiceWse();

     

        UsernameToken token = null;

        token = new UsernameToken("qq","111");

        client.SetClientCredential(token);

        client.SetPolicy("ClientPolicy");

     

        Console.WriteLine(client.HelloWorld("x"));

    }

    说明一下:

    在这段代码中,设置的用户令牌密码为31

     

    注意:配置时要注意异常错误,这些异常错误这里不提了。只要是一步步的进行,注意其中的安全选项冲突,则没有问题。

     

    现在对消息的保护设置为None,然后,看看令牌在soap消息中的情况,这里只给出其中的一段:

    <wsse:UsernameToken>

      <wsse:Username>qq</wsse:Username>

      <wsse:Password Type="…PasswordDigest">

        0nAwMqEiHeF+uCbMTRL0qfQG2Mo=

      </wsse:Password>

      <wsse:Nonce>fBduFda3nmZboNcsQDBWig==</wsse:Nonce>

      <wsu:Created>2010-04-23T09:19:38Z</wsu:Created>

    </wsse:UsernameToken>

     

    这里可以看到在无消息保护级别时(消息保护选择None):用户令牌其中的两个元素:用户名和用户密码,用户名是qq,而密码以数字签名格式存在。有关签名(数字签名)及散列相关内容可见我的随笔:

    http://www.cnblogs.com/jams742003/archive/2010/04/09/1708012.html

    http://www.cnblogs.com/jams742003/archive/2010/04/09/1708315.html

     

     

  • 相关阅读:
    ArrayList用法
    MessageBox
    将文本文件导入Sql数据库
    在桌面和菜单中添加快捷方式
    泡沫排序
    Making use of localized variables in javascript.
    Remove double empty lines in Visual Studio 2012
    Using Operations Manager Connectors
    Clear SharePoint Designer cache
    Programmatically set navigation settings in SharePoint 2013
  • 原文地址:https://www.cnblogs.com/jams742003/p/1718813.html
Copyright © 2011-2022 走看看