• REST API权限集成设计


    REST API权限集成设计#

    应用分为两大部分,前端html+后端Rest服务,前端html和后端Rest服务部署完全分离。
    目标:可访问资源都处于权限控制之下(意味着通过浏览器地址栏的任意url都会被拦截),并提供跨域访问支持。


    项目模块#

    前端模块:应用界面,通过rest接口与后台交互。
    后端模块:UPM(用户权限管理)模块+数据服务(包含多种数据来源,比如本地DB、第三方服务等)统一作为Rest封装层。

    应用模块权限访问交互流程#

    Token##

    • Client和Server交互的令牌,相当于客户端和Server交互的唯一id,绝大部分(登录时不需要)Client请求都会带上此id,和SessionId类似,只是它不必受限于单个Web容器并能够自定义Token的过期时间、生成策略。
    • 对于一个独立用户,Server和UPM共用相同的Token
    • Token包含tokenid+userid+其它辅助信息.

    UPM##

    UPM提供对整个应用系统中关于资源和用户角色关系的权限配置,并且对外提供认证和授权的接口。

    Token Manager##

    维护Token生命周期,可配置Token的过期时间,Token Mananger维护一张hash表,k为用户id,v为Token,每次用户请求匹配token时自动检查Token是否过期,如果过期,则返回过期的状态码。
    Token指标:Token使用次数、Token过期时间
    Token使用次数:如果客户端请求次数大于了Token默认设定请求次数,则需要重新生成Token,但无需重新登录。
    Token过期时间:超过Token过期时间的请求将会触发重新登录。

    登录权限交互流程##

    业务流:用户登录(login.html)访问,输入用户名和密码后访问主页(index.html)

    登录权限交互流程:
    login

    • 用户访问Client静态资源login.html,填写用户名和密码并执行登录
    • 用户名和密码被传递到UPM
    • UPM执行认证(authentication),校验用户名和密码
    • 认证通过后执行授权(authorization),获取和当前用户关联的所有可访问的资源
    • 如果上一步执行成功,UPM将请求TokenManager创建Token,若不通过则返回错误码(授权、认证错误码不同)
    • UPM将token+授权数据返回给客户端
    • 客户端收到token+授权数据展现index.html给用户(index.html可能存在多个模块,需要控制页面展示)

    备注:Client端需要处理从UPM端返回的数据,包含Token和状态码,如果状态码不是成功标识,依据具体的状态码转向特定页面,否则登录成功,存储Token(比如存储到Cookie),并跳转到首页。

    登录后资源访问##

    业务流:假定用户进入index.html存在一个rest资源链接,对应rest服务"/audience/report",用于请求最新的人群报告,人群报告展示页面为audience.html

    备注:此时用户已登录,Client的Cookie中已存在Token

    人群报告权限交互流程:
    business

    • 用户点击"人群报告"链接(rest url=/audience/report)
    • 客户端发送请求(包含user+rest url+ token)给UPM
    • 客户端发送请求(rest url=/audience/report + token)发给Server
    • Server匹配token,UPM授权rest url,如果token未过期并且匹配成功并且upm授权成功将调用实际业务处理流获取数据,否则返回错误码
    • 将数据和Token信息返回给客户端
    • Client依据Server的数据渲染人群报告页面展现给用户

    前后端交互备注#

    • 前端的所有请求,除登入请求之外,其它所有请求都在header中附带用户id(userId)和令牌(tokenId)传递给服务端。
    • 任何请求都必须带令牌,若无令牌,直接rest url访问目标资源,则返回登录页。
  • 相关阅读:
    人工智能数学基础 | 微积分 | 02
    【SAP】SAPERP(MM)用語集
    测试开发进阶——常用中间件概念——JMS(Java消息服务)
    测试开发进阶——常用中间件概念——web容器——web 容器比较 tomcat 、jboss 、resin、 weblogic 、websphere 、glassfish
    测试开发进阶——常用中间件概念——web容器
    测试开发进阶——Servlet ——Servlet HTTP 状态码
    测试开发进阶——Servlet ——Servlet 客户端 HTTP 请求——Servlet 服务器 HTTP 响应
    测试开发进阶——Servlet ——简单示例
    测试开发进阶——Servlet ——生命周期——概念理解
    测试开发进阶——Servlet ——概念理解
  • 原文地址:https://www.cnblogs.com/fangfan/p/4997277.html
Copyright © 2020-2023  润新知