社区
Web Services
帖子详情
如何只让授权的用户调用web services
honghu3000
2008-12-24 04:54:18
问个问题.如何只让授权的用户调用web services
...全文
152
8
打赏
收藏
如何只让授权的用户调用web services
问个问题.如何只让授权的用户调用web services
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
honghu3000
2008-12-25
打赏
举报
回复
有没有具体的例子,再顶一下
wt0731
2008-12-25
打赏
举报
回复
web services用soap头实现身份验证:
http://www.cnblogs.com/houdejun214/archive/2007/10/14/923790.html
http://www.cnblogs.com/caoxch/archive/2006/11/22/568313.html
mma135
2008-12-25
打赏
举报
回复
ding
ooily
2008-12-25
打赏
举报
回复
ding
honghu3000
2008-12-25
打赏
举报
回复
找到解决方法了
问题提出:为了构建一个安全的web服务,需要对调用方进行身份验证,只让通过审核的用户调用web服务。
软件件环境:Web服务程序部署在分布于各地的工厂服务器,这些服务器位于内网之中,没有固定外网IP,且不能通过外网进行访问。调用这些Web服务的是一台连接至internet的WEB服务器,该WEB服务器通过VPN与各个工厂的服务器相连。
解决方案一:通过SOAP Header传递用户名和密码。
1. 首先需要在服务中定义一个从 SOAPHeader 派生的类,表示传入 SOAP 标头的数据。
public class CredentialSoapHeader : System.Web.Services.Protocols.SoapHeader
{
private string _UserID=string.Empty;
private string _PassWord=string.Empty;
public string UserID
{
get{return _UserID;}
set{_UserID=value;}
}
public string PassWord
{
get{return _PassWord;}
set{_PassWord=value;}
}
public void Initial(string nUserID,string nPassWord)
{
UserID=nUserID;
PassWord=nPassWord;
}
public bool IsValid(string nUserID,string nPassWord,out string nMsg)
{
nMsg="";
try
{
//判断用户名密码是否正确
if(nUserID == "admin" && nPassWord == "admin")
{
return true;
}
else
{
nMsg="对不起,你无权调用此Web服务,可能有如下原因:\n 1.您的帐号被管理员禁用。\n 2.您的帐号密码不正确";
return false;
}
}
catch
{
nMsg="对不起,你无权调用此Web服务,可能有如下原因:\n 1.您的帐号被管理员禁用。\n 2.您的帐号密码不正确";
return false;
}
}
/// <summary>
/// 用户名密码是否正确
/// </summary>
/// <returns>用户名密码是否正确</returns>
public bool IsValid(out string nMsg)
{
return IsValid(_UserID,_PassWord,out nMsg);
}
}
2. 在Web Services使用 SoapHeader 自定义属性定义一组关联的标头,服务中的每个 WebMethod 都可以使用.(默认情况下,标头是必需的,但也可以定义可选标头)
Test.asmx代码片段:
public CredentialSoapHeader myHeader=new CredentialSoapHeader();
// WEB 服务示例
[SoapHeader("myHeader")]
[WebMethod(Description="加入了身份验证的web服务",EnableSession=true)]
public string HelloWorld (string contents)
{
string msg = "";
//验证是否有权访问
if(!myHeader.IsValid(out msg))
return msg;
return "Hello World:"+contents;
}
3. 最后客户端在调用要求标头的方法之前,需直接在代理类上设置标头。
以下是winform客户段代码片段:
SoapTest.Test test1 = new SoapHeader.SoapTest.Test();
//创建soap头对象
SoapTest.CredentialSoapHeader header = new SoapHeader.SoapTest.CredentialSoapHeader();
/设置soap头变量
header.PassWord = "admin";
header.UserID = "admin1";
test1.CredentialSoapHeaderValue = header;
//调用web 方法
this.label1.Text = test1.HelloWorld ("wang");
通过以上步骤就可以完成Web Services自定义身份验证了.
该方案的优点是代码灵活,便于移植,缺点是传递的信息没有加密,可配合SSL进行使用。
解决方案二:通过集成windows身份验证。
1. 将web服务程序设为集成windows身份验证
2.客户端web引用代码
Test.WebReference.Service1 wr = new Test.WebReference.Service1(); //生成web service实例
wr.Credentials = new NetworkCredential("guest","123"); //guest是用户名,该用户需要有一定的权限
lblTest.Text = wr.Add(2,2).ToString(); //调用web service方法
该方案的优点是比较安全,性能较好,缺点是不便于移植,部署工作量大。
qibing_08
2008-12-24
打赏
举报
回复
可以用身份验证
消失的尘芥
2008-12-24
打赏
举报
回复
用SOAP验证
CutBug
2008-12-24
打赏
举报
回复
SOAP验证
参考:MSDN
http://msdn.microsoft.com/zh-cn/library/9z52by6a.aspx
搞定系列:yolov8目标检测封装成类
调用
本课程主要核心是将yolov8框架封装成一个类,方便
调用
或者集成开发以及集成部署。通过本课程您将收获一下知识: (1)了解yolov8框架检测基本流程; (2)掌握目标检测封装类大体思路; (3)学会yolov8封装函数以...
php CURL
调用
Web
service
s专题
1、JAVA提供的
web
service
s,PHP 通过CURL GET
调用
。 需要传时间参数, 参数里有空格时,需要将参数值 urlencode 处理一下。 否则无法成功
调用
2、
Oracle直接
调用
web
service
sF服务
1. 去 ...
调用
方法,要用
授权
过的
用户
才能
调用
SQL> SELECT getCompanyFpb (‘ p_int_1 ’ , ‘ p_int_2 ’) from dual; 官方参考文档: https://oracle-base.com/articles/10g/utl_dbws-10g
什么是
Web
Service
s
2.1 什么是
Web
Service
s 从技术的角度来看,
Web
Service
可以被认为是一种部署在
Web
上的对象(
Web
Object),因此,具有对象技术所承诺的所有优点;同时,
Web
Service
s的基石是以XML为主的、开放的
Web
...
C#
调用
Web
Service
时的身份验证
C#
调用
Web
Service
时的身份验证 在项目开发,我们经常会使用
Web
Service
,但在使用
Web
Service
时我们经常会考虑以下问题:怎么防止别人访问我的
Web
Service
?从哪里引用我的
Web
Service
?对于第一个问题,就涉及到...
Web Services
12,162
社区成员
16,328
社区内容
发帖
与我相关
我的任务
Web Services
.NET技术 Web Services
复制链接
扫一扫
分享
社区描述
.NET技术 Web Services
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章