使用 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();
}
请检查以下几点:
- 当从令牌中获取的颁发者值来自与 expected.Please 不同的端点 (v2) 时,可能会出现此问题确保使用最新版本的 spring 引导 api 并检查同样处于依赖关系。
- 您需要将重定向 URL 设置为 http://localhost:8080/login/oauth2/code/azure 或 http://localhost:8080/login/oauth2/code/ portal.You 可以根据您的应用配置其他值来代替 localhost:8080 。此重定向 uri 必须在您的应用程序属性中配置。
- 确保公开 api 并确保权限也已配置并获得管理员同意。
。提供默认范围(确保在代码中添加范围)或直接提供应用程序中存在的范围(签入应用程序代码),例如 User.read 、file.read 或 offline_access 并提供委托门户中的权限如下(如果代码中存在)。
(或)
和大管理员同意
另见 springboot starter dev guide | ms docs 并请查看下面的参考资料。
如果上述情况不是需要进一步调查的情况,您可以通过编辑问题来提供其他配置详细信息。
参考文献:
我创建了 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();
}
请检查以下几点:
- 当从令牌中获取的颁发者值来自与 expected.Please 不同的端点 (v2) 时,可能会出现此问题确保使用最新版本的 spring 引导 api 并检查同样处于依赖关系。
- 您需要将重定向 URL 设置为 http://localhost:8080/login/oauth2/code/azure 或 http://localhost:8080/login/oauth2/code/ portal.You 可以根据您的应用配置其他值来代替 localhost:8080 。此重定向 uri 必须在您的应用程序属性中配置。
- 确保公开 api 并确保权限也已配置并获得管理员同意。
。提供默认范围(确保在代码中添加范围)或直接提供应用程序中存在的范围(签入应用程序代码),例如 User.read 、file.read 或 offline_access 并提供委托门户中的权限如下(如果代码中存在)。
(或)
和大管理员同意
另见 springboot starter dev guide | ms docs 并请查看下面的参考资料。
如果上述情况不是需要进一步调查的情况,您可以通过编辑问题来提供其他配置详细信息。
参考文献: