okta 对应用程序进行身份验证时如何获取会话

Posted

技术标签:

【中文标题】okta 对应用程序进行身份验证时如何获取会话【英文标题】:How to get session when okta authenticates the application 【发布时间】:2021-12-28 01:12:28 【问题描述】:

我确实遵循了以下内容并让我的应用程序正常工作。 https://developer.okta.com/docs/guides/implement-grant-type/authcode/main/#grant-type-flow

但是一旦用户通过身份验证,我就无法获得会话。 我正在使用 ServletFilter 导航到 okta 登录页面(通过 /authorize 端点),但我没有在 doFilter 方法中获取会话。

我在 UI 中使用 Primefaces。

这是我的示例代码。 在 ServletFilter 类中......它来到这里,但返回会话始终为空。

@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws IOException, ServletException 
HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
HttpServletResponse httpServletResponse = (HttpServletResponse) servletResponse;
HttpSession httpSession = httpServletRequest.getSession(false); // return null here

这是我导航到 okta 登录页面的 doFilter 中的代码。

httpServletResponse.sendRedirect("https://XXX.oktapreview.com/oauth2/default/v1/authorize?client_id=0oa1w21hrnFPT01d7&response_type=code&response_mode=query&scope=openid%20email%20profile%20groups&state=xyz&redirect_uri=http://<host>:<port>/app");

【问题讨论】:

Please add a minimal, complete, and verifiable example 用示例代码更新问题 为什么要使用httpServletRequest.getSession(true); getSession(true) 创建新的会话权限,因为会话为空。由 okta 进行身份验证时不应该有来自 okta 的会话吗?我想在注销期间从 okta 和应用程序中终止会话。 ***.com/questions/60521346/… 【参考方案1】:

正如评论中提到的可怕袋熊,它适用于创建的新会话。谢谢。

【讨论】:

以上是关于okta 对应用程序进行身份验证时如何获取会话的主要内容,如果未能解决你的问题,请参考以下文章

通过 Okta 进行身份验证后,会话 cookie 不会发送到 Spring Boot 应用程序

带有 okta OAUTH 令牌身份验证的 Django Rest API

如何使用我的数据库创建身份验证服务器 OKTA?

Laravel - 使用会话令牌进行身份验证

禁用 cookie 时如何验证用户身份?

如何在 PHP 中生成 QuickBlox 身份验证签名?