gpt4 book ai didi

java - 使用 Spring OAuth 支持多个资源 ID

转载 作者:搜寻专家 更新时间:2023-11-01 03:30:49 24 4
gpt4 key购买 nike

情况。我们正在使用 Spring OAuth 来验证安全 token (JWT)。该 token 具有针对特定资源 ID 的 aud 声明。以下代码正确验证了使用包含客户端 ID resourceId-123 的 aud 声明签名的任何 JWT token :

class ResourceServerConfig {

@Bean
protected ResourceServerConfiguration adminResources2() {
ResourceServerConfiguration resource = new ResourceServerConfiguration() {
void setConfigurers(List<ResourceServerConfigurer> configurers) {
super.setConfigurers(configurers)
}
}
resource.setConfigurers(Collections.<ResourceServerConfigurer>singletonList(new ResourceServerConfigurerAdapter() {
@Override
void configure(ResourceServerSecurityConfigurer resources) throws Exception {
resources.resourceId("resourceId-123")
}

@Override
void configure(HttpSecurity http) throws Exception {
http.antMatcher("/path")
.authorizeRequests()
.anyRequest().authenticated()
}
}))

resource.setOrder(3)
return resource
}
}

问题。我们如何支持同一路径的多个客户端 ID(在上面的示例中,/path)?我已经看到如何为 不同 API 路径配置具有不同客户端 ID 的多个 Bean 的示例,但我想使用 2+ 个客户端 ID 来保护此资源。关于如何做到这一点的任何示例或文档?还是我们试图做一些根本不正确的事情?

最佳答案

我认为你的做法是错误的。

客户端 ID 与 Spring Security 中的受众不同,一个客户端允许一个或多个资源 ID,并且 JWT 可能包含多个受众。

所以我认为您应该按照您为不同路径使用不同资源 ID 的示例,为共享路径创建一个新的资源 ID,并将其添加到允许访问它的所有客户端。

例子:

路径:

|----------------+-------------|
| Path | Resource ID |
|----------------+-------------|
| /client1/info | client1 |
| /client2/info | client2 |
| /shared/status | all-clients |
|----------------+-------------|

客户:

|---------+----------------------|
| Client | Resource IDs |
|---------+----------------------|
| client1 | client1, all-clients |
| client2 | client2, all-clients |
|---------+----------------------|

如果你能提供一个我可以修改的可运行示例,那么展示一些东西会更容易,但由于你发布的代码数量有限,这是我能做的最好的。

另一种方法是使用不同的范围而不是不同的受众。这将消除对多个资源服务器配置的需要,您可以在 .access() 中使用类似 #oauth2.hasScope('admin') 的表达式>@PreAuthorize.

关于java - 使用 Spring OAuth 支持多个资源 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57102454/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com