我正在将 Spring Security 与 Spring Boot 2.2.0 结合使用,尝试让 Azure AD B2C 正常工作,使用spring-security-oauth2-resource-server:5.2.0和spring-security-oauth2-jose:5.2.0.
使用此配置:
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true)
public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/api/**")
.authenticated()
.and()
.oauth2ResourceServer(OAuth2ResourceServerConfigurer::jwt);
}
}
与spring.security.oauth2.resourceserver.jwt.jwk-set-uri设置在我的application.properties.
我可以从 Azure AD B2C 获取令牌并使用该令牌访问我自己的 API 终结点。但是,如果我使用另一个目录中的令牌,也可以访问端点。
我确实在委托人的声明中看到这来自另一个天蓝色目录。这是我需要在我的应用程序中手动添加的内容(测试应用程序 ID 是否与声明中匹配)?或者我应该添加一些我还没有完成的其他配置?
我还尝试使用添加我自己的 JwtDecoder bean JwtDecoders.fromOidcIssuerLocation("https://mycompb2ctestorg.b2clogin.com/mycompb2ctestorg.onmicrosoft.com/v2.0/?p=B2C_1_ropc_flow");,但这给出了:
java.lang.IllegalStateException: The Issuer "https://mycompb2ctestorg.b2clogin.com/60780907-bc3a-469a-82d1-b89ffed655af/v2.0/"
provided in the configuration did not match the requested issuer
"https://mycompb2ctestorg.b2clogin.com/mycompb2ctestorg.onmicrosoft.com/v2.0/?p=B2C_1_ropc_flow"
另外,使用:
spring.security.oauth2.resourceserver.jwt.issuer-uri=https://mycompb2ctestorg.b2clogin.com/mycompb2ctestorg.onmicrosoft.com/v2.0/?p=B2C_1_ropc_flow
给出与尝试声明我自己的JwtDecoderbean 相同的异常。
慕勒3428872
守着星空守着你
动漫人物
相关分类