V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
asanelder
V2EX  ›  程序员

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

  •  
  •   asanelder · Jan 6, 2021 · 3948 views
    This topic created in 1938 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
        1
    YIsion  
       Jan 6, 2021
    token 做鉴权,可以参考 github 的实现
    catror
        2
    catror  
       Jan 6, 2021
    大概是 ABAC
    dorothyREN
        3
    dorothyREN  
       Jan 6, 2021
    shiro 不验证 角色 只验证权限不就行了。。。
    rb6221
        4
    rb6221  
       Jan 6, 2021 via iPhone
    这个权限申请好像就是发个邮件填个表那种吧,人工审核以后后台开的
    tomsun28
        5
    tomsun28  
       Jan 6, 2021
    感觉这个整体抽象起来还是 rbac,你需要的是可以动态修改赋权给角色的权限数据。只是这里把角色隐化了。
    想想大概应该可以这样弄,水平有限勿喷
    用户-角色组-资源权限
    新建的用户除了拥有一些基本角色外,拥有一个单独自定义角色,此角色来拥有那些开放接口的访问权限,我们可以通过接口调用动态修改权限配置
    [需要用户申请相应的权限] 这个也一样,维护一张申请表,若审核通过就动态修改角色权限配置信息

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

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

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

    如果是要限制用户的权限,用 rbac
    xuanbg
        13
    xuanbg  
       Jan 7, 2021
    开发 API 哪有什么权限?都是验签。
    asanelder
        14
    asanelder  
    OP
       Jan 8, 2021
    @xuanbg #13 飞书的就需要啊。。。不仅仅是一个签名
    AlpacaCode
        15
    AlpacaCode  
       Mar 30, 2022
    @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   ·   Solana   ·   5722 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 89ms · UTC 06:45 · PVG 14:45 · LAX 23:45 · JFK 02:45
    ♥ Do have faith in what you're doing.