• 请不要在回答技术问题时复制粘贴 AI 生成的内容
asanelder
V2EX  ›  程序员

求助啊!类似飞书开放平台的接口权限控制怎么做?

  •  
  •   asanelder · Jan 6, 2021 · 4328 views
    This topic created in 2127 days ago, the information mentioned may be changed or developed.
    俺目前在做一个平台,需要提供一些开放 api (以 http 的形式)给第三方调用。

    认证部分俺解决了,使用的是,oauth 。

    但鉴权部分,需要用户申请相应的权限,才可以调用相关的接口。一个例子,如飞书的开放接口设计,需要申请相关权限才能设备相关 api 。

    https://open.feishu.cn/document/ukTMukTMukTM/uQjN3QjL0YzN04CN2cDN

    之前见过使用 shiro 做权限控制,但那个系统有明显的用户,角色,权限三个层级。而以上飞书的例子是没有角色这个东西的。

    现在想请教一个有类似经验的老铁,飞书的那种权限控制是怎么设计的呢?

    俺担心自己走偏了,所以找找行业实践,有没有老铁指点一二啊~~~
    15 replies  •  2022-03-30 10:10:18 +08:00
    YIsion
    YIsion
    Jan 6, 2021
    1
    token 做鉴权,可以参考 github 的实现
    catror
    catror
    Jan 6, 2021
    2
    大概是 ABAC
    dorothyREN
    dorothyREN
    Jan 6, 2021
    3
    shiro 不验证 角色 只验证权限不就行了。。。
    rb6221
    rb6221
    Jan 6, 2021 via iPhone
    4
    这个权限申请好像就是发个邮件填个表那种吧,人工审核以后后台开的
    tomsun28
    tomsun28
    Jan 6, 2021
    5
    感觉这个整体抽象起来还是 rbac,你需要的是可以动态修改赋权给角色的权限数据。只是这里把角色隐化了。
    想想大概应该可以这样弄,水平有限勿喷
    用户-角色组-资源权限
    新建的用户除了拥有一些基本角色外,拥有一个单独自定义角色,此角色来拥有那些开放接口的访问权限,我们可以通过接口调用动态修改权限配置
    [需要用户申请相应的权限] 这个也一样,维护一张申请表,若审核通过就动态修改角色权限配置信息

    推荐参考使用 sureness - https://github.com/tomsun28/sureness
    ResidualWind
    ResidualWind
    Jan 6, 2021
    6
    这个权限设计思路可以参考下
    https://github.com/Heeexy/SpringBoot-Shiro-Vue
    sazima
    sazima
    Jan 6, 2021
    7
    不用 shiro 不就行了
    leopod1995
    leopod1995
    Jan 6, 2021
    8
    这个我做过,#5 说的有道理, 补充个例子。

    1,把所有可能的权限做个权限 list, 例如 readSomething, write;
    2,Role 绑定权限内容(read)和用户(第三方 appid);
    3, 第三方申请 read 权限,绑定到第三方的 role 。
    至此,第三方申请什么权限,授权之后就有什么权限。
    ------------------------------------
    补充:
    接口一定是要和权限做模式匹配的,比如 getuserinfo 一定是在 call 之前就做”读取用户信息“权限认证的。
    Oauth 授权的用户也要和 getuserid 的 userid 做匹配。
    hsluoyz
    hsluoyz
    PRO
    Jan 6, 2021
    9
    用 casbin,支持 RBAC 、ABAC,中间切换模型也很简单
    asanelder
    asanelder
    OP
    Jan 6, 2021
    10
    @tomsun28 #5
    @ResidualWind #6
    @leopod1995 #8
    @hsluoyz #9

    感谢老铁提供的线索和思路,俺这几天研究一下,有不明白再来请教!!!
    zhenjiachen
    zhenjiachen
    Jan 6, 2021 via iPhone
    11
    我咋看不到这个页面
    chinvo
    chinvo
    Jan 6, 2021 via iPhone
    12
    如果是要限制应用的权限,用 scope

    如果是要限制用户的权限,用 rbac
    xuanbg
    xuanbg
    Jan 7, 2021
    13
    开发 API 哪有什么权限?都是验签。
    asanelder
    asanelder
    OP
    Jan 8, 2021
    14
    @xuanbg #13 飞书的就需要啊。。。不仅仅是一个签名
    AlpacaCode
    AlpacaCode
    Mar 30, 2022
    15
    @ResidualWind 你好我想问一下,如果这样设计的话,假设我们把这个角色看成是多个权限的权限组,这样如果管理不妥善的话就会导致权限组变的很多,但是多个权限组里面的权限内容却是相同的

    Role1 权限 1 权限 2 权限 3
    Role2 权限 1 权限 2
    Role3 权限 1 权限 2 权限 3
    ....
    RoleN 权限 1 权限 2 权限 3

    用户 A Role1 or Role3 or RoleN
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2893 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 44ms · UTC 13:02 · PVG 21:02 · LAX 05:02 · JFK 08:02
    ♥ Do have faith in what you're doing.