SpringBoot 相关问题请教!

2020-03-09 16:12:04 +08:00
 Vanes

想来请教一下各位大佬,如下场景如何实现:

现在服务器有两个 SpringBoot 应用 A 和 B,现在 A 应用需要调用 B 的相关读写接口对某一类数据读写, 但是不希望外部请求直接访问 A 应用提供的 API 来对该类数据进行读写,即该类数据只能由 B 来调用, 个人理解为就是应用 A 对应用 B 授权,然后只有授权了应用才能访问相应的 API,其他外部请求直接拒绝。

不知道这种场景有什么比较好的实现方式。或者业界有没有什么比较标准的做法?

3875 次点击
所在节点    Java
32 条回复
Vanes
2020-03-09 16:42:15 +08:00
@renyijiu 所以内部接口和外部接口对于客户端来说,区别就在于 header 是吗?
renyijiu
2020-03-09 16:49:40 +08:00
@Vanes #21 通过注解判断内外部接口,从而进行不同的校验(客户端的请求需要签名等验证),另外外层有网关,可以设置名单内部接口拒绝外部访问
0ray
2020-03-09 17:42:47 +08:00
为啥一定要用调 api, 作成 rpc 通信不好吗, 集成 dubbo 很容易的.
mazyi
2020-03-09 18:11:48 +08:00
给一把钥匙不就行了。。。
NizumaEiji
2020-03-09 18:30:15 +08:00
写过滤器\拦截器带个鉴权也行
或者直接 b 机器上本地改下 dns a 机器的 ng 上弄个规则 特定的接口拒绝外网 ip 访问也行吧
m1ch3ng
2020-03-09 19:19:13 +08:00
用 token 的机制不就可以(必须携带某些请求头)
mosliu
2020-03-09 22:55:28 +08:00
做鉴权不行么 ?
wozhizui
2020-03-10 07:46:20 +08:00
这应该就是加权限的 api 吧,行业软件的 api 经常都这么搞,给个调用者一个 key,请求的时候带上 key,然后应用 B 返回 200 ok 或者 400 不 ok。
已经有挺专业的回答了。
CRUD
2020-03-10 10:30:44 +08:00
1、A 应用只对 B 应用提供服务的情况下可关闭外网访问,B 请求 A 走内网。
2、A 应用除了对 B 应用提供服务,还需要对其他应用提供服务的情况下引入鉴权机制,可以是 token 也可以是 auth key,本质上只是 A 服务颁发给调用它的客户端的一个凭证,请求时带上该凭证,验证通过执行剩余逻辑,验证错误拒绝请求而已。
Leiothrix
2020-03-10 11:03:48 +08:00
B 应用配置 Spring Security 规则,只暴露该暴露出去的接口,A 应用后台登录后可以无阻碍访问 B 应用未暴露(保护)接口。
HansCathy
2020-03-10 11:21:55 +08:00
我理解 B 是对外接口,A 是对内接口。在网关配置 A 为登录验证,B 为匿名验证 就可以了
xyshmily
2020-03-10 14:01:16 +08:00
ng 白名单

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/651234

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX