14

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);                   
}

我认为它没有用。这段代码检查什么?

4

2 回答 2

6

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

当您考虑将 oauth 令牌提供程序 servlet 和资源服务器分开以进行 api 版本控制时,情况会变得更加清晰。例如,假设客户端 A (cA) 可以访问 api1,而客户端 B (cB) 可以访问 api2,您可以通过在 api1 的资源服务器 xml 中指定其 resource-id=api1 来强制执行此访问,然后配置您的客户端详细信息对于 cA,它们具有 resourceIds="api1",对于 [cB,api2] 也是如此。

这让我们可以保护 api 访问并将其保护声明与我们的客户端角色声明分开。

于 2013-03-28T14:45:58.337 回答
0

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

于 2012-04-17T20:21:46.400 回答