首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >有没有办法访问在openid连接过程中设置的会话数据?

有没有办法访问在openid连接过程中设置的会话数据?
EN

Stack Overflow用户
提问于 2019-08-19 16:11:32
回答 1查看 638关注 0票数 2

当我尝试访问Liferay Portal会话数据时,它似乎不包含由内部Liferay Portal进程存储的数据。是否可以访问存储在OpenId-Connect登录过程中的令牌?

基本上,我的任务是查找软件,这可以使门户的实现变得更容易,该门户显示由多个不同内部平台的API端点提供的功能。目前,我正在关注Liferay Portal 7.2。对于Login,我使用了Liferay Portal的OpenId-Connect实现,因为身份验证是由内部Login服务器处理的。在OpenID-connect登录过程结束时返回的访问令牌是一个API-令牌,然后我想使用它来访问各种API-Endpoint。

目前我得到的会话如下所示

代码语言:javascript
运行
复制
HttpSession httpSession = PortalUtil.getHttpServletRequest(actionRequest).getSession();

中的OpenId-Connect实现

代码语言:javascript
运行
复制
com.liferay.portal.security.sso.openid.connect.internal.OpenIdConnectServiceHandlerImpl

然后,我尝试像这样获取会话对象。

代码语言:javascript
运行
复制
Object openIdConnectSessionObject = httpSession.getAttribute("OPEN_ID_CONNECT_SESSION");

但在这一点上,openIdConnectSessionObject始终是null。我读到过不同的作用域有不同的会话,但是有没有办法访问这些数据,或者Liferay Portal可能并不真正适合我正在尝试做的事情。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-19 17:26:28

有一个细节值得注意:

PortalUtil.getHttpServletRequest(actionRequest)将为您提供对遵守HttpServletRequest接口的人工PortletRequest对象的访问权限,以防您需要用于某些期望来自servlet而不是门户世界的请求的HttpServletRequest

PortletRequest只包含指向特定portlet的参数(和会话信息),不包含其他内容。

如果您对实际的底层HttpServletRequest感兴趣,则需要PortalUtil.getOriginalServletRequest,它接受HttpServletRequest作为输入。你将会以你已经探索过的方式得到它。最后,你会有

代码语言:javascript
运行
复制
session = PortalUtil.getOriginalServletRequest(
    PortalUtil.getHttpServletRequest(actionRequest)).getSession();

来获取实际服务器的会话。

我还没有检查这是否有用,甚至不是你所说的问题的可取解决方案,但它可能会让你在解决问题上走得更远。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57552754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档