有个关于 oauth2.0 的问题,我有一个 A公司的 app,里面嵌套一个 B公司 h5 页面,其中 h5 页面要用到A公司 app的用户信息,经过 oauth2.0 拿到App 的 access_token 后,理论上他能调用 A公司app 的全部接口(对于A公司后端来说就是一个普通的用户的token),这个可以预防吗,要怎么限制做到颁发给 A公司的 access_token 只能访问特定的接口,而不能访问系统的其他接口呢
有考虑过 scope,但是 scope 我感觉上只是用户是否赋予 h5 页面 App 的可供调用接口里面的接口是否都授权。打个比喻 APP 提供给第三方公司调用的就三个接口,【获取手机号,获取用户真实姓名,获取用户身份证】其他接口都不可以调用,其中这三个接口 h5 都不是随便可以调用,而是要经过用户进行确认,确认后才可以调用,是做这个功能。但是关于 APP 如何控制第三方公司其他接口都不可以调用,只能调用【获取手机号,获取用户真实姓名,获取用户身份证】接口,是不是要另外做逻辑进行隔离。即控制h5能调用多少个 APP 接口是一回事,而用户是否授权其中某几个接口给 h5 调用,又是另外一回事了。我的理解是否正确呢
OAuth 本身就是个身份校验协议,如果你希望限制访问权限,就得自行实现。
没记错的话 scope
只是其中一个字段,用来方便携带一些信息,真正要实现功能还得你自己来。
可以用scope 来做的,请求的时候scope 不同,如果用户一点同意了这些scope 的请求。那么就会发放不同权限的access_token。这时候,client 使用这个用户的access_token 就能请求到资源服务器的各种接口,资源服务器依据access_token 中的不容权限选择放行与否。
您对于 OAuth2.0 和 scope 的理解是正确的。在 OAuth2.0 中,scope
是用来定义客户端应用可以访问的资源或权限范围的。当用户授权一个应用时,他们会同意应用访问某些特定范围的数据或接口。
为了确保 A 公司的 access_token
只能访问特定的接口,而不是整个系统的接口,你应该采取以下措施:
定义精细化的 Scope:
phone_number
、real_name
和 id_card
。接口级别的权限检查:
access_token
对应的 scope 是否包含该接口所需的 scope。动态权限管理:
使用中间件或拦截器:
文档和沟通:
审计和监控:
考虑使用 API Gateway:
刷新 Token 和撤销机制:
通过这些措施,你可以确保即使 B 公司的 h5 页面获得了 A 公司的 access_token
,它也只能访问被明确授权的接口,而不能访问其他未授权的接口。这有助于保护你的 API 和用户数据的安全。
我的剧本 回应
本文向大家介绍理解Java访问权限控制,包括了理解Java访问权限控制的使用技巧和注意事项,需要的朋友参考一下 今天我们来一起了解一下Java语言中的访问权限控制。在讨论访问权限控制之前,先来讨论一下为何需要访问权限控制。考虑两个场景: 场景1:工程师A编写了一个类ClassA,但是工程师A并不希望ClassA被该应用中其他所用的类都访问到,那么该如何处理? 场景2:如果工程师A编写了一个
我想在用户登录我的系统后控制访问。 例如: 所以在知道用户拥有哪个权限后,在数据库中进行检查,我想限制这个用户可以看到和做什么。有一个简单的方法吗? 编辑
本文向大家介绍java类访问权限与成员访问权限解析,包括了java类访问权限与成员访问权限解析的使用技巧和注意事项,需要的朋友参考一下 在写代码的时候有个问题:包内定义了一个接口类,另外一个包要实现它,这里采用接口隔离与依赖倒置原则,将两个包的依赖关系倒置过来。但是,这里就遇到了一个问题,实现类采用工厂模式来实例化,所以实现类就不想暴露给包外,但是实现类还要实现public接口。所以这里有产生了一
主要内容:开启 ACL 权限Linux 系统传统的权限控制方式,无非是利用 3 种身份(文件所有者,所属群组,其他用户),并分别搭配 3 种权限(读 r,写 w,访问 x)。比如,我们可以通过 ls -l 命令查看当前目录中所有文件的详细信息,其中就包含对各文件的权限设置: [root@localhost ~]# ls -l total 36 drwxr-xr-x. 2 root root 4096 Apr 15 16:33
我在Echo Studio 3上从事一个Java项目。我有一个显示Pdf文件的servlet。我使用一个按钮调用此servlet,该按钮使用以下代码打开一个新窗口: 我只允许单击此按钮的用户访问此servlet,但我不知道如何处理此问题。 任何想法?