我正在将 Okta 与我的 Spring Boot 应用程序集成,以使用 OAuth2 登录和 OIDC 进行用户身份验证。我在 Okta 中设置了以下会话策略
期望的是,如果用户在浏览器中保持非活动状态一段时间 1分钟后,他们应该自动注销并提示登录 通过 Okta 再次进入。然而,这并没有按预期发生。甚至 1 分钟不活动后,用户仍保持登录状态。
春季启动代码
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http
.oauth2ResourceServer(oauth2 -> oauth2
.jwt(Customizer.withDefaults())
)
.authorizeHttpRequests(authorizeRequests ->
authorizeRequests
.anyRequest().authenticated()
)
.oauth2Login(oauth2 ->
oauth2
.userInfoEndpoint(userInfo ->
userInfo
.oidcUserService(oidcUserService())
)
);
return http.build();
}
控制器
@RestController
public class UserController {
@GetMapping("/")
public String getToken(@RegisteredOAuth2AuthorizedClient OAuth2AuthorizedClient authorizedClient) {
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
System.out.println("Authorities: " + authentication.getAuthorities());
return "Authorities: " + authentication.getAuthorities();
}
@PreAuthorize("hasAuthority('PAD')")
@GetMapping("/user")
public String getUser() {
return "Hello World";
}
@PreAuthorize("hasAuthority('CAD')")
@GetMapping("/usertest")
public String getUserTest() {
return "Hello World";
}
我的 Spring Boot 配置中是否缺少某些内容来强制 Okta 的会话超时? Spring Boot 是否应该以不同的方式管理会话,还是完全由 Okta 处理?如何确保用户在 1 分钟不活动后强制重新登录?
将 Spring Boot 应用程序配置为仅依赖 Okta 会话超时设置来使会话失效
设置超时时间
配置API调用超时时间 您可以指定您的API调用超时时间 org 在超时发生之前等待 API 调用完成。这 最小设置为 30 秒。您选择的超时值已应用 发送到 SCIM 服务器的所有请求(GET、PUT 和 POST)。
确认您有 SCIM 连接器。请参阅连接到 SCIM 连接器。
在管理控制台中,转到应用程序应用程序。
输入 搜索字段中您的本地应用程序集成的名称。
单击应用程序集成名称,然后单击“配置”选项卡。
在 连接器配置部分,单击编辑。
在API超时中 通话列表,选择超时时间。
单击“保存”。
来源:https://help.okta.com/en-us/content/topics/provisioning/opp/opp-api-timeout.htm