有没有办法访问在 openid 连接过程中设置的会话数据?
Is there a way to access session data that was set in the openid connect process?
当我尝试访问 Liferay Portal 会话数据时,它似乎不包含由内部 Liferay Portal 进程存储的数据。是否可以访问存储在 OpenId-Connect
登录过程中的令牌?
基本上,我的任务是寻找软件,它可以使实施门户更容易地显示 API- 多个不同内部平台的端点提供的功能。目前,我正在查看 Liferay Portal 7.2。对于登录,我使用了 Liferay Portal 的 OpenId-Connect 实现,因为身份验证由内部登录服务器处理。 OpenID-connect 登录过程结束时返回的访问令牌是一个 API-Token,然后我想用它来访问各种 API-Endpoints。
目前我得到这样的会话
HttpSession httpSession = PortalUtil.getHttpServletRequest(actionRequest).getSession();
查看
中的 OpenId-Connect 实现后
com.liferay.portal.security.sso.openid.connect.internal.OpenIdConnectServiceHandlerImpl
然后我尝试像这样获取会话对象。
Object openIdConnectSessionObject = httpSession.getAttribute("OPEN_ID_CONNECT_SESSION");
但在这一点上,openIdConnectSessionObject
始终是 null
。我读到不同的范围有不同的会话,但是有没有办法访问这些数据或者 Liferay 门户是否真的适合我正在尝试做的事情。
有一个细节值得注意:
PortalUtil.getHttpServletRequest(actionRequest)
将使您能够访问遵循 HttpServletRequest
接口的人造 PortletRequest
对象,以防某些 API 需要来自servlet,而不是门户,世界。
PortletRequest 仅包含指向特定 portlet 的参数(和会话信息),不包含任何其他内容。
如果您对实际的底层 HttpServletRequest 感兴趣,您将需要 PortalUtil.getOriginalServletRequest
,它将 HttpServletRequest 作为输入。你会以你已经探索过的方式得到它。最后,您将拥有
session = PortalUtil.getOriginalServletRequest(
PortalUtil.getHttpServletRequest(actionRequest)).getSession();
获取实际服务器的会话。
我没有检查这是否有用,或者是否是解决您所述问题的可取方案,但它可能会让您进一步解决您的问题。
当我尝试访问 Liferay Portal 会话数据时,它似乎不包含由内部 Liferay Portal 进程存储的数据。是否可以访问存储在 OpenId-Connect
登录过程中的令牌?
基本上,我的任务是寻找软件,它可以使实施门户更容易地显示 API- 多个不同内部平台的端点提供的功能。目前,我正在查看 Liferay Portal 7.2。对于登录,我使用了 Liferay Portal 的 OpenId-Connect 实现,因为身份验证由内部登录服务器处理。 OpenID-connect 登录过程结束时返回的访问令牌是一个 API-Token,然后我想用它来访问各种 API-Endpoints。
目前我得到这样的会话
HttpSession httpSession = PortalUtil.getHttpServletRequest(actionRequest).getSession();
查看
中的 OpenId-Connect 实现后com.liferay.portal.security.sso.openid.connect.internal.OpenIdConnectServiceHandlerImpl
然后我尝试像这样获取会话对象。
Object openIdConnectSessionObject = httpSession.getAttribute("OPEN_ID_CONNECT_SESSION");
但在这一点上,openIdConnectSessionObject
始终是 null
。我读到不同的范围有不同的会话,但是有没有办法访问这些数据或者 Liferay 门户是否真的适合我正在尝试做的事情。
有一个细节值得注意:
PortalUtil.getHttpServletRequest(actionRequest)
将使您能够访问遵循 HttpServletRequest
接口的人造 PortletRequest
对象,以防某些 API 需要来自servlet,而不是门户,世界。
PortletRequest 仅包含指向特定 portlet 的参数(和会话信息),不包含任何其他内容。
如果您对实际的底层 HttpServletRequest 感兴趣,您将需要 PortalUtil.getOriginalServletRequest
,它将 HttpServletRequest 作为输入。你会以你已经探索过的方式得到它。最后,您将拥有
session = PortalUtil.getOriginalServletRequest(
PortalUtil.getHttpServletRequest(actionRequest)).getSession();
获取实际服务器的会话。
我没有检查这是否有用,或者是否是解决您所述问题的可取方案,但它可能会让您进一步解决您的问题。