首页 > 国内新闻

一种全新的分布式用户认证架构设计

文章作者:来源:www.shijxysm.com时间:2019-09-29



我想在2天前分享前锋JAVA开发学院

前言

分布式用户身份验证,有一个简单的名称是单点登录,即无处不在。

更具体地说,集中式用户统一身份验证和分布式用户身份验证以及资源访问控制。

对于小型公司而言,服务较少,通常将用户身份验证和服务混合在一起,无法实现分布式用户身份验证的好处。

随着公司规模的扩大,提供越来越多的服务,将用户认证和服务提供分离,实现了分布式用户认证,可以减少系统的相互依赖,提高系统的可扩展性。

常见情况

一种基于普通令牌的方案。

该方案通常在用户登录后将用户信息存储在中央服务器中,并为客户端提供普通令牌。令牌用于在访问服务时识别用户。令牌只是一个哈希值,唯一的ID,而不是本身。包括用户信息在内,以区分令牌的真实性,需要中央服务器查询,这是一种集中式用户身份验证方案,易于使用,可伸缩性不高时。

本文介绍了一个新程序

基于JSON Web令牌(JWT)解决方案。

简而言之,JWT将用户的公共信息和信息签名组合成一个字符串,以确保该信息不会被伪造。有关详细信息,请参阅Internet上的信息。

JWT和基于哈希值的普通令牌之间的主要区别:

JWT本身包含用户的公共信息。

JWT可以在不查询中央服务器的情况下验证真实性。

这些特性使JWT非常类似于现实中的身份证,签证和其他证件。

在此方案中,用户登录后,中央服务器向客户端提供一个JWT,其中包含用户的公共信息以及用户权限和其他信息。此后,当客户端访问服务时,将JWT用作身份标识,并且服务提供者可以在不查询中央服务器的情况下验证JWT的真实性。

示范案例说明

以社区应用为例,功能模块如下:

用于发布讨论的论坛模块

实时通讯模块

收费教育视频模块

充电音乐模块

当然,以上四个部分需要用户认证。

这四个模块通常由四个项目团队完成。

作为一名建筑师,有两个重要想法:

假设这四个模块是由四个独立的公司开发的。

每个模块不仅被我们公司使用,而且还被其他公司使用

将API或服务服务设计为最终的独立产品,以便可以设计一个好的体系结构。

对于这个系统,让我们看看如何设计用户认证系统?

除了传统的着陆概念外,传统的着陆通常只是访问服务的地方。

在设计认证系统时,不要以为我们在设计软件系统,而只是在虚拟国家中设计一个国家。

看看该国家的分布式用户身份验证如何工作?

例如,在美国,移民局负责签发用户签证,而大学,酒店和公司则是各种服务提供商。

用户身份验证和服务提供在这里是分开的。

要进入美国,你必须先申请移民局这样的签证。

当用户持签证入住酒店时,酒店服务员将检查签证的真实性和有效性。

当用户申请居住企业的签证时,公司将检查签证的真实性、有效性以及权威性。如果是旅游签证,我很抱歉,旅游签证不能工作。

注:签证由入境事务处集中签发,核实资料确实已分发。

当酒店服务员核实签证时,他们不会打电话给移民局核实签证的真实性。

实际上,我们的用户身份验证系统只需要帮助这组机制。

统一的用户认证系统负责签发签证,当用户访问各种服务时,他们可以持有该签证。

在用户被认证后,我们可以编写用户的公共信息,如用户ID等,以及授权信息,如6个月的视频教程授权,1个月的音乐授权等,以便用户可以访问每个服务。

jwt防伪有两种签名机制。一种是基于secretkey的哈希机制,另一种是非对称签名机制。

第一种哈希机制,jwt创建和验证使用相同的密钥,只适合公司内部使用。与开放平台相对应,要向其他公司开放,需要使用非对称签名机制,所以创建和验证是两个秘密。密钥,保证令牌的集中分发。

分布式JWT用户身份验证问题。

分布式JWT用户身份验证的一个问题是,一旦发出令牌,它就无法登录,只能等待自身失败。

这不仅仅是JWT的问题。所有分发的验证文件都有此问题,包括身份证、签证、驾照等。

他丢失了驾驶执照,请去取消授权,但是取消将不会立即使丢失的驾驶执照失效,除非对驾驶执照进行集中验证。

这就是几乎所有文档都具有有效期的原因。

对应JWT,为了确保安全,我们可以使用相对较短的时间,同时通过一种贸易机制,确保安全。

这种机制与年度驾驶执照或签证续签中的生活有些相似,也就是说,不时进行审核和签发新许可证,因为无需人工操作,我们提高了这种审核的频率。

