• 微服务架构项目open-cloud的认证方式及单点登录应用


    上次说道,我目前在做的一个项目,用的是基于一个叫open-cloud的微服务框架。(微服务框架open-cloud应用及部署

    该框架基于SpringCloud,认证使用oAuth2。见官方网站。虽然这个框架是几年前出来的,目前已经没有维护了,但对于我来说,仍然是学习的对象。

    oAuth2的模式

    我目前在做的项目,包含几个子系统,很自然的,需要用到单点登录。前面说到,open-cloud使用的是oAuth2的认证方式,但又可以细分为几种模式:
    1)密码模式
    输入账号口令,提交到 /oauth/token,返回token

    2)授权码模式
    打开子应用系统页面,发现未登录,则子应用系统会引导到uaa(open-cloud中负责认证的子系统),如:

    http://localhost:8211/oauth/authorize?response_type=code&client_id=1553588629729&redirect_uri=http://www.baidu.com
    
    • 1

    然后uaa响应,输出一个login页面。uaa是一个前后端不分,自带页面的子系统。
    在这里插入图片描述
    输入账号,口令后,提交到uaa后,uaa返回到应用子系统。

    3)客户端模式(client_credentials)
    没用到,略过不提。

    在我们项目中,前2种方式都用了,大部分子系统用第一种,另外一个子系统属于拿现成系统修改集成,它用的是第二种。那么,如何进行单点登录呢?

    多种oAuth认证模式下,如何打造单点登录

    很简单,只要大家使用相同的appId,apiKey,secretKey就可以了。框架自然就实现了单点登录。比如用第一种模式页面进行了登录,那么打开那个集成子系统,会发现它也已经登录。
    在这里插入图片描述
    第一种模式的配置

    exports.auth = {
      appId: "1666247793941",
      appKey: "b9y6VrLFeBcRRr1rWfZnP7x4",
      appSecret: "pWB0wbsndaQVH61Q15bZ8mJ6RLJcRolK",
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5

    第二种模式的配置

    #oauth2客户端配置
    security:
      oauth2:
        client:
          client-id: b9y6VrLFeBcRRr1rWfZnP7x4
          client-secret: pWB0wbsndaQVH61Q15bZ8mJ6RLJcRolK
          access-token-uri: http://192.168.10.8:8212/oauth/token
          user-authorization-uri: http://192.168.10.8:8212/oauth/authorize
        resource:
          token-info-uri: http://192.168.10.8:8212/oauth/check_token
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    而且,并不需要大家指向同一个uaa。uaa是open-cloud的认证中心,我在测试的时候,部署了2个uaa,分处于不同的服务器,IP完全不一样,但这并不影响各子系统使用单点登录。可以推测系统产生的token,不是存在数据库,就是存在redis。事实证明,服务器端产生的token保存于redis,登录以后,将redis的数据清掉,子系统将会登出。

    由此也可知,open-cloud提供的后台,有一个菜单项叫“应用管理”,那像我这种情况,应该是整个项目,不管有多少个子系统,都应该是同一个应用系统,而不是每个子系统定义一个应用。
    在这里插入图片描述

  • 相关阅读:
    java-php-python-知道特产网计算机毕业设计
    在地图上可视化地理空间数据的12种方法
    【C++】1079:计算分数加减表达式的值(信息学奥赛)
    Celery快速使用(定时任务、Django中使用Celery、秒杀逻辑、双写一致性)
    疗养院无线wifi短信认证方案
    解决:谷歌浏览器访问http时,自动转https访问的问题
    对无符号数和%u打印的了解
    Day55 web框架 入门 Django
    JavaMail连接Office 365使用XOAUTH2身份认证
    tkinter制做一个音乐下载小软件,多种音乐免费听
  • 原文地址:https://blog.csdn.net/leftfist/article/details/127755821