美文网首页微服务
微服务架构中,基于OpenIDConnect协议的NGINX单点

微服务架构中,基于OpenIDConnect协议的NGINX单点

作者: 橄榄树下的托马斯 | 来源:发表于2017-05-07 00:18 被阅读0次

    作者:刘宾, thomas_liub@hotmail.com
    请尊重作者著作权,转载请注明出处,谢谢!


    系统组成图

    单点登陆流程

    用户首次登陆访问

    1. 用户首次访问服务
    2. 服务网关(OpenIDConnect RP client)识别用户首次访问,并redirect到用户认证服务器(OpenIDConnect OP Server)
    3. 用户认证服务器识别用户首次访问,要求用户登陆
    4. 用户完成登陆
    5. 用户认证服务器分配授权码,并redirect请求回源服务
    6. 服务网关识别用户请求,持授权码向用户认证服务器索取访问令牌,用户ID令牌,如成功则追加用户信息到请求头,并传递请求到后续服务
    7. 后续服务(前端服务或后端服务)完成请求
    8. 服务网关和用户建立有效会话(cookie)

    用户已经登陆认证服务器,首次访问其他服务

    1. 用户访问服务
    2. 服务网关识别用户首次访问,并redirect到用户认证服务器
    3. 用户认证服务器识别用户已经登陆,则直接分配授权码,并redirect请求回源服务
    4. 服务网关识别用户请求,持授权码向用户认证服务器索取访问令牌,用户ID令牌,如成功则追加用户信息到请求头,并传递请求到后续服务
    5. 后续服务(前端服务或后端服务)完成请求
    6. 服务网关和用户建立有效会话(cookie)

    用户在该服务拥有有效会话后的后续访问

    1. 用户访问服务,携带有效会话ID(cookie)
    2. 服务网关识别会话,向认证服务器发起访问令牌验证请求
    3. 认真服务器识别访问令牌,回复用户信息
    4. 如有效访问令牌,则追加用户信息到请求头,并传递请求到后续服务;如无效访问令牌,则直接拒绝请求

    用户登出

    1. 用户向任意服务发起登出请求,携带有效会话ID(cookie)
    2. 服务网关识别并完成用户会话清除,随后redirect登出请求到认证服务器
    3. 认证服务器完成用户会话清楚,随后redirect回源服务缺省网页
      1. 方案一,认证服务器清除该用户所有已颁发的访问令牌,即立即使所有相关服务失效
      2. 方案二,认证服务器保留该用户所有访问令牌,待其自行失效。访问令牌有效期为1小时

    后续服务获取用户信息

    • get_current_user()方法
      • 返回user_id, user_name...
    • set_current_user()方法
      • 当前端服务调用后端服务时,可以设置当前用户

    相关文章

      网友评论

        本文标题:微服务架构中,基于OpenIDConnect协议的NGINX单点

        本文链接:https://www.haomeiwen.com/subject/kwcuzttx.html