我的应用程序由一个 Angular UI 和一个 Spring 后端组成。两者捆绑在一起并部署在同一台服务器上。我是 Spring Security/Oauth2 的新手,我觉得它很混乱。我想公开一些可以从 UI 或 Postman/Swagger 使用的 API。我已经为此成功配置了 Spring security 5 的 OAuth2ResourceServer,它工作得非常好。当我使用不记名令牌调用 API 时,它按预期工作。
http.requestMatchers().antMatchers("/api/**")
.and().authorizeRequests().anyRequest().authenticated()
.and().oauth2ResourceServer().jwt();
现在,当从 UI 进行 API 调用时,我还必须进行相同的配置。这非常令人困惑。我试图创建一个单独的 http 配置,如下所示;
http.antMatcher("/**").authorizeRequests()
.antMatchers("/").permitAll()
.anyRequest().authenticated()
.and()
.oauth2Login();
...
...
我真的不知道如何进行。我已经clientid, clientSecret, authorization-grant-type, redirect-uri, scope, authorization-uri, token-uri
在 application.properties 文件中进行了配置。期望是通过集中登录页面提示用户,并以某种方式将 grant_code 交换为访问令牌 (jwt)。来自 UI 的所有请求都必须在其标头中包含此令牌才能访问我在上面描述的 API(资源服务器配置)。同样,我对将令牌存储在标头或 cookie 中感到困惑。
如果我不清楚,请道歉。我对 OAuth2 的理解非常基本,我正在尝试通读文档页面,这对我来说毫无意义。