单点登录解决方案

本文只是简述单点登录解决方案,系统其他方面均省略


如上图:系统基本架构

FR与ES分为两个不同的子项目,前端请求均通过访问FR,由FR通过HttpURLConnection访问ES(赋能层),FR主要作用为登录鉴权。大致请求流程如下:

1、Password MD5单向加密成新的Password

(1) 如:localhost:8080/xxxmanager-fr/loginServlet?name=xxxx&password=123456

(2) 密码加密之后  password=asdf2jyf7q2g7hg723faklkh83;


2、根据相应规则生成请求流水号:id(如时间戳,可自定义生成规则)

(1) id = 123123123
3、id同其他参数一起进行ASSCII码排序

(1) 根据参数名进行ASCII码排序 如排序后:String param =  "id = 123123123&name=xxxx&password=asdf2jyf7q2g7hg723faklkh83";
4、对所有参数进行单向加密生成sign(数字签名)

(1)加入加密密钥 KEY

比如 KEY=d2adf53jd7sha7qdkdhd127d(KEY生成规则自己定);

String param =  "id = 123123123&name=xxxx&password=asdf2jyf7q2g7hg723faklkh83&key=d2adf53jd7sha7qdkdhd127d";

(2)对 字符串 param 进行单向加密生成sign(最好MD5单向加密)

比如加密后 sign= 12d6wdjdka3939yf6dd6dyw729dhey;

5、FR通过HttpURLConnection访问ES

url = localhost:8080/xxxmanager-es/loginAuth?id = 123123123&name=xxxx&password=asdf2jyf7q2g7hg723faklkh83&sign= 12d6wdjdka3939yf6dd6dyw729dhey;


6、ES收到请求之后,和以上步骤一样,取得所有参数,通过同样的加密密钥加密所有参数生成sign

(1) 请求流水号 id 由FR生成,作为参数传入ES,ES不需要自己生成

(2)根据用户名数据库查询 密码是否一样(数据库中用户密码MD5加密存储),比较密码是否一样

(2)比较FR传入的sign和ES生成的sign是否一样,一样则通过,否则返回 数字签名校验失败

(3)如果sign通过,根据用户名数据库查询 密码是否一样(数据库中用户密码MD5加密存储),比较密码是否一样



工作忙,还没写完,尽快补齐





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值