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);
}
我觉得这没用。这个代码检查什么?
最佳答案
根据我收集的信息,它是资源服务的ID。
当您考虑分离OAuth令牌提供程序servlet和资源服务器以进行API版本控制时,情况会变得更加清楚。例如,假设客户机A(CA)有权访问API1,客户机B(CB)有权访问API2,则通过在资源服务器XML中为API1指定其资源ID=API1,然后为CA配置客户机详细信息,使其资源ID=API1,以及为[CB,API2]配置此访问。
这样我们就可以保护API访问,并将其保护声明与客户机角色声明分开。