OAuth 2.0和Spring Security中的resourceId是什么意思?

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

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

2个回答

7

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

当您考虑将oauth令牌提供servlet和资源服务器分离以进行API版本控制时,情况变得更加清晰。例如,假设客户端A(cA)可以访问api1,而客户端B(cB)可以访问api2,则可以通过在api1的资源服务器XML中指定其resource-id=api1,并为cA配置他们具有resourceIds="api1"的客户端详细信息来强制执行这种访问,对于[cB、api2]同样适用。

这使我们能够保护API访问并将其保护声明与我们的客户端角色声明分开。


8
资源ID与作用域有何区别? - yankee
1
@yankee 如果我没错的话,作用域是指对给定资源的访问类型。例如读取、写入。 - asgs

0

看起来它检查客户端是否有权限查看特定资源。我不确定token变量如何参与其中,似乎还有一些相关代码您没有展示。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接