用java程序访问集成windows身份验证的webservice(.net版本)

问题描述

如题输入密码之后就能打开wsdl了。这种windows集成身份验证的.netwebservice如何使用java程序进行访问?

解决方案

解决方案二:
C#调用WebService时的身份验证在项目开发,我们经常会使用WebService,但在使用WebService时我们经常会考虑以下问题:怎么防止别人访问我的WebService?从哪里引用我的WebService?对于第一个问题,就涉及到了WebService是安全问题,因为我们提供的WebService不是允许所有人能引用的,可能只允许本公司或者是通过授权的人才能使用的。那怎么防止非法用户访问呢?很容易想到通过一组用户名与密码来防止非法用户的调用。在System.Net中提供了一个NetworkCredential,通过它我们可以在网络中提供一个凭证,只有获得该凭证的用户才能访问相应的服务的权限。在这里我们也使用NetworkCredential。在NetworkCredential中,我们通过提供WebService发布所在的服务器名称,以及登录服务器并调用该WebService的用户名及密码(在IIS中配置)。在调用WebService时设置其Credential属性,把上面得到的Credential凭证赋值给它,这样只有使用提供的用户名及密码才能调用WebService服务了而其他用户则无法访问,这样就能能满足防止WebService被别人调用了。至于主机名,用户名及密码,对于B/S可以通过webconfig来配置,对于C/S可以使用应用程序配置文件。这样就能灵活地配置了。如下以C/S为例来说明,首先我们提供一个服务器网络凭证,然后通过WebRequest来验证连接是否成功。当然了,为了保存用户名与密码等的安全,可以对其进行加密等手段来保证其安全。以下是主要源代码:1///<summary>2///服务器网络凭证3///</summary>4///<returns></returns>5publicstaticNetworkCredentialMyCred()6{7stringloginUser=Properties.Settings.Default.UserName;//用户名8stringloginPSW=Properties.Settings.Default.UserPSW;//密码9stringloginHost=Properties.Settings.Default.HostName;//主机名,可以是IP地址,也可以服务器名称10NetworkCredentialmyCred=newNetworkCredential(loginUser,loginPSW,loginHost);11//NetworkCredentialmyCred=newNetworkCredential("username","123456","yourip");//"username","123456","yourservername"12returnmyCred;13}14///<summary>15///验证是否成功连接到服务器,若连接成功,则返回TRUE16///</summary>17///<paramname="url">服务器WebServiceURL</param>18///<returns></returns>19publicstaticboolCredential(stringurl)20{21//定义局部变量22stringurl=G_Url;//2009-02-25服务器验证只验证到机器2324try25{26if(myWebResponse==null)27{28WebRequestmyWebRequest=WebRequest.Create(url);//根据URL创建一个连接请求29myWebRequest.Credentials=MyCred();//获取验证的凭证,这是最重要的一句30myWebRequest.Timeout=20000;//单位为毫秒3132myWebResponse=myWebRequest.GetResponse();//返回连接成功时的信息33}34}35catch(WebExceptionwex)//无法连接到服务器,可能是因为服务器错误或用户名与密码错误36{37if(myWebResponse!=null)//毁销38{39myWebResponse.Close();40myWebResponse=null;41}4243returnfalse;44}45catch(Exceptionex)46{47if(myWebResponse!=null)48{49myWebResponse.Close();50myWebResponse=null;51}5253returnfalse;5455}56finally57{58}5960returntrue;61}6263privatestaticWS_Webasic.WS_Webasicwebasic=null;//实现华WS_Webasic.WS_Webasic6465///<summary>66///WS_Webasic初始化67///</summary>68publicstaticWS_Webasic.WS_WebasicWS_Webasic69{70get71{72if(webasic==null)//若webasic为空,则重新实例化,这样可以减少验证的时间,提高效率73{74//webasic=newZEDI.WS_Webasic.WS_Webasic();75//wsBool=Credential(webasic.Url);//URL改为服务器地址2009-02-25chhuic@163.com76wsBool=Credential(G_Url);77if(wsBool==true)//服务器连接验证通过78{79webasic=newWS_Webasic.WS_Webasic();//实例化80webasic.Credentials=MyCred();//得到服务器连接凭证,这样该WebService可以放心的连接了81}82}83returnwebasic;84}85}注:(1)必须引用System.Net;(2)对WebService发访问,在IIS里取消匿名访问权限,若允许匿名访问,就没有必须提供验证凭证了。IIS里怎么取消匿名访问权限请参照IIS相关文章,这里不在累赘。验证是有时速度会比较慢,主要是因为myWebResponse=myWebRequest.GetResponse();时速度比较慢,若有更好的方法验证网络连接是否成功的话,请告诉我,呵呵。。。通过以上的实现,就实现了WebService的安全访问问题,若还有更好的方法,不吝赐教
解决方案三:
楼主,我也遇到同样的问题了,请问你解决了吗?
解决方案四:
一般不都是soapheader的吗,怎么会用集成windows登录的方式……

时间: 2024-09-08 08:47:34

用java程序访问集成windows身份验证的webservice(.net版本)的相关文章

Exchange2007在不同网络环境下会出现集成windows身份验证窗口

