【发布时间】:2019-11-27 20:35:23
【问题描述】:
情况。我们正在使用 Spring OAuth 来验证安全令牌 (JWT)。该令牌具有特定资源 ID 的 aud 声明。以下代码正确验证使用包含客户端 ID resourceId-123 的 aud 声明签名的任何 JWT 令牌:
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 来保护这个资源。关于如何做到这一点的任何示例或文档?还是我们试图做一些根本不正确的事情?
【问题讨论】:
-
我可以知道为什么您需要多个客户端应用程序吗?来自不同租户的用户会使用您的 Web 应用吗?
-
@JackJia 暂时只需要支持单租户用户即可。
-
这听起来很奇怪。一个 API 不应有多个客户端 ID。
-
谢谢@juunas - 您知道这是 Microsoft 特有的身份验证方式,还是 OAuth 标准?
-
你检查过过滤器/拦截器吗?
标签: java spring oauth-2.0 jwt azure-active-directory