美文网首页
Identity and Access 身份认证

Identity and Access 身份认证

作者: TimLi_51bb | 来源:发表于2020-07-05 13:07 被阅读0次

SSO原理

SSO系统是单独部署的一套认证系统,独立于所有子系统,包含登录认证、授权、用户管理功能。用户需要登录任意业务子系统时,都被重定向到认证中心,通过认证中心登录认证后,就会设置一个全局会话并重定向到子系统。子系统与验证中心通信验证Ticket的真伪,如果Ticket为真则将受保护资源返回给用户。

单点登录英文全称Single Sign On,简称就是SSO。它的解释是:在多个应用系统中,只需要登录一次,就可以访问其他相互信任的应用系统。

用户访问app系统,app系统是需要登录的,但用户现在没有登录。

跳转到CAS server,即SSO登录系统,以后图中的CAS Server我们统一叫做SSO系统。SSO系统也没有登录,弹出用户登录页。

用户填写用户名、密码,SSO系统进行认证后,将登录状态写入SSO的session,浏览器(Browser)中写入SSO域下的Cookie。

SSO系统登录完成后会生成一个ST(Service Ticket),然后跳转到app系统,同时将ST作为参数传递给app系统。

app系统拿到ST后,从后台向SSO发送请求,验证ST是否有效。

验证通过后,app系统将登录状态写入session并设置app域下的Cookie。

OAuth2

SP(Service Provider): 向用户提供正式商业服务的实体,通常需要认证一个用户的身份;

IDP(Identity Provider): 提供用户的身份鉴别,确保用户是其所声明的身份

断言 (Assertions) 即信息:断言是在 SAML 中用来描述认证的对象,其中包括一个用户在什么时间、以什么方式被认证,同时还可以包括一些扩展信息,比如用户的 Email 地址和电话等等。

准确来讲,OAuth2是一个授权的标准协议。也许会令人困惑,OAuth2是OpenID-Connect的基础,但是OpenID-Connect是认证协议(在OpenID-Connect中,ID-Token也被当做是一种资源)。

让我们回到OAuth2,OAuth2提供了一种代理访问机制,也就是说一个应用(可以被称为客户端)可以代替用户到资源服务器上获得属于用户的资源或是进行符合用户权限的操作 ,而用户不用将自己的用户名和口令等身份凭据分享给客户端。OAuth2是通过IDP给第三方应用颁发令牌(Token)来实现以上功能的,第三方应用通过使用令牌向资源服务换取对应的资源。

在Twitter的OAuth指导手册中说OAuth2是一种认证协议,实际上,这是基于授权的“伪认证”。

OAuth协议的认证过程可以类比为如下流程:Alice要外出一段时间,让自己的朋友Bob代为照顾她的房子,所以Alice把自己房子的钥匙交给了Bob,而Bob也就可以任意的进入房子。这里的钥匙就是一种授权的体现——Alice授权Bob进入房子。在这里例子中,房子的所有者Alice就是用户,Bob是客户端,而门锁就是IDP,房子是资源服务器。

SAML

SAML协议是三者中时间最长的协议,最初版本制定于2001年,并于2005年修改。作为一种安全性断言标记语言,SAML协议既可以用于认证也用于授权。

所谓的安全性断言,就是关于认证、授权以及用户属性(比如用用户的有效或者住址等信息)的声明集合,在SAML中,这些断言以XML的格式传输。

当要验证一个用户身份时,服务提供商(Service Provider, SP,即RP,应有依赖方)会向IDP发出SAML认证请求,该请求中会以XML格式说明认证方式的设置,比如希望IDP以何种方式验证用户;IDP在认证通过用户身份之后,会返回SAML请求响应,同样以XML格式返回断言表明用户身份和相关属性,此外SAML安全性断言信息必须要使用数字签名以保证其完整性和不可抵赖性(没有强制要求对SAML断言加密);SP接收到SAML断言之后,验证其消息来源是否费受信任的IDP,验证通过之后解析XML获得认证信息。

除了断言,SAML还定义了如下概念:

协议(protocols):如何请求和响应断言信息;

绑定(binding):SP和IDP之间如何通信和传递数据;

配置描述(profiles):用来设置断言、协议和绑定的中所需要使用的变量。

RBAC是什么?

RBAC  是基于角色的访问控制(Role-Based Access Control)在 RBAC  中,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限。这就极大地简化了权限的管理。这样管理都是层级相互依赖的,权限赋予给角色,而把角色又赋予用户,这样的权限设计很清楚,管理起来很方便。

一是鉴权管理,即权限判断逻辑。

   1. 最基本的权限管理就是菜单管理,用户没有权限的功能模块在菜单节点上是不显示的。(很多人以为这就是权限管理!)

      示例:普通业务人员登录系统后,是看不到【用户管理】菜单的。

二是授权管理,即权限分配过程。以上的权限管理内容都要通过系统的授权功能来分配给具体的用户,授权功能应该足够灵活。

相关文章

网友评论

      本文标题:Identity and Access 身份认证

      本文链接:https://www.haomeiwen.com/subject/zacvqktx.html