在云计算平台,租户可以随时租用平台上所提供的服务,但这里面却存在一个隐藏的问题,登录验证怎么做?
我当时的第一反应是每个服务自己提供一套登录验证体系。但是随之而来的问题是,每次添加服务,租户下属成员,每次都需要重新申请登录名?同时用户为什么在使用其他服务时还需要再次登录?为什么需要这么麻烦呢?为什么不能做到新增、更改服务,对租户和其下属成员来说是透明的呢?为什么不能做到用户登录一次就可以使用全部服务呢?
这是因为我当时还没有把思想转变过来,还是在普通应用(服务)的开发上面。每次提到登录验证,就想着自己做一套出来。但是在云平台上面,这么做只会带来无穷的麻烦和痛苦。要想真正做到新增、更改服务,对租户和其下属成员来说是透明的,首先就要表现在登录上。只有提取出登录模块,做到统一登录,才做到真正透明。
但是问题又随之而来,就算把验证提取出来,那如何保存呢?把用户登录信息保存在哪里?每个应用(服务)需要去哪里判断用户是否登录,用户的权限呢?这就要使用统一登录授权管理。
统一登录授权管理核心是由三部分组成的,第一是用户权限库,第二是用户验证系统,第三是用户登录信息保存系统。
用户权限库:是保存用户登录信息,以及用户权限。同时该库应该支持云计算或为每个租户分配一个权限库。
用户验证系统:保证不同租户下属成员(包括租户)登录时,使用其对应的权限库,保证不会冲突。
用户登录信息保存系统:由于session不能跨站保存,但在云计算平台上,不同的服务可能是在不同的节点(可能在同一台服务器,也可能是不同的服务器),这样导致用户信息不可能直接保存在服务的session中。所以系统会把用户信息保存在独立的服务(统一登录授权)中,通过cookie来表示用户所登录过的用户名,和所在用户登录信息保存系统中的位置。这样只要用户登录过一次,则在用户登录信息保存系统中会驻留一个记录。这样在用户使用其他服务时,可以路由到此系统,来判断用户是否登录,以及用户所使用的权限。
微软的hotmail,msn等,在登录时全部都是使用这套体系。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:云计算初体验(三)之租户登录、验证、授权 - Python技术站