与CAS或OAuth的SSO?
我想知道是否应该使用CAS协议或OAuth +某些身份验证提供程序进行单一登录。
示例方案:
据我了解,这正是CAS发明的。 CAS客户端必须实施CAS协议才能使用认证服务。 现在我想知道在客户(消费者)网站上使用CAS或OAuth。 OAuth是否替代CAS的那部分? OAuth应该成为新的事实标准吗? 是否有一种易于使用(不是Sun OpenSSO!)替代CAS的认证部分,支持不同的方法,如用户名/密码,OpenID,TLS certifactes ...?
语境:
我刚刚发现了WRAP,它可能成为OAuth的继任者。 这是微软,谷歌和雅虎指定的新协议。
附录
我了解到,OAuth并非专门用于身份验证,即使它可以用于实现SSO,但只能与OpenID之类的SSO服务一起使用。
OpenID在我看来是“新CAS”。 CAS具有OpenID未命中的一些功能(如单点登出),但不应该很难在特定情况下添加缺失的部分。 我认为OpenID已被广泛接受,最好将OpenID集成到应用程序或应用程序服务器中。 我知道CAS也支持OpenID,但我认为CAS是OpenID的可有可无。
OpenID不是CAS的“接班人”或“替代者”,他们不同,意图和实施。
CAS 集中认证。 如果您希望所有(可能是内部的)应用程序要求用户登录到单个服务器(所有应用程序都配置为指向单个CAS服务器),请使用它。
OpenID 分散认证。 如果您希望您的应用程序接受用户登录他们想要的任何身份验证服务(用户提供OpenID服务器地址 - 实际上,“用户名”是服务器的URL),请使用它。
以上都没有处理授权(没有扩展和/或定制)。
OAuth处理授权,但它不能代替传统的'USER_ROLES表'(用户访问)。 它为第三方处理授权。
例如,您希望应用程序与Twitter集成:用户可以允许它在更新数据或发布新内容时自动发送推文。 您希望代表某个用户访问某些第三方服务或资源,而无需获取其密码(这对用户来说显然是不安全的)。 该应用程序要求Twitter访问, 用户授权(通过Twitter),然后该应用程序可以访问。
因此,OAuth不是关于单一登录(也不是CAS协议的替代)。 这不是关于你控制用户可以访问什么。 它是关于让用户控制他们的资源如何被第三方访问。 两种截然不同的用例。
根据您所描述的背景,CAS可能是正确的选择。
[更新]
也就是说,如果您将用户的身份视为安全资源,则可以使用OAuth实施SSO。 基本上,这就是'用GitHub注册'和类似的东西。 可能不是协议的最初意图,但可以完成。 如果您控制OAuth服务器,并限制应用程序仅对其进行身份验证,那就是SSO。
没有标准的方法来强制注销,但(CAS有这个功能)。
我倾向于这样想:
如果您控制/拥有用户身份验证系统并需要支持需要集中身份验证的异构服务器和应用程序集,请使用CAS。
如果您想支持您不拥有/支持的系统(例如Google,Facebook等)的用户身份验证,请使用OAuth。
OpenID是一种认证协议,OAuth和OAuth WRAP是授权协议。 它们可以与混合OpenID扩展结合使用。
我强烈希望看到人们建立在具有很大动力(更多可用支持,更容易获得第三方参与)的标准之上,即使它们不适合手头的应用程序。 在这种情况下,OAuth有动力,而不是CAS。 您应该能够完成所有或至少几乎所有需要使用OAuth执行的操作。 在将来的某个时间点,OAuth WRAP应该进一步简化事务(通过使用不记名令牌并将加密推送到协议层,它会进行一些有价值的折衷),但它仍处于初期阶段,同时,OAuth可能会很好地完成这项工作。
最终,如果您选择使用OpenID和OAuth,那么您可以使用更多的库来获取更多的语言,并为需要与系统集成的其他人提供更多的语言库。 你也有更多的眼球看着协议,确保他们真的像他们应该是安全的。
链接地址: http://www.djcxy.com/p/8403.html