Web Service 实现 SSO 的问题
原来已经有一个.NET写的SSO组件,编译生成的dll可以被.NET程序引用,实现单点登录。这个组件实现的方法是这样的。假设A、B两个系统都通过这个组件和验证服务器V连接,现在用户要访问A系统,首先A检查自己的Session,发现没有,然后就向V发送一个HTTP请求,检查V上的Session,发现也没有,于是重定向到V的登录页面。用户登录后,在V上写入一个Session,然后向A发送验证通过的信息,并把用户名、令牌等信息发送给A。A接收到之后,在自己的服务器上也写一个Session。这样用户再访问A的时候验证登录这块就不用再过V了。然后用户要访问B系统。同样的流程,B先检查自己的Session,发现没有,然后请求V。这时V已经有Session存在了,所以V向B报告用户信息,B接收到后写自己的Session。这样用户不用登录就可以继续访问B系统了。
现在为了实现跨平台应用,要求把这个组件改成Web Service形式。问题来了。由于原有的组件是检查Session方式判断用户是否已经登录的。如果使用Web Service,由于不是浏览器直接向验证服务器发送的HTTP请求,所以Session根本无效。
如果要求不改动原有的方式(所以把登录信息写数据库这样的方法是不能用了,就想办法找Session吧),又要在Web Service上实现单点登录,有没有什么办法可以做到呢?
[解决办法]
webservice 支持session,保持不保持在于客户端。
[解决办法]
有个问题,如果用WebService,你们的登陆页面就没了么?
不用Session,用Cache保持user/token的方式,客户端各自保持token,也是一个思路