在使用Spring Security的OAuth 2.0中,resourceId意味着什么

use*_*977 13 spring oauth-2.0 spring-security-oauth2

org.springframework.security.oauth2.provider.filter中的OAuth2ProtectedResourceFilter:

Collection<String> resourceIds = auth.getClientAuthentication().getResourceIds();
if (resourceIds!=null && !resourceIds.isEmpty() && !resourceIds.contains(resourceId)) {
    throw new InvalidTokenException("Invalid token does not contain resource id ("+resourceId+"): " + token);                   
}
Run Code Online (Sandbox Code Playgroud)

我觉得它没用.这段代码检查的内容是什么?

Ste*_*lla 5

根据我收集到的信息,它是资源服务的ID。

当您考虑为了api版本控制而分离oauth令牌提供程序servlet和资源服务器时,这一点变得更加清楚。例如,假设客户端A(cA)可以访问api1,而客户端B(cB)可以访问api2,则可以通过在api1的资源服务器xml中指示其resource-id = api1来强制执行此访问,然后配置客户端详细信息对于cA,它们具有resourceIds =“ api1”,对于[cB,api2]同样。

这样,我们就可以保护api访问并将其保护声明与客户角色声明分开。

  • resourceIds与范围有何不同? (7认同)

aj.*_*ler 0

看起来它会检查客户端是否有权查看特定资源。不确定 token 变量是如何参与的,看起来还有一些更相关的代码您没有显示。