- 浏览: 978182 次
- 性别:
- 来自: 山西
文章分类
最新评论
-
白小默:
你好 可以提供下源码DEMO吗,不知为何,我导出来的excel ...
jxls 使用模板文件导出生成excel -
zkzqzzz:
博主威武!
让微信二维码扫描您的APK -
zkzqzzz:
感谢博主 原来那些类都不是必须的 或者自己写!!博主真棒 ...
抢红包插件实现原理浅析 -
zkzqzzz:
博主 请问你的其他类在哪里呢?
抢红包插件实现原理浅析 -
zkzqzzz:
其他类在哪呢?
抢红包插件实现原理浅析
对SOAP报文进行身份认证的方式很多,不过都是通过在SOAP报文头中添加一些安全凭证(Security Token)信息来完成的,主要包括以下一些身份凭证:
用户名/密码;
X.509证书;
Kerberos票据和认证者;
SIM卡的移动设备安全性凭证。
其中用户名/密码是最简单的身份认证方式,它不需要密钥、数字证书,所以也就不需要CA,部署实施简单易行。下面我们就通过例子讲解如何进行基于用户名/密码的SOAP认证。这个实例让客户端提供用户名/密码,服务端验证客户端的身份,而客户端按正常方式接收SOAP响应报文。
服务端
服务端创建一个applicationContext-ws-security.xml,让BbtForumService拥有用户名/密码的认证功能。
由于需要对SOAP进行前置处理,所以必须将STAX流模型的SOAP转换为DOM模型,这通过在② 处指定一个DOMInHandler来完成。在③处注册了一个处理SOAP报文的WSS4JInHandler,用于对接收的SOAP报文进行前置处理,与其对应的是WSS4J OutHandler,它对SOAP报文进行后置处理。两者都具有极高的定制性,可以通过配置定制各种加工逻辑,这可以通过合理设置properties 属性达到各种加工处理的要求。
在④处,我们定义了一个action属性,它定义了需要处理的动作,UsernameToken表示进行用户名/密码认证的操作。其他的动作包括Encrypt、Signature、Timestamp、SamlTokenUnsigned等,可以同时设置多个动作,多个动作之间用空格分隔,如<prop key="action">Encrypt Signature</prop>。
不同的动作通过设置配套的其他属性提供相应的操作,我们通过passwordCallback Class属性指定一个密码回调实现类来处理UsernameToken密码查询和认证的工作。
passwordCallbackClass指定的类必须实现javax.security.auth.callback.CallbackHandler接口,其代码如代码清单16-11所示:
PasswordHandle负责根据用户名查询正确的密码,这里,我们通过一个pwMockDB模拟存储用户名密码的数据库,如①所示。如果客户端以明文形式发送密码,UtPasswordHandler可以直接判断密码的正确性,如②-4所示。反之,如果以摘要的方式发送密码,UtPasswordHandler必须将正确的密码设置到callback中,以便WSS4JInHandler进行判断,如②-5所示。这里为明文和密文的密码分别提供了处理逻辑,但在一般情况下,密码是以明文还是密文发送是交互双方已经约定好的。
用户也可以通过扩展XFire的AbstractHandler定义自己的Handler,回调接口会传入MessageContext实例,可以通过MessageContext访问到SOAP中用户名/密码的信息进行认证。
客户端
现在服务端的Web Service服务已经需要对请求SOAP报文进行用户名/密码的认证了,客户端当然要进行相应的调整,以便在发送SOAP请求报文时添加用户名/密码的信息。
服务端在接收添加WS-Security信息的SOAP请求报文前必须进行前置处理,和服务端相对应,客户端在发送SOAP请求报文前进行前置处理,添加WS-Security信息。因此使用DOMOutHandler将DOM转换为STAX的流模型,此外通过定义一个WSS4JOutHandler完成在SOAP头添加用户名/密码信息的操作。
在④-2处,定义了密码的类型,WSConstants.PW_DIGEST表示密码以摘要方式发送,这可以保证密码的传输安全。设置为WSConstants.PW_TEXT表示密码以明文方式发送。④-3指定了一个用户名client,一般情况下,用户的密码保存在文件中或数据库中,因此通过指定一个回调类 UtPasswordHandler完成用户密码的获取操作,如④-4,回调类必须实现 javax.security.auth.callback.CallbackHandler接口,UtPasswordHandler的代码如代码清单 16-13所示:
运行代码清单16-12,通过类似于TcpTrace的工具截取SOAP请求报文,用户将可以看到带WS-Security报文头的SOAP报文:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soap:Header> <wsse:Security soap:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401 -wss-wssecurity-secext-1.0.xsd"> <wsse:UsernameToken> <wsse:Username>client</wsse:Username> <wsse:Password>wOtW+umoWdf/7s7pyJrlFAp2xJo=</wsse:Password> <wsse:Nonce>zJlCTQNCa+jHur2JdJF8Fw==</wsse:Nonce> <wsu:Created>2007-04-09T09:11:05.593Z</wsu:Created> </wsse:UsernameToken> </wsse:Security> </soap:Header> <soap:Body> <getRefinedTopicCount xmlns="http://server.xfire.baobaotao.com"> <in0 xmlns="http://server.xfire.baobaotao.com">20</in0> </getRefinedTopicCount> </soap:Body> </soap:Envelope> |
报文中粗体的部分为WS-Security的信息,为了简洁,我们特意删除了报文中一些命名空间的内容。
<wsse:UsernameToken> 元素被导入到SOAP报头中以携带身份信息。wsse:Username用于指定一个用户名,而<wsse:Password>则用于指定密码。有两种类型的密码:PasswordText和PasswordDigest,PasswordText以明文格式表示密码,而 PasswordDigest则被定义为Base64编码的SHA-1散列值。还有两个可选元素<wsse:Nonce> 和<wsu:Created>:前者是发送方创建的一个随机值,后者则是一个时间戳。如果<wsse:Nonce> 和<wsu:Created>两个元素中至少出现了一个,计算PasswordDigest的算法如下(每次PasswordDigest的值都是不一样的):
PasswordDigest = Base64(SHA-1(nonce+created+password))
如果没有使用其他的安全机制,PasswordDigest是通过非保密渠道发送用户名和口令的最佳方法。即使使用XML加密对<wsse:Password>元素进行加密,PasswordText依然可以使用。
发表评论
-
java通过sftp JSch 上传文件下载文件查看文件目录,测试可用
2019-12-19 18:19 987基于maven ... -
服务器之间的 zip 文件定时传送
2019-12-19 10:28 5261、expect 安装 将expect和tcl的软 ... -
Java/web/jsp根据pdf模板生成荣誉证书PDF文件
2019-07-19 14:48 9801.前言 最近博主在 ... -
Java生成荣誉证书PDF文件
2019-07-19 13:08 1401Java生成荣誉证书PD ... -
百度云API刷脸
2019-07-13 11:41 637刷脸登录是基于人工智能、生物识别、3D传感、大数据风控技术, ... -
maven--maven配置多个源文件夹
2019-06-13 21:32 937需求 Maven 为我们提供了一致的项目目录配置(源文件 ... -
绿盟检测出“检测到目标URL存在http host头攻击漏洞”如何解决
2019-06-09 10:00 1019绿盟检测出“检测到目标URL存在http host头攻击漏 ... -
Linux安装apache及其简单的反向代理配置
2019-06-07 09:06 647Apache简介 Apache HTTP Se ... -
Linux二进制安装apache2.4.25
2019-06-07 09:06 720Linux二进制安装apache2.4. ... -
weblogic配置https,http自动跳转转https,ssl
2019-05-21 09:44 960最近,公司要求将http ... -
bootstrap-table组合表头
2019-03-06 10:04 921bootstrap-table组合表头 ... -
[Weblogic]如何清理缓存
2019-03-04 15:23 861[Weblogic]如何清理缓存 ... -
Guns第十节Swagger的讲解
2019-01-23 16:51 6532018年08月01日 15:54:30 ze ... -
Anaconda详细安装使用教程
2019-01-22 15:07 626关注微信公众号【Mi ... -
Windows系统下Eclipse上搭建Python开发环境
2019-01-22 15:00 332Windows系统下Eclipse上搭 ... -
Python 3.6 中使用pdfminer解析pdf文件
2019-01-22 14:50 937所使用python环境为最新 ... -
Python提取PDF内容(文本、图像、线条等)
2019-01-22 14:43 7551使用Python抽取PDF文件内 ... -
用python解析pdf中的文本与表格【pdfplumber的安装与使用】
2019-01-22 14:40 1540我们接触到的很多文档资料都是以pdf格式存在的,比如:论文, ... -
java实现PDF转HTML
2019-01-21 10:14 935java实现PDF转HTML 问题场景: ... -
JAVA PDFBOX 读取PDF表格
2019-01-18 17:39 2993最近在帮公司做工具,需要读取PDF中表格的数据。网上查了, ...
相关推荐
例如,你可以使用@WSSecurityUsernameToken注解来指定使用用户名/密码令牌进行认证。然后,xfire会自动处理这些安全设置,并在发送和接收SOAP消息时应用相应的安全策略。 其次,为了运行这个示例,你需要确保已经...
UsernameToken方式通常涉及到用户名和密码的传递,而X509证书则基于公钥基础设施(PKI),使用数字证书进行身份验证。为了实现这些,开发者需要配置XFire的拦截器和安全策略,确保只有经过验证的请求才能访问服务。 ...
4. 在客户端,设置相应的安全配置,如提供用户名和密码或者证书,以进行身份验证。 5. 测试服务,确保只有经过正确认证的请求才能被处理。 在提供的压缩包文件"xfire+spring"中,可能包含了相关的示例代码、配置...
这种自定义身份验证可能比标准的基于证书或用户名/密码的身份验证更复杂,例如,它可能涉及到令牌验证、OAuth 或 JWT(JSON Web Token)。 在调用此类服务时,.NET 客户端应用程序需要适当地配置以支持自定义的验证...
在Xfire Webservice中,加密确保了用户数据(如用户名、密码和游戏活动)在传输过程中的安全性。 3. **SSL/TLS协议**:安全套接层(SSL)和传输层安全(TLS)协议是实现Web服务加密的常用方法。这些协议通过创建...
7. **安全与认证**:在实际应用中,Web服务可能会涉及到安全问题,如身份验证和授权。Spring和XFire提供了支持WS-Security标准的机制,可以添加证书、用户名/密码等安全配置到Web服务客户端。 8. **测试与调试**:...
- 基本认证:通过HTTP头发送用户名和密码进行身份验证。 - SSL/TLS:使用HTTPS确保数据传输的安全性。 - WS-Security:提供SOAP消息级别的安全,包括数字签名、加密、消息完整性等。 - OAuth和OpenID Connect:用于...
总的来说,Xfire认证的实现涵盖了一系列IT技术,包括但不限于身份验证、网络通信、协议设计、错误处理、性能优化和开发工具的使用。对于想深入了解游戏服务器开发的开发者,这部分知识是非常宝贵的。通过阅读和分析...
3. **Username Token**: 这是一种简单的身份验证机制,其中包含用户名和密码。尽管简单,但需要配合其他安全措施,如SSL,以增强安全性。 4. **X.509证书**: WS-Security也支持使用X.509数字证书进行身份验证,提供...
在XFire中,可以通过配置安全策略来实现这一功能,例如使用用户名令牌(UsernameToken)、X.509证书等进行身份验证。客户端在调用Web服务时,必须提供有效的凭证以通过安全检查。这通常涉及在SOAP消息头中添加安全...
XFire Webservice客户端可能采用了某种形式的身份验证机制,如用户名和密码、API密钥或其他安全令牌,以确保只有授权的客户端才能访问服务。 **7. 异步通信** 考虑到游戏环境对实时性的要求,XFire Webservice...
这些信息可能包括认证凭据(如用户名和密码)、安全令牌等。 4. **头部验证**:服务器端接收到请求后,会检查SOAP头中的信息,进行必要的验证。这可能涉及比较签名、检查证书、验证用户权限等。 5. **处理响应**:...
定位结果包含多个属性,如身份认证结果、定位结果的具体属性、定位请求参数等。此外,文档还提及了“相关知识”部分,虽然未详细展开,但可以推测这部分可能涵盖了定位技术的基础原理、最佳实践或是故障排查指南等,...
6. **身份认证**:16_7_2部分可能涉及使用用户名-密码进行Web服务的身份验证,这是安全性的一个重要方面,确保只有经过授权的客户端才能访问服务。 7. **SOAP报文**:SOAP是Web服务的标准通信协议,报文包含了服务...
这个例子可能包含了处理登录请求的方法,如检查用户名和密码,以及生成会话令牌等。通过这个示例,学习者可以了解到如何在Web服务中处理认证和授权的过程。 为了充分利用这个例子,初学者应该首先了解Web服务的基本...
测试点包括接口调用是否需要用户名和密码,以及抵御恶意攻击的能力,防止系统因非法调用而崩溃。 3. WebService测试工具 soapUI是一个广泛使用的工具,用于进行WebService的功能测试。以下是如何使用soapUI进行...
其中,UsernameTokenProfile、X.509TokenProfile和SAMLTokenProfile分别提供了基于用户名密码、数字证书和SAML断言的安全令牌机制,满足了不同场景下的身份验证需求。 #### 实现方案 在实际部署中,企业可以根据...