使用Azure Active Directory设置Spring Security

这篇博客详细介绍了如何将Spring Boot Web应用程序与Azure Active Directory集成,进行身份验证。内容涉及Spring Boot的版本依赖、POM配置、application.properties设置以及AADOAuth2LoginSecurityConfig的Java代码。在配置过程中,作者遇到并解决了使用HTTP而非HTTPS导致的问题,特别是针对本地开发和应用程序服务部署的不同情况。
摘要由CSDN通过智能技术生成

以下是用于配置Spring Boot Web应用程序以使用Azure Active Directory身份验证的设置。

应用基于spring-boot-starter-parent:2。1。4。发布。

POM依赖项片段:

<dependency>
    <groupId>com.microsoft.azure</groupId>
    <artifactId>azure-active-directory-spring-boot-starter</artifactId>
    <version>2.1.6</version>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-oauth2-client</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-oauth2-jose</artifactId>
</dependency>

的片段application.properties:

# Active Directory Authentication
spring.security.oauth2.client.registration.azure.client-id=109a3748-yada-yada-yada-f80c1f30621e
spring.security.oauth2.client.registration.azure.client-secret=OBAYaOKp-HwhateverIxFxY@?
azure.activedirectory.tenant-id=f447e5ca-yada-yada-yada-370ff157fdb6
azure.activedirectory.user-group.allowed-groups=group1, group2
azure.activedirectory.active-directory-groups=group1, group2

AADOAuth2LoginSecurityConfig.java:

@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class AADOAuth2LoginSecurityConfig extends WebSecurityConfigurerAdapter {

    @Autowired
    private OAuth2UserService<OidcUserRequest, OidcUser> oidcUserService;

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                .csrf().disable()
                .authorizeRequests()
                .antMatchers("/**").hasRole("group1")
                .anyRequest().authenticated()
                .and()
                .exceptionHandling().accessDeniedPage("/browse/403")
                .and()
                .oauth2Login()
                .userInfoEndpoint()
                .oidcUserService(oidcUserService);
    }

}

我受制于JSP,因此请使用taglibs,例如:

<security:authorize access="hasRole('group1')">
    Authorised users only
</security:authorize>

User's name: <security:authentication property="name"/>

Azure配置开始变得奇怪。 有一个关联的应用程序注册,其身份验证配置如下:

auth

我有一个本地主机设置,允许http本地开发的前缀-那里没有错。

但是对于我的两个应用程序服务部署,我必须使用http而不是https (NB. my app is configured to accept only HTTPS), and I can only do this by selecting "Public client (mobile & desktop)".

如果我尝试使用https使用“ Web”类型时,在身份验证时出现以下错误:

auth error

from: https://dev.to//cowinr/setting-up-spring-security-with-azure-active-directory-55l5

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值