用户管理微服务

自己要写一个用户管理系统,为其他服务提供所有和用户相关的服务。

提供服务的接口方式:HTTP和RPC,要提供SDK,以便其他服务可以方便地调用。

用户认证方式主要以下几种:

1、OAUTH认证;

2、CAS认证;

对于客户端的登录验证,无论是PC,M站还是app,都不使用基于cookie的认证,而是使用基于JWT的认证。

我希望在年底前,可以出来一个版本。

注册登录方式:

1、用户名密码;

2、手机号验证码登录;

3、第三方账号登录;

...............................................分割线...........................................................................................................................................

一、需求

主要是要为商城各个服务提供用户认证功能,所有与用户相关的功能实现均在该系统种。

实现的功能主要有:

  1. 用户注册;
  2. 用户登录;
  3. 用户退出;
  4. 用户修改密码;
  5. 用户忘记密码;
  6. 为客户端提供 token 认证;
  7. 用户信息提供。

用户操作可通过原有的用户名密码登录,也可以通过手机号验证登录,手机号可验证每一种操作。当然,目前来看,即使是 PC 端,请希望能够通过手机号注册,不必再提供繁琐的注册操作,同时也可以避免注册用户忘记用户名。

安全性:为了防止作弊,保证系统安全,注册用户必须要加一层验证机制,目前常用的就是通同一个号码第一次验证,会使用图片滑动方式,第二次操作不需要滑动图片。此外,同一个手机号,同一天有次数限制。

所有 HTTP 接口均提供 HTTPS 协议,不能支持 HTTP 协议。

所有数据的传输都应该加密。

二、设计

1 、提供服务方式:

1 HTTP

2 RPC

两种方式都要给出对应的 SDK.

2 、注册登录退出的认证方式:

1 CAS

2 OAUTH

3 )第三方账户授权登录;

3 )所有渠道均使用 JWT 验证用户;

用户的角色分别应该分为:管理员,运营人员,普通用户,其他的角色就不要再加了。

三、接口文档;

  1. 用户注册;
  2. 用户登录;
  3. 用户认证;
  4. 用户退出;
  5. 生成 Token;
  6. 校验 Token;
  7. 发送验证码;
  8. 校验验证码;
  9. 忘记密码;

10 、修改密码;

调研小米账号系统:

1、小米系统对外使用的是OAUTH2协议,所有接入小米账号的业务系统在登录时,都会跳转到小米账号走相应的登录流程。

https://account.xiaomi.com/pass/serviceLogin?sid=miotstore&_bannerBiz=miotstore&callback=https://shopapi.io.mi.com/app/shop/auth?logid=1585100955.329728189&sign=b68fa5d7a0c9d5c5b6652293c994f293&followup=https%3A%2F%2Fwww.xiaomiyoupin.com%2Fdetail%3Fgid%3D102347%26pid%3D12582%26spmref%3DYouPinPC.%24Home%24.list.0.33152428

2、此外,小米账号系统集成了第三方社交账号登录。这使得小米的所有业务部门都不需要自己去第三方接入,都直接通过小米账号系统去走。

比如QQ,当我们用QQ第三方登录的时侯,会跳转到如下链接:

https://graph.qq.com/oauth2.0/show?which=Login&display=pc&response_type=code&client_id=100284651&redirect_uri=https://account.xiaomi.com/pass/sns/login/load&state=STATE_305391

redirect_url是小米账号系统的一个回调地址。 https://account.xiaomi.com/pass/sns/login/

小米账号系统作为客户端向QQ认证服务器发请求和交互。拿到access_token之后,会判断该账号是否已经在小米账号系统有关联数据,如果没有则创建一个关联用户,如果有,则直接会返回统一格式的token给业务系统,表示登录成功。以后所有的地方都会用到这个token。service_token里包含小米用户的id。

这个token必须要用到一定的加密算法,保证安全。这个地方需要好好调研。

它在系统中用到了sid(业务系统id),unionid ,uid.

open_id 各App用于唯一标识用户的ID:同一用户每个App不一样
union_id 各开发者用于唯一标识用户的ID:同一个用户,每个开发者名下的各App,为同一个ID
user_id 小米帐号系统中的帐号ID

对于跳转到登录前页面的做法是,点击登录前,必须传给帐号系统希望回去的url(每个客户端发请求的时侯都应该加一个query string,比如 ?followup=http://hbnnforever.cn    )字段的key由帐号系统服务端定夺。

目前,已经完成了第一版的用户管理服务,采用spring oauth2实现,目前支持授权码形式,并用python写好了一版SDK,在任何地方都可轻松实现调用。token加密解密算法采用AES,并存储在Redis中。资源服务器(Resource Server)和认证服务器部署在了一起,主要是为了方便。

目前已经完成了OUATH2的整体流程,上面功能基本可以实现了,下面要做的事情:

1、实现手机短信登录;

2、实现社交帐号登录;

3、用户管理平台,可管理当前用户和接入平台。

注册流程:

登陆流程:

--------EOF---------
微信分享/微信扫码阅读