惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
Tenable Blog
H
Heimdal Security Blog
K
Kaspersky official blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
S
Schneier on Security
G
GRAHAM CLULEY
U
Unit 42
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
C
CERT Recently Published Vulnerability Notes
Google DeepMind News
Google DeepMind News
罗磊的独立博客
Stack Overflow Blog
Stack Overflow Blog
阮一峰的网络日志
阮一峰的网络日志
Simon Willison's Weblog
Simon Willison's Weblog
C
Cisco Blogs
Cyberwarzone
Cyberwarzone
T
The Exploit Database - CXSecurity.com
Project Zero
Project Zero
Security Archives - TechRepublic
Security Archives - TechRepublic
www.infosecurity-magazine.com
www.infosecurity-magazine.com
博客园 - 司徒正美
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
V
Visual Studio Blog
博客园 - Franky
Engineering at Meta
Engineering at Meta
WordPress大学
WordPress大学
Jina AI
Jina AI
P
Proofpoint News Feed
P
Proofpoint News Feed
有赞技术团队
有赞技术团队
L
LINUX DO - 最新话题
宝玉的分享
宝玉的分享
N
News and Events Feed by Topic
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
博客园 - 聂微东
T
The Blog of Author Tim Ferriss
Spread Privacy
Spread Privacy
Application and Cybersecurity Blog
Application and Cybersecurity Blog
IT之家
IT之家
S
Security Affairs
博客园 - 叶小钗
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
小众软件
小众软件
N
News | PayPal Newsroom
Cloudbric
Cloudbric
AWS News Blog
AWS News Blog
W
WeLiveSecurity
The Last Watchdog
The Last Watchdog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
NISL@THU
NISL@THU

博客园 - lisugar

BPEL元素定义层次关系 去黑头的方法.... BPEL中的XML元素解析 2 - lisugar - 博客园 BPEL中的XML元素解析 WDSL文件中的XML元素 WS-BPEL2.0 Specification 什么是BPEL - 老外们给的定义 你们猜吧:) 劳动人民的智慧是无穷的,只要你有发现的眼睛 安全 C# .net 2005 beta 所有安装连接 .net中实现拖拽控件 今天最大的收获 C#程序分类管理 C#创建目录的方法 数据库中权限分配技巧 [wenService]ASP.Net+XML打造留言薄 [[Advanced T-SQL]] Automate the Generation of Stored Procedures for Your Database [C#]Windows服务程序[转载西门吹雪的好文章]
[webService]如何编写需要授权才能使用的WebService?(原著网事如风)
lisugar · 2004-11-30 · via 博客园 - lisugar

  接触WebService没多久,一个令我困扰的问题就是怎么样给自己开发的WebService加上身份认证的功能,因为我不想什么乱七八糟的人使用我的服务,因为这个WebService可能存在一些有关个人隐私的信息,除了授权的人之外,闲杂人等一律要拒之门外。这个对于Windows应用程序来说易如反掌的功能在WebService上应该如何实现呢?
  具体如何实现者一功能有许多方法,在CodeGuru的Build Secure Web Services With SOAP Headers and Extensions文章中使用了一种不错的方法,可以大体上解决我的问题,但是在Quotes2实现里每次都需要验证一次用户名和密码,而Quote3实现的方法假如使用HTTP GET和HTTP POST好像又会失效,总是感觉美中不足,有没有一种方法可以对WebService的任何调用方式都有效呢?经过多方查找资料,终于找到一个可行的方法:利用Session。假如你编写过Web应用程序的话,对于Session肯定不陌生,对于需要保持状态的程序而言,Session和Application是必不可少的,比如那些论坛和留言版等等。我们这里就要利用相同的机制实现用户认证。
  首先我给WebService添加一个名为Login的方法:
  这里仅仅是一个示例,因此我简化了用户的认证过程,Login方法很简单,它所作的工作就是在用户身份验证通过之后将Session["login"]置为1表示用户通过验证,否则返回"login failed"的错误信息。这里的实现和一般的WebMethod没有什么区别,除了多了一个属性EnableSession = true之外。这是我们实现认证功能的关键所在,在这个WebService中,所有的方法都必须使用这个属性加以标记。
  好了,服务器端的工作就查不多了(这么简单,不可思议吧),为了检验我们这个方法是否有效,我们再添加一个方法验证一下:

  现在我们来编写一个客户端验证一下到底这个方法是否有效,新建一个控制台程序TestCon,添加这个程序的Web引用,并把引用文件夹重命名为login,编写如下代码:
  Ctrl+F5运行程序,程序运行结果如下:

  呵呵,结果好像不对,用户名和密码都没错,调用GetStatus为什么失败了呢?想想这这结果是理所当然的,Session保存数据是靠cookie实现的,我们这个是一个普通的控制台程序,它又没什么地方存放cookie信息,自然不能正确使用了。假如用一个asp程序测试的话,认证功能已经实现,不信你试一下!
  但是我们要在普通的应用程序中实现用户认证,难道就没有办法了么,当然有了,既然程序没地方存放cookie,那我们给它一个不就完了嘛,好,我们改写程序如下:
  再Ctrl+F5,变:

  哈,这下对了吧,功夫不负有心人,这下你想用我的WebService就没那么容易了吧,搞定,呵呵!