问题描述 各位专家好:我的exchange2007server使用基于表单的身份验证,在局域网内部访问正常,在外网访问部分正常,但是在某些地区访问时会出现windows身份验证窗口,输入exchange的用户名和密码也无法通过验证,但是根据分析这些地区的网络环境就是正常的路由器上网方式,不知道是什么原因引起的,有什么解决办法. 解决方案 解决方案二:OutlookorOWA?解决方案三:Outlook还要formbasedauthentication?你太牛了:)这种情况往往是你得验证报文由于某

没有sa密码无法集成windows身份验证登录的解决方法_MsSql

SQL登录时如果采用windows集成身份验证,登录框将会以"机器名\当前系统用户名"的格式显示登录名,而且登录名和密码都是灰色的,不允许用户输入. 了解到同事刚刚修改了服务器的机器名,因此在SQL的登陆框中显示"新机器名\当前系统用户名".要知道windows集成身份验证能登录的原因是在SQL的登录名中已经包括了该用户名,原来的用户名在SQL安装的时候已经记录到了SQL中,如果机器名变更了,"新机器名\当前系统用户名"肯定无法正常登录. 网上看

没有sa密码无法集成windows身份验证登录的解决方法

SQL登录时如果采用windows集成身份验证,登录框将会以"机器名\当前系统用户名"的格式显示登录名,而且登录名和密码都是灰色的,不允许用户输入. 了解到同事刚刚修改了服务器的机器名,因此在SQL的登陆框中显示"新机器名\当前系统用户名".要知道windows集成身份验证能登录的原因是在SQL的登录名中已经包括了该用户名,原来的用户名在SQL安装的时候已经记录到了SQL中,如果机器名变更了,"新机器名\当前系统用户名"肯定无法正常登录. 网上看

WCF与IIS集成Windows身份验证的矛盾

好久没有上来了,最近跟着原来的老大一起跳到了一家新公司,在做一个新的交友项目,今天总算基本完成了.分享一个关于WCF的小技巧,由于项目中 很多地方用了Jquery+WCF来实现Ajax异步获取数据,在开发环境下: 直接在vs.net里,右击svc文件在浏览器里浏览时(没有采用vs.net自带的aspx服务器,而是在项目属性里设置为直接使用IIS),提示以下错误: IIS 指定了身份验证方案"IntegratedWindowsAuthentication, Anonymous",但绑定仅

ASP.NET 2.0中的Windows身份验证

本教程阐释在 ASP.NET 2.0 版中,IIS 集成 Windows 身份验证以及 ASP.NET Windows 身份验证的工作机制.同时,阐释 NTLM 和 Kerberos 身份验证的工作机制.此外,本教程还阐释 WindowsAuthenticationModule 类如何构造 WindowsPrincipal 和 WindowsIdentity 对象,然后将这些对象附加到当前的 ASP.NET Web 请求以表示经过身份验证的用户. 概述 身份验证是一个验证客户端身份的过程,通常采

Windows 集成的身份验证连接SQL Server数据库,打造更安全的连接

server|window|安全|数据|数据库 摘要:今天用C#编写一个Windows 服务程序,其中要连接一个Windows 2003 Server上的SQL Server 2000 数据库,用SQL Server 身份验证.发现普通程序都能联上,但是Windows服务程序就是联不上. 后来查了资料,找到了解决方法.共享给大家. 三步解决: 1.  在服务器上创建一个用户,配置好SQL Server数据库访问权限. 2.  在客户端创建一个一样的用户. 3.  服务程序以刚创建的那个客户端用户

高分求解:集成windosws身份验证,登录后如何在不中断会话的情况下注销登录?

问题描述 一个网站中使用了集成windosws身份验证,使用WINDOWS帐户登录后,如果在不中断当前会话的情况下注销啊?> 解决方案 解决方案二:网站,你是说登陆数据库????????解决方案三:windosws身份验证,不是登录数据库是网站中使用了服务器的系统帐户来进行认证解决方案四:关注,学习一下!解决方案五://自己写个类,//youPrincipal为自己写的继承System.Security.Principal.IPrincipal类.每个页面前面加入if(Context.User.

windows身份验证-ASP.NET 使用Windows身份验证 怎么获取登陆用户的密码?

问题描述 ASP.NET 使用Windows身份验证 怎么获取登陆用户的密码? 我现在想在web程序中发送邮件(或类似需要域验证的功能),其中Credentials我想使用当前登陆用户的. 请问在这个时候怎么获取密码或有什么别的方式处理? 解决方案 无法获取的,如果可以获取的话,你的电脑系统就没有任何安全性可言... 解决方案二: 只知道里面有个SAM文件 解决方案三: 你指的是,我发布个ASP.NET应用程序,你访问了,我就可以获取到你的windows登录用户和密码? 你觉得这可能么

SQLSERVER误删Windows登录用户验证方式使用Windows身份验证的解决方法

今天看到这篇文章:没有了SA密码,无法Windows集成身份登录,DBA怎么办? 想起来之前着急哥问我的一个问题,一个DBA删除了Windows登录用户,而且SQLSERVER服务器的验证 方式是Windows身份验证 怎麽办?? 我当时给他的答复是:重装系统数据库master 今天看到这篇文章没有了SA密码,无法Windows集成身份登录,DBA怎么办?,有思路了 假设我们遇到很糟糕的情况 sa被禁用,服务器身份验证为Windows身份验证模式,Windows登录用户被删,没有其他sysadm