收款报告投诉

前言

分布式用户身份验证,有一个简单的名称是单点登录,即无处不在。

更具体地说,集中式用户统一身份验证和分布式用户身份验证以及资源访问控制。

对于小型公司而言,服务较少,通常将用户身份验证和服务混合在一起,无法实现分布式用户身份验证的好处。

随着公司规模的扩大,提供越来越多的服务,将用户认证和服务提供分离,实现了分布式用户认证,可以减少系统的相互依赖,提高系统的可扩展性。

常见情况

一种基于普通令牌的方案。

该方案通常在用户登录后将用户信息存储在中央服务器中,并为客户端提供普通令牌。令牌用于在访问服务时识别用户。令牌只是一个哈希值,唯一的ID,而不是本身。包括用户信息在内,以区分令牌的真实性,需要中央服务器查询,这是一种集中式用户身份验证方案,易于使用,可伸缩性不高时。

本文介绍了一种新的方案。

基于JSON Web令牌(JWT)的方案。

简而言之,JWT将用户的公共信息和信息签名组合成一个字符串,以确保不会伪造该信息。可以对Internet上的信息进行详细参考。

JWT与基于哈希的普通令牌之间的主要区别如下:

JWT本身包含用户的公共信息。

JWT可以在不查询中央服务器的情况下验证真实性。

这些特性使JWT与现实生活中的身份证,签证和其他文件非常相似。

在此方案中,用户登录后,中央服务器向客户端提供一个JWT,其中包含用户的公共信息以及用户权限和其他信息。此后,当客户端访问服务时,它将JWT标识为身份,而服务提供者可以验证JWT本身的真实性,而不必去中央服务器查询。

示范案例

以社区应用为例,功能模块如下:

论坛模块,用于发布讨论

实时通讯模块

收费教育视频模块

充电音乐模块

当然,以上四个部分需要用户认证。

这四个模块通常由四个项目团队完成。

作为一名建筑师,有两个重要想法:

假设这四个模块是由四个独立公司开发的。

每个模块不仅供我们公司使用,而且还供其他公司使用。

将API或服务设计为最终的独立产品,以便我们可以设计一个好的体系结构。

对于这个系统,让我们看看如何设计用户认证系统?

除了传统的着陆概念外,传统的着陆通常只是访问服务的地方。

在设计认证系统时,不要以为我们在设计软件系统,而只是在虚拟国家中设计一个国家。

看看该国家的分布式用户身份验证如何工作?

例如,在美国,移民局负责签发用户签证,而大学,酒店和公司则是各种服务提供商。

用户身份验证和服务提供在这里是分开的。

要进入美国,您必须先申请诸如移民局的签证。

当用户持签证入住酒店时,酒店服务员将检查签证的真实性和有效性。

当用户申请签证居住在企业中时,公司将检查签证的真实性和有效性以及授权。如果是旅游签证,对不起,旅游签证无法正常工作。

注意:签证是由移民局统一签发的,核实确实是分发的。

当酒店服务员核实签证时,他们不会打电话给移民局检查真伪。

实际上,我们的用户身份验证系统只需要帮助这套机制即可。

统一的用户身份验证系统负责签发签证,当用户使用各种服务时,他们可以持有该签证。

用户通过身份验证后,我们可以写入用户的公共信息(例如用户ID等)以及授权信息(例如6个月的视频教程授权,1个月的音乐授权等),以便用户可以访问每个服务。

JWT防伪有两种签名机制。一种是基于secretKey的哈希机制,另一种是非对称签名机制。

第一种Hash机制是JWT的创建和验证,使用相同的密钥,仅适用于公司内部使用。对应于开放平台,要向其他公司开放,您需要使用非对称签名机制,因此创建和验证是两个秘密。密钥,保证令牌的集中分发。

分布式JWT用户身份验证问题。

分布式JWT用户身份验证的一个问题是,一旦颁发了令牌,便无法注销令牌,只能等待其自身失败。

这不仅仅是JWT问题。所有分发的验证文件都存在此问题,包括身份证,签证,驾照等。

他丢失了驾驶执照,请去取消授权,但是取消将不会立即使丢失的驾驶执照失效,除非对驾驶执照进行集中验证。

这就是几乎所有文档都具有有效期的原因。

对应JWT,为了确保安全,我们可以使用相对较短的时间,同时通过一种贸易机制,确保安全。

这种机制与年度驾驶执照或签证续签中的生活有些相似,也就是说,不时进行审核和签发新许可证,因为无需人工操作,我们提高了这种审核的频率。