You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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.0
    
  • 4. 配置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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 10:30:51