【问题标题】:Multiple Authentication Provider in SpringBootSpring Boot 中的多个身份验证提供程序
【发布时间】:2019-08-06 04:21:21
【问题描述】:
在我的 SpringBoot 应用程序中,我试图为两个不同的区域实现两种不同的授权。
区域 1 [API]:
/api/**
区域 2 [管理员]:
/admin/**
区域 1 [API] 是我的应用程序的 API 部分,我在其中实现了 JWT 身份验证。每个以/api 开头的请求都需要一个包含 jwt 令牌的 Authorization 标头。
区域 2 [Admin]:是管理区域。我想使用浏览器中的 URL 登录的位置,例如 (/admin/login)。我想将我的用户名和密码保存在 application.properties 中,对于以/admin 开头的任何 URL,我希望对用户进行身份验证(基于会话)。在这种情况下,我想应用内存中的身份验证。我正在寻找为两个不同领域实施这两种不同身份验证的想法。
【问题讨论】:
标签:
spring-boot
authentication
【解决方案1】:
您可以使用.authorizeRequests() 方法为该安全配置文件配置端点。
在WebSecurityConfigurerAdapter 或ResourceServerConfigurerAdapter 文件中的void configure(HttpSecurity http) 方法中,您可以像这样使用
http
.antMatcher("/api/**")
.authorizeRequests()
...
然后spring security会开始授权以/api路径开头的请求。
如果在ResourceServerConfigurerAdapter 中添加它,spring oauth2 将从那里开始授权。要为/admin 等端点配置网络安全,请在您的WebSecurityConfigurerAdapter 中
http
.antMatcher("/admin/**")
.authorizeRequests()
...