使用 Spring Boot Starter for Azure Active Directory JWT 令牌算法保护 Java 网络应用程序问题

Secure a Java web app using the Spring Boot Starter for Azure Active Directory JWT token algorithm problem

我创建了 java Web 应用程序,使用 spring Azure Active Directory 的引导启动器,一步一步地描述如下:https://docs.microsoft.com/en-us/azure/developer/java/spring-framework/configure-spring-boot-starter-java-app-with-azure-active-directory

我使用 azure 帐户的应用程序在我打开时工作正常 localhost:8080 它会将我重定向到我登录的 azure,然后我被重定向回我的应用程序。

问题是当我尝试使用客户的 Azure AD 帐户配置此虚拟应用程序时。在这里,当我打开我的应用程序时,主机应用程序也将我重定向到 azure 登录,登录后我得到了屏幕截图中的错误

这是我的 application.properties

azure.activedirectory.tenant-id=placeholder 

azure.activedirectory.client-id=placeholder 
azure.activedirectory.client-secret=placeholder 
azure.activedirectory.object-id=placeholder 


azure.activedirectory.user-group.allowed-groups=group1 
azure.activedirectory.session-stateless=true


security.oauth2.authorization.token-key-access=permitAll() 
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html
application.baseurl.logout.redirect=https://mydomain:8081/

application.groups.for.displaying=
application.groups.for.filtering=
server.port=8081



server.ssl.enabled=true 
server.ssl.trust-store=/apps/tomcat/conf/trusted.jks 
server.ssl.trust-store-password=mykeys 


server.ssl.key-store=/apps/tomcat/conf/.keystore 
server.ssl.key-store-password=f213495a0be855c4ab190a1f84cc18cd 
server.ssl.key-store-type=JKS

server.ssl.key-alias=key-dev-ui 
server.ssl.key-password=f213495a0be855c4ab190a1f84cc18cd

我的配置:

 @Override
    protected void configure(HttpSecurity http) throws Exception {

        http.cors().and().csrf().disable().authorizeRequests().anyRequest().authenticated().and().oauth2Login().and().csrf()
                .csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
                .and().oauth2Client();
    }

请检查以下几点:

  1. 当从令牌中获取的颁发者值来自与 expected.Please 不同的端点 (v2) 时,可能会出现此问题确保使用最新版本的 spring 引导 api 并检查同样处于依赖关系。
  2. 您需要将重定向 URL 设置为 http://localhost:8080/login/oauth2/code/azure 或 http://localhost:8080/login/oauth2/code/ portal.You 可以根据您的应用配置其他值来代替 localhost:8080 。此重定向 uri 必须在您的应用程序属性中配置。
  3. 确保公开 api 并确保权限也已配置并获得管理员同意。

。提供默认范围(确保在代码中添加范围)或直接提供应用程序中存在的范围(签入应用程序代码),例如 User.read 、file.read 或 offline_access 并提供委托门户中的权限如下(如果代码中存在)。

(或)

和大管理员同意

另见 springboot starter dev guide | ms docs 并请查看下面的参考资料。

如果上述情况不是需要进一步调查的情况,您可以通过编辑问题来提供其他配置详细信息。

参考文献:

  1. spring-rest-azure-ad-oauth
  2. using-spring-security-with-azure-active-directory-mga