【问题标题】:What does resourceId mean in OAuth 2.0 with Spring Security使用 Spring Security 的 OAuth 2.0 中的 resourceId 是什么意思
【发布时间】:2012-01-25 19:18:24
【问题描述】:

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

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

【问题讨论】:

    标签: spring oauth-2.0 spring-security-oauth2


    【解决方案1】:

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

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

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

    【讨论】:

    • resourceIds 与范围有何不同?
    • @yankee 如果我没记错的话,范围是指对给定资源的访问类型。例子是读,写
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-23
      • 1970-01-01
      • 2019-06-12
      • 2014-12-04
      • 2012-05-04
      • 2018-01-24
      • 1970-01-01
      • 2015-12-29
      相关资源
      最近更新 更多