SpringBoot中的多重身份验证提供程序

时间:2019-08-06 04:21:21

标签: spring-boot authentication

在SpringBoot应用程序中,我试图为两个不同的区域实现两个不同的授权。

区域1 [API]: / api / **

区域2 [管理员]: / admin / **

区域1 [API]是实现JWT身份验证的应用程序的API部分。每个以abstract class ServiceIf[RunArgs](val name: String) { def run(arg: RunArgs): Any = {} } class RexecIf extends ServiceIf[(ExecParams, Int)]("Rexec") { override def run(arg: (ExecParams, Int)) = { // ... } } 开头的请求都将需要一个包含jwt令牌的Authorization标头。

区域2 [管理员]:是管理员区域。我想使用浏览器中的URL登录的位置,例如(/ admin / login)。我希望将用户名和密码保存在application.properties中,对于以/api开头的任何URL,我都希望对用户进行身份验证(基于会话)。在这种情况下,我想应用内存中身份验证。我正在寻找针对两个不同领域实施这两种不同身份验证的想法。

1 个答案:

答案 0 :(得分:0)

您可以使用.authorizeRequests()方法为该安全配置文件配置端点。

void configure(HttpSecurity http)WebSecurityConfigurerAdapter文件中的ResourceServerConfigurerAdapter方法中,您可以使用

    http
    .antMatcher("/api/**")
    .authorizeRequests()
    ...

然后,Spring Security将开始授权以/api路径开头的请求。 如果将其添加到ResourceServerConfigurerAdapter弹簧中,则oauth2将从那里开始授权。要在/admin

中为WebSecurityConfigurerAdapter这样的终结点配置Web安全性
http
    .antMatcher("/admin/**")
    .authorizeRequests()
    ...