内容简介:用户经常需要使用不同的应用,每个应用一般都需要使用不同的账号,这给用户增加了管理多个账号的负担,如果将用户认证的功能委托给外部模块,既可以降低应用的部署难度,又能减少用户账号管理负担,并且让用户有一致性的体验。解决这个问题的方法之一就是使用联邦身份模式,不同应用都将认证的功能委托给可信任的第三方认证模块,这样认证和授权还能解耦。下面是这种模式的结构图:上图中,IdP或者STS作为身份认证中心,是Consumer和Service都信任的。Consumer要访问Service的资源时,被要求先进行身份认证,因此
1. 缘由
用户经常需要使用不同的应用,每个应用一般都需要使用不同的账号,这给用户增加了管理多个账号的负担,如果将用户认证的功能委托给外部模块,既可以降低应用的部署难度,又能减少用户账号管理负担,并且让用户有一致性的体验。
2. 解决方案
解决这个问题的方法之一就是使用联邦身份模式,不同应用都将认证的功能委托给可信任的第三方认证模块,这样认证和授权还能解耦。下面是这种模式的结构图:
上图中,IdP或者STS作为身份认证中心,是Consumer和Service都信任的。Consumer要访问Service的资源时,被要求先进行身份认证,因此Consumer事先就会通过IdP获取到请求token,然后在访问Service时携带该token,Service通过验证token就知道Consumer是否是合法的消费者,同时Service能判断是否Consumer有足够的访问权限,这属于授权的内容。
3. 需要考虑的问题
采用该模式时,往往身份认证中心就变成了一个单点,如果应用被部署到多个数据中心,一般也要就近部署一个身份认证模块来保持其可用性和可靠性。比较适合的使用场景是支持Single sign-on单点登录的系统。
4. 具体示例
下面这张图展示的是一个部署在Microsoft Azure上的SAAS应用的认证模型。
首先,用户请求自己公司的认证模块ADFS,获取到一个token,然后用户浏览器将该token转发到SAAS应用的认证模块Federation provider,获得后者认可的适用于SAAS应用的token。如果需要,Federation provider还会将token的部分内容进行某些转换,转换后SAAS应用也是可以识别的,最后再将token返回给用户。之后,用户访问SAAS应用时,SAAS应用将利用token里包含的信息对用户进行授权验证。
这样的话,用户不需要记住不同的账号以便可以访问公司内部资源和外部SAAS资源,公司的管理员也仅仅需要维护ADFS的信息,就能实现对用户账号和权限的管理。
微信扫码,进入【技术人成长】社群逛逛。
以上所述就是小编给大家介绍的《云设计模式之 : 联邦身份模式》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 设计模式——订阅模式(观察者模式)
- 设计模式-简单工厂、工厂方法模式、抽象工厂模式
- java23种设计模式-门面模式(外观模式)
- 设计模式-享元设计模式
- Java 设计模式之工厂方法模式与抽象工厂模式
- JAVA设计模式之模板方法模式和建造者模式
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。