oauth2.0提供了一种客户端模式获取token的方式,A微服务就可以用feign通过这种模式请求B服务的相关接口。(zuul,eureka)
第一个问题:
是否有这样一种场景,前端调用A服务的某接口,而这个接口需要调用B服务的某接口,但是这个接口需要用户有一定角色权限才可调用,前端登录的用户是有这种角色权限的,但是由于A服务调用B服务是通过客户端模式生成的token和用户是没关系的,所以会因为没权限调用不了?A服务调用B服务是都通过客户端模式生成token去调用还是会判断前端是否传token,有的话把前端传过来的token继续传过去呢?
第二个问题:
而假设现在不是由前端调用,而是A服务有个定时器,需要调用B服务查询数据的一个接口,而B服务的这个接口是不应该让前端可以调用到。如果正常写接口的话,用户应该还是可以通过zuul到eureka调用到这个接口的吧?这时怎么限制这个不让前端进行调用?修改zuul匹配规则只能请求某路径开头的接口?还是别的怎么方式?
第三个问题:
我github上看了一个基于jwt的前后端分离的oauth2.0的单点登录项目,前端nodejs+vue,然后登录的时候是自定义实现的,用户名+密码+clientid+clientsecret获取token,然后后面可以用refreshtoken + clientid + clientsecret调用接口/oauth/token 续期token。而由于他这里是直接在js里面发起请求到zuul层,所以clientid和clientsecret是直接暴露在js里面的,然后上面说了有一种客户端模式获取token,就是只需要clientid+clientsecret就可以拿到token,只是不能refresh。这样的话把clientid和clientsecret直接写在js里面暴露出来靠谱吗?
而登录已经需要用户名密码了为什么还让传clientid和clientsecret。有什么意义吗?传clientid能理解,clientid有一个scope,但感觉好像没必要也要传clientsecret