权限验证和单点登录演员的不变的话题

整合有任务让我们了解一下,当前自己项目中使用的验证方式,虽然有很多文档,但是基本上觉得都有问题,不太友善,极难阅读。

但是根据资料,基本上知道他们使用的是SAML,然后自己扩充了一个SSO框架。

但是SAML 仅仅是目前几种大众方式中的一种,另外还有OAuth2,OpenID,OpenIDConnect。

相关的资料我看了两天,说真的,不同人的陈述不一样,而长篇的官方文档我也不忍阅读。

于是乎,我决定以Google家的为主,重在说明流程和使用,至于那些优劣点,我真的比不上那些高手,也没有什么使用的过经历。

首先说下SSO,其实都有感触,用过T大哥的产品都知道,QQ登录一次,基本上一段时间内,各个可以使用他家登录的都是免登陆。

按照老外的总结,SAML,OAuth2,OpenID,OpenIDConnect 都可以做单点登录。

但是这里提出一点OAuth2其实并不算是支持SSO,但是建立在它之上的OpenID确实支持的。而OpenID Connect 可以说是OpenID 的一个升级,OpenID 是去中心的验证,也就是随便一个机构都可以证明你的身份,但是这个机构也是可以伪造啊,所以OpenID Connect其中就有众多IT大头支持,其目的,我推测是如果用户都用他们的数据进行SSO,那么用户珍贵的数据就掌握在他们手里,用户喜欢去哪个网站都是轻而易举。

SAML

Concept

关键是联邦身份Identity Federation (IdP IDP)

包括了三个主要的实体 * SubJect(主题):包括User\Entity|WorkStattion等能够象征一个参与信息交换的Subject

  • RelyingParty(信任方):ServiceProvider,也就是提供服务的一方
  • Asserting Party (断言方): Identity Provider ,用于提供对
  • Subject 身份信息的所有断言,一个认证机构 SAML 的 2 种典型模式

SP 主动从IDF 获取(拉)!

IDF 主动送到SP (推)!

区别两方式 ,有IDF 对断言进行签名,然后自动重定向到SP(Service Provider),SP看到证书,校验签名

关于SAML 我想到此为止吧,流程和要点如上,SAML其实也是非常的成功,在很多Enterprise的情况下被使用,截止我写的时候还是2.0

SAML&SSO

之前说到 SAML也是支持SSO,那么如何支持的呢?

Google DEV SAML SSO

如图所示,我觉得G大哥的说明也不长,也就懒得去翻译了挺没意思.

OAuth 2.0

OAuth 其实一开始1.0的时候被人吐槽非常的厉害,2.0 的时候已经好了很多,之前也爆出过很多安全问题,其实主要是因为OAuth是一个规范,同时确实有很多的实现,但是很多人在实现的时候,都是实现了简陋版,OAuth其实有4个模式,主推的Authorization Code 模式目测是较为严格的。

注意OAuth才不是SSO,有个非常有意思的争辩

OPENID

是authentication 证明是该用户,主动提供验证机构的名称,让RelyingParty 去找,

OAuth

是authentization 关注授权,针对的是谁是资源的归属人

此外OAuth绝不是SSO(Single Sign On)

至于为什么有待研究,目前可以知道的是他是关注资源

OpenID

OpenID是authentication 证明是该用户。

自己主动提供验证机构的名称,让RelyingParty 去找,IDP 是需要用于User去主动Sign In,登录的时候让RP信任的IDP进行验证。

OpenID的去中心化其意在消除web 管理者负责安全管理的事物,同时,没人用户会喜欢成天注册账号。

OpenID2.0 vs OAuth2.0

弄了一张WIKI的图我觉得非常的清晰了。

OAuth是根据资源来有限请求的

OAuth 是authentization 关注授权,针对的是谁是资源的归属人

ederated-identities-openid-vs-saml-vs-oauth

个人觉得里面的总结也是非常的棒的

OpenID Connect

OpenConnect 就是一个OpenID,只不过API更为友好,原生支持和mobile应用,同时OAuth是集成在protocol自带。

SSO

SSO 我个人已经理解的是CAS模式

http://blog.chinaunix.net/uid-8794145-id-2454348.html