我计划采用Windows集成认证,这时我发现打开BS网站的任何界面都要弹出一个密码框,可是我只想对WebService加密,问题1:是否需要将页面和WebService分开发布??页面采用匿名认证,WebService采用Windows认证。
问题2:别人的系统需要调用我的WebService是否我只需要告诉他地址和Windows认证的用户名密码即可?
问题3:Windows认证使用的帐户是否可以分权限?比如,我需要这个帐户只能调用某些WebService,其他Service就不行

解决方案 »

  1.   

    问题1:是否需要将页面和WebService分开发布??页面采用匿名认证,WebService采用Windows认证。
    IIS可以控制目录,甚至是文件的的安全设置,右键点击某个文件,执行属性,在File Security中设置 Authentication.问题2:别人的系统需要调用我的WebService是否我只需要告诉他地址和Windows认证的用户名密码即可?
    是的。如果用户是域用户的话,还需要告诉域的名字。问题3:Windows认证使用的帐户是否可以分权限?比如,我需要这个帐户只能调用某些WebService,其他Service就不行
    可以在你程序里判断。使用下面的方法取得caller的用户名,再判断
    [WebMethod]
    public string WhoAmI() {
        return "Running as User : " +
            Thread.CurrentPrincipal.Identity.Name;
    }
    或者使用asp.net的web.config中的URL Authorization配置。
    <authorization>
      <deny user="DomainName\UserName" />
      <allow roles="DomainName\WindowsGroup" />
    </authorization>
    参考
    Building Secure ASP.NET Applications: Authentication, Authorization, and Secure Communication
    http://msdn.microsoft.com/en-us/library/ff649362.aspxHTTP Security and ASP.NET Web Services
    http://msdn.microsoft.com/en-us/library/ms996415.aspxSetting authorization rules for a particular page or folder in web.config
    http://weblogs.asp.net/gurusarkar/archive/2008/09/29/setting-authorization-rules-for-a-particular-page-or-folder-in-web-config.aspx
      

  2.   

    <allow users=""/>
    这里面,怎么配置?我需要设置多个帐号
      

  3.   

    我发现对WebService采用Windows认证方式加密后,客户端的调用都要采用代理类???我目前只是本机开发的时候我“添加服务引用”后,实例化SoapClient后使用WebService的