Vaadin Flow应用如何添加Azure Active Directory登录功能?
为Vaadin Flow应用添加Azure Active Directory登录的实现步骤
以下是基于Spring Boot集成Vaadin Flow的Azure AD登录落地方案:
1. 完成Azure AD应用注册
登录Azure门户,进入「Azure Active Directory」→「应用注册」→「新建注册」:- 设置应用名称,按需选择帐户类型(比如「任何组织目录中的帐户」)
- 重定向URI选择「Web」,填入
http://localhost:8080/login/oauth2/code/azure(生产环境替换为实际域名) - 注册完成后,记录客户端ID和租户ID;进入「证书和密码」→「新建客户端密码」,保存生成的密钥值(后续配置要用)
2. 添加Spring Security OAuth2依赖
如果你的Vaadin应用基于Spring Boot,在构建文件中添加OAuth2客户端依赖:
Maven(pom.xml):<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-oauth2-client</artifactId> </dependency>Gradle(build.gradle):
implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'3. 配置应用属性
在application.properties或application.yml中添加Azure AD OAuth2配置:spring.security.oauth2.client.registration.azure.client-id=你的客户端ID spring.security.oauth2.client.registration.azure.client-secret=你的客户端密钥 spring.security.oauth2.client.registration.azure.scope=openid,profile,email spring.security.oauth2.client.registration.azure.redirect-uri={baseUrl}/login/oauth2/code/{registrationId} spring.security.oauth2.client.provider.azure.issuer-uri=https://login.microsoftonline.com/你的租户ID/v2.04. 配置Spring Security规则
创建Security配置类,继承VaadinWebSecurityConfigurerAdapter,整合OAuth2登录逻辑:import com.vaadin.flow.spring.security.VaadinWebSecurityConfigurerAdapter; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; @EnableWebSecurity @Configuration public class SecurityConfig extends VaadinWebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { // 允许Vaadin静态资源、图标等无需认证即可访问 http.authorizeRequests() .antMatchers("/VAADIN/**", "/favicon.ico", "/robots.txt").permitAll(); // 启用Azure AD OAuth2登录 http.oauth2Login(); // 继承Vaadin默认安全配置,保持CSRF等机制正常工作 super.configure(http); // 可选:设置自定义登录视图路由(如果需要自己做登录页) setLoginView("login"); } }5. 获取登录用户信息
在Vaadin视图中,可通过Spring Security上下文获取Azure AD返回的用户信息:import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.oauth2.core.user.OAuth2User; // 在视图类的方法中调用 Authentication auth = SecurityContextHolder.getContext().getAuthentication(); if (auth instanceof OAuth2User) { OAuth2User oauth2User = (OAuth2User) auth.getPrincipal(); String userName = oauth2User.getAttribute("name"); String userEmail = oauth2User.getAttribute("email"); // 其他字段如用户ID可通过"oid"属性获取 }6. 测试登录流程
启动应用,访问需要认证的Vaadin视图,系统会自动跳转至Azure AD登录页面,输入企业账号密码后,会回调到应用完成登录。
内容的提问来源于stack exchange,提问作者Hakan Akkurt
相关产品推荐
相关产品推荐

