V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
indure
V2EX  ›  编程

分享一个好用的开源权限控制产品 Speedle

  •  1
     
  •   indure · 2019-04-22 15:53:12 +08:00 · 3821 次点击
    这是一个创建于 1802 天前的主题,其中的信息可能已经有所发展或是发生改变。

    安装 Speedle

    Speedle 是托管在 GitHub 上 https://github.com/oracle/speedle。我 X,甲骨文的项目,不会收费吧?!我仔仔细细看了好几遍许可证,发现它用的是 UPL v1.0。还好还好,继续安装! Speedle 是用 GO 开发的(甲骨文不是都用 Java 吗?用 GO 是什么鬼),需要安装 GO 编译器。就在这里: https://golang.org/dl/ 安装好 GO 编译器之后,设置一下环境变量GOPATH$ export GOPATH=~/go 然后再执行$ go get github.com/oracle/speedle/cmd/…

    看看都有些什么,PMS, ADS, spctl 一家人整整齐齐都在 bin 目录下面。

    $ ls $GOPATH/binspctl  speedle-ads  speedle-pms
    

    运行 Speedle

    PMS 是 Policy Management Service 的缩写,主要用于授权策略( Policy )的管理。我们先启动它。

    $cd$GOPATH/bin $ ./speedle-pms --store-type file

    然后创建一个授权策略,就说“用户张三可以点击按钮 A ”。在 Speedle 里面,首先要创建一个” Service ”,基本就是你要保护的服务(或者应用)的映射。例如我现在要保护约不约系统,就创建 YBY

    $ ./spctl create service YBY

    然后在这个“ Service ”里面创建一条授权策略

    $ ./spctl create policy -c"grant user ZhangSan click buttonA"--service-name=YBY

    ADS 是 Authorization Decision Service 的缩写,它可以根据定义好的授权策略判断当前访问是否被允许。我们现在启动它。

    $ ./speedle-ads --store-type file

    问它张三可不可以点击按钮 A。

    $ curl -X POST --data '{"subject":{"principals":[{"type":"user","name":"ZhangSan"}]},"serviceName":"YBY","resource":"buttonA","action":"click"}'http://127.0.0.1:6734/authz-check/v1/is-allowed 
    

    返回结果是{"allowed":true,"reason":0}

    我们再问李四可不可以点。

    $ curl -X POST --data '{"subject":{"principals":[{"type":"user","name":"LiSi"}]},"serviceName":"YBY","resource":"buttonA","action":"click"}'http://127.0.0.1:6734/authz-check/v1/is-allowed

    它说不可以 {"allowed":false,"reason":3} 很简单有没有?好了,我今天收工了! Speedle 的 SPDL 语言非常灵活,可以支持 rbac 和 abac,等有空和大家分享,我要加班搬砖了。大家请鼓掌!

    更多资源请

    作者:转圈圈的程序员 链接: https://www.jianshu.com/p/b1d7a108202e 来源:简书 简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1058 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 22:41 · PVG 06:41 · LAX 15:41 · JFK 18:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.