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访问,并将其保护声明与客户机角色声明分开。

08-18 10:37