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);
}
我觉得它没用。这段代码检查了什么?
答案 0 :(得分:5)
根据我收集的内容,它是资源服务的ID。
当您考虑将apauth令牌提供程序servlet和资源服务器分开以进行api版本控制时,会更加清晰。例如,假设客户端A(cA)可以访问api1而客户端B(cB)可以访问api2,则可以通过在资源服务器xml中为api1指示其resource-id = api1来强制执行此访问,然后配置客户端详细信息对于cA,他们有resourceIds =“api1”,同样对于[cB,api2]。
这使我们能够保护api访问并将其保护声明与我们的客户角色声明分开。
答案 1 :(得分:0)
看起来它会检查客户端是否有权查看特定资源。不确定如何使用令牌变量,看起来有一些你没有显示的更相关的代码。