java 开发WebService 中使用SoapHeader身份认证的问题
想要实现的功能是: webservice 提供login方法 客户端调用login后 webservice 验证用户名和密码正确后返回一个token并将token保存在webservice的session或是什么地方,客户端调用其它方法时只需要在header中加入token并与webservice中的token相匹配后就可以了调用了有没有类似的源码 求大神指教
可以发我邮箱1942058261@qq.com webservice 身份认证 java --------------------编程问答-------------------- token 为啥不持久化保存呢 --------------------编程问答-------------------- 这里验证就是除了login方法外 其它方法调用都需要验证 只有login方法不需要验证 网上找了下 所有验证soapheader的资料都是:public void invoke(MessageContext cfx) throws Exception {
if (cfx.getInMessage().getHeader() == null) {
throw new org.codehaus.xfire.fault.XFireFault("请求必须包含验证信息",
org.codehaus.xfire.fault.XFireFault.SENDER);
}
Element token = cfx.getInMessage().getHeader()
.getChild("Authentication");
if (token == null) {
throw new org.codehaus.xfire.fault.XFireFault("请求必须包含身份验证信息",
org.codehaus.xfire.fault.XFireFault.SENDER);
}
String username = token.getChild("Username").getValue();
String password = token.getChild("Password").getValue();
try {
// 进行身份验证 ,只有test@test的用户为授权用户
if (username.equals("test") && password.equals("test"))
System.out.println("身份验证通过");
else
throw new Exception();
} catch (Exception e) {
throw new org.codehaus.xfire.fault.XFireFault("非法的用户名和密码",
org.codehaus.xfire.fault.XFireFault.SENDER);
}
}
问题是这样验证 那么连login方法也需要验证了。。。我是要求login方法不需要验证 相当于web里的 登录不需要检查session 只有登录成功了才会生成session 并可以验证 --------------------编程问答--------------------
你所说的token持久化是指webservice将token保存到数据库中? --------------------编程问答-------------------- 是的 --------------------编程问答-------------------- 再说明一点需求:现在要做一个有身份认证的webservice 暴露在外无需认证的只有一个login(username,password)方法 客户端要调用之前需要先login 当login成功后服务器端会返回一个唯一标识token 在会话期内客户端再调用其它方法时只需要将token放到soapheader中就可以了 服务器端会在session中查找是否有token这个标识 有则可以调用 无则拒绝。 --------------------编程问答-------------------- 有没有大神 有做过类似的给支支招啊! --------------------编程问答--------------------
补充:Java , Web 开发