什么是wss认证?wss全称是WebService Security。对于wss认证详细参考以下链接:
接下来进入正题,如何使用soapUI发送包含wss认证请求,其实是往请求报文中填入红框部分:
在请求前需要server提供信息:①帐号密码②密码类型(passwordDigest和passwordText)
1.使用soapUI创建soap项目,并填入基础报文:
2.点击Reuqest 1,填入Username和Password,一般由server端提供
3.添加ws timestamp内容,因为server会校验当前时间是否在时间范围,测试间隔时间超过60s,则需要删掉security节点并重新添加。
右键空白处点击Add WS-Timestamp选项
设置过期时间,单位秒:
点击确定后出现Security部分:
4.添加wss username token模块
在空白处右键,点击Add WSS Username Token
此处会让你选择PasswordDigest(加密密码)还是PasswordText(明文密码),取决于server方如何校验:
点击确定后会出现UsernameToken部分:
到此已经完成所有步骤,可以愉快的请求server了~
Troubleshooting:
- 请求server时出现错误:A security error was encountered when verifying the message
server出现的错误信息:Caused by: org.apache.wss4j.common.ext.WSSecurityException: Invalid timestamp: The message timestamp has expired
原因和解决方式:
ws timestamp时间过期,需删除security节点重新添加ws timestamp和wss usernametoken
- 请求server时出现错误:A security error was encountered when verifying the message
server出现的错误信息:Caused by: org.apache.wss4j.common.ext.WSSecurityException: An error happened processing a Username Token: "A replay attack has been detected"
原因和解决方式:
ws UsernameToken中的Nonce中加密内容有当前时间,需删除security节点重新添加ws timestamp和wss usernametoken