Keycloak单点登录平台

转载:

Keycloak单点登录平台

http://ctolib.com/topics-123204.html

用一句Keycloak官方语言来解释,“为现代应用系统和服务提供开源的鉴权和授权访问控制管理”。Keycloak实现了OpenID,Auth2.0,SAML单点登录协议,同时提供LDAP和Active Directory,以及OpenID Connect, SAML2.0 IdPs,Github,Google等第三方登录适配功能,能够做到非常简单的开箱即用。但是在实际上,如果想稍微顺利的添加配置,还是需要简单的了解SSO,若想要配置更加复杂的场景,则需要了解对应的协议。

原理概念普及


(图片来自: SAML2.0 wiki )

上图 是使用SAML协议时,用户首次登录的一种最常用的工作流(SP Redirect Request; IdP POST Response),也是Keycloak的默认方式(当选择SAML协议时),如果忽视传输内容(SAML基于xml传输,OpenID普通文本)的不同,这种工作流程与OpenID的流程非常相似,可以用它来大致了解登录流程

用户请求Service Provider(简称SP),通过SessionID判断是否存在已鉴权的Context,否则返回302,重定向至Identity Provider(简称IdP),并携带参数,IdP检测是否已经存在鉴权Context,否则要求用户提供凭证(例如普通的用户名密码输入框),成功后返回302,并将数据返回给SP。在此流程中,单点登录能够做到的非常关键的一点就是Web中的鉴权Context,这种方式的实现原理也就是利用了Cookie(Web Session的实现),多个SP对应一个IdP,任一台SP登录成功,IdP即有了鉴权Content,随后其他SP即可直接登录,这个过程可简单的观察浏览器地址栏变更或查看浏览器网络请求过程。

另一种方式是针对提供RESTFull Api的服务,这种情况下必须使用OpenID Connect协议,这种协议建立在Auth2.0之上,所以,可以将access_token通过Http头的方式来获取权限信息。

 

 

 

 

 

 

 

 

 

 

 

 

猜你喜欢

转载自huangqiqing123.iteye.com/blog/2410462