示例场景:
1.用户试图访问受保护的资源,但未经过身份验证。
2.应用程序将用户重定向到SSO服务器。
3.如果经过身份验证,则用户从SSO服务器获取令牌。
4.SSO重定向到原始应用程序。
5.原始应用程序根据SSO服务器检查令牌。
6.如果令牌正确,则允许访问,并且应用程序知道用户ID。
7.用户执行注销并同时从所有连接的应用程序中注销(单点注销)。
据我所知,这正是CAS发明的目的。 CAS客户端必须实现CAS协议才能使用身份验证服务。 现在我在考虑在客户端(消费者)站点使用CAS或OAuth。 OAuth是否可以替代CAS的这部分? 作为新的事实标准,OAuth是否应优先考虑? 是否有易于使用的(非Sun OpenSSO!)替代CAS的身份验证部分,支持不同的方法,例如用户名/密码,OpenID,TLS证书...?
- 不同的应用程序应该依赖于SSO服务器的认证,并使用类似会话的东西。
- 这些应用程序可以是GUI Web应用程序或(REST)服务。
- SSO服务器必须提供用户ID,这是从集中用户信息存储获取有关用户更多信息(例如角色、电子邮件等)所必需的。
- 应该可以实现单点注销。
- 大多数客户端都是用Java或PHP编写的。
我刚刚发现了WRAP,它可能成为OAuth的继任者。这是由Microsoft、Google和Yahoo指定的新协议。
补充说明
我了解到OAuth并不是为身份验证而设计的,即使它可以与像OpenID这样的SSO服务一起使用来实现SSO。
对我来说,OpenID似乎是“新的CAS”。CAS具有一些OpenID缺失的功能(如单点注销),但在特定情况下添加缺失的部分应该不难。我认为OpenID得到了广泛接受,最好将其集成到应用程序或应用程序服务器中。我知道CAS也支持OpenID,但我认为有了OpenID,CAS就可以被替代。