获取在春季启动资源服务器主要我有一个单独的auth服务器和资源服务器 - 无论是春启动的应用程序。我正在使用OAuth2和JWT令牌进行身份验证和授权。从JWT令牌
我可以通过访问auth服务器获取令牌:
curl -X POST --user 'client:secret' -d 'grant_type=password&username=john&password=123' http://localhost:9000/auth-server/oauth/token
和令牌附加到请求头从资源服务器获取资源(不同的服务器上运行)时使用它。
但是我不清楚的是,确定哪个用户在资源服务器上登录。
在auth服务器,我可以做这样的事情:
@RequestMapping("/user")
public Principal user(Principal user) {
return user;
}
与此端点将得到我的当前用户基于使用的令牌。如果我试图在资源服务器上做同样的事情,我只会得到空的答复。
我需要得到验证用户的ID以某种方式在资源服务器,以决定是否我应该有的数据返回给他(我有一些资源只能被其所有者访问)。
我该怎么做?我认为通过使用JWT,我不需要共享相同的令牌存储。
我可以提供代码样本,如果我的问题是不清楚..我只是寻找一个确认我的假设是正确的,就可以实现这种行为 - 这是我第一次带弹簧的安全试验。
资源服务器链接到auth服务器在application.properties:
security.oauth2.resource.userInfoUri: http://localhost:9000/auth-server/user
没有你,不管怎样,这得到解决?我通过使用InMemoryTokenStore()而不是JwtTokenStore()来得到这个工作。不过,我想用JwtTokenStore()来达到同样的效果。 – Yasin
不幸的是没有。我现在使用的方式是在auth服务器和资源服务器中共享相同的用户名,并使用在Principal对象中传递的唯一用户名来检索用户... – Smajl