跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 授权接口给其他公司该如何设计?
未分類
19 5 月 2020

授权接口给其他公司该如何设计?

授权接口给其他公司该如何设计?

資深大佬 : ileeoyo 0

现在要开放一部分数据给合作伙伴公司使用? 打算提供 rest 接口给他们访问,该如何设计授权呢?

大佬有話說 (42)

  • 資深大佬 : zoharSoul

    懒得想就走标准的 oauth2 呗

  • 資深大佬 : tabris17

    最简单的方式就是 nonce+签名

  • 資深大佬 : ISSSSSSS

    ZFB 的接入流程就比较标准。可以参考下。主要是公私钥的生成,数据加验签。

  • 資深大佬 : linauror

    如果不是做成标准化,那就直接约定一个密钥和签名方式就可以了

  • 主 資深大佬 : ileeoyo

    @zoharSoul 我看不少使用 oauth2 的,打算看看阮一峰的博客研究一下

  • 主 資深大佬 : ileeoyo

    @linauror 还是打算标准一点,得考虑一下固定密钥泄露的情况

  • 主 資深大佬 : ileeoyo

    @tabris17 nonce 指的是?

  • 主 資深大佬 : ileeoyo

    @ISSSSSSS 感谢意见,可以看一下

  • 資深大佬 : murmur

    就 key 签名就可以,要求加入一个随机数

  • 資深大佬 : rioshikelong121

    mark 有类似需求.
    问下 oauth2 的 Client Credentials 的 grant type 可以做么?

  • 資深大佬 : HansLee

    如果是一个 server2server 的接口更推荐 OpenId

  • 主 資深大佬 : ileeoyo

    @rioshikelong121 @zoharSoul
    刚看了阮一峰大佬的文文章,感觉 client credentials 还挺符合我的业务场景。我当前业务没有前端,授权针对的是某个公司平台后台,而不是针对某个用户。
    其他 3 中 oauth2 授权有:客户端和资源所有者的概念,需要资源所有者授权给某个第三方客户端。而我的场景没有资源所有者的概念,是第三方客户端直接获取授权得到数据

  • 主 資深大佬 : ileeoyo

    @HansLee 是 server2server,openid 指的是?

  • 資深大佬 : dilu

    如果不打算做成标准化,IP 白名单+简单的 token 验签即可

    标准化可以参考 oauth

  • 資深大佬 : tabris17

    @ileeoyo nonce 是参与签名计算的一次性的随机数。实际操作中,可以用 timestamp 来代替,不过调用者和被调用者之间需要校时,两者时间误差不能太大

  • 主 資深大佬 : ileeoyo

    @dilu 如果不需要很多时间,还是标准一点

  • 主 資深大佬 : ileeoyo

    @tabris17 能再详细点提示下吗

  • 資深大佬 : chairuosen

    不要用 ip 白名单,第三方一加机器就得找你开白名单

  • 資深大佬 : Guozi1989

    简单点就 token+签名的方式吧

  • 資深大佬 : luozic

    不要直接调,最好走一个网关或者代理,做一些限流 /监控 /白 or 黑名单控制。

  • 資深大佬 : teawithlife

    @tabris17 #15 nonce 不能使用 timestamp,而应该和 timestamp 同时使用,两者结合可以用来防止重放攻击
    单独使用 timestamp 的话,因为需要预留一定的容错时间,所以还是存在被重放攻击的风险,加上一个 nonce 就可以避免了

    不过对于主这种简单需求,白名单应该是最稳妥简便的方式

  • 資深大佬 : tabris17

    @teawithlife 实际操作中可以使用 timestamp,一般允许调用者和被调用者之间时差不超过 X 分钟,那么重放攻击的窗口期也就 X 分钟而已。安全性要求不高的场景下没有问题

  • 資深大佬 : dilu

    @chairuosen 后台做个添加白名单的功能不就好了?

  • 資深大佬 : hantsy

    网络上大部分 Spring Oauth2 server 教程中 ClientID,Client Securets 是写死的。把这个开放出来,给 Client ( App )注册就行了。Client 的意思是 Application Client,就是要访问你的 API 的程序。剩下的就是定义好 Scopes,和允许的 Flow 了。

  • 資深大佬 : hantsy

    @ileeoyo 你的所有暴露的 API 都是 resource owner 的,资源拥有者就是你自己(公司),通过 Scopes 来决定授权。

  • 資深大佬 : forgottencoast

    这个很简单。
    我每次都打开几大网站的 api 后台接口,看别人是怎么设计的。
    Google 、Microsoft 、Facebook,这三个参考一下就能弄出来了。
    他们设计的也很简单,反正前几年都是 oauth 。

  • 主 資深大佬 : ileeoyo

    @hantsy 我再看下 scope 这么限制 具体的访问权限

  • 資深大佬 : tinycold

    这玩意儿远远不是一个 OAuth2.0 能说清楚的,里边儿包含了很多行业标准,有个产品叫 Anth0,就是专门做这个,你可以搜一搜看看。

  • 資深大佬 : xuanbg

    主的需求不是 OAuth2 的菜,应该加密+签名。

  • 資深大佬 : hantsy

    @tinycold 现在就 Auth0, okta 两家做得比较大了,应用广泛,各种应用场景集成都是相应的 SDK 支持,开发也简单。

  • 資深大佬 : cbasil

    简单一点就用签名咯,再复杂一点就 AES 加密,再复杂一点就 RSA 加密。接口对接用 oauth2 太麻烦了点,又不是对用户授权

  • 資深大佬 : GTim

    @cbasil 还可以用 JWT,`sub` 表示 `client_id` 然后加密密钥用来表示 client_secret

  • 資深大佬 : fgt

    我这边的一个类似设计是:对方先调用我方 queryNonce 接口获取随机码 nonce (参数是对方的系统唯一 id ),然后它在本地计算 token=Md5(timestamp+nonce),然后将 timestamp 和 token 放在 header 中进行调用;
    我方收到请求后先判断 timestamp 是否误差查过 5 分钟,然后拿本地存储的 nonce 进行同样的 Md5(timestamp+nonce)计算得到 localToken,然后根据 localToken 是否等于 token 来判断是否合法

  • 資深大佬 : seagull7558

    推荐个 oauth2 框架,keycloak,应该是可以满足的你需求

  • 資深大佬 : fensou

    一定要绑定硬件 key

  • 資深大佬 : deco

    可以去看看支付宝支付及微信支付的鉴权接口。

  • 資深大佬 : seagull7558

    @hantsy 按照你的设计,使用 client_credentials 模式,传递 client_id 、client_secret 、scope 申请授权
    假如说要像阿里云那样,企业下有多个子账号,每一个子账号都有自己的 ak,这种也要使用 client_credentials 吗

  • 資深大佬 : xcstream

    参数打包+key 的 md5 就像微信支付一样

  • 資深大佬 : CoderGeek

    oauth2

  • 資深大佬 : CoderGeek

    有个简单 demo
    https://github.com/codeyung/spring-boot-oauth2

  • 資深大佬 : BBCCBB

    标准的都是 oauth2.

  • 資深大佬 : rioshikelong121

    我的需求和你类似 之前的想法是用 oauth 的客户端认证流来做.

    参考了这篇文章以后: https://medium.com/swlh/3-ways-to-secure-your-web-api-for-different-situations-8d5cd4762ab3

    我打算使用签名的方式来做. 理由: 给公司其他内部系统使用的,无需标准化. oauth 的成本会略高一些.

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具