gpt4 book ai didi

javascript - 检查登录用户 session 状态 OpenAM

转载 作者:行者123 更新时间:2023-12-02 12:13:47 25 4
gpt4 key购买 nike

您好,我有以下案例。基于 Ajax 的 Javascript 应用程序、OpenAM 代理以及 OpenAM 和 JBoss 以及 REST java Web 服务。

如果我正确理解 OpenAM 文档,OpenAM Web 代理将充当 Web 服务器部分和 OpenAM 之间的中介。我的理解是,对于登录、注销、检查登录状态等简单服务,使用 OpenAM api 和 OpenAM 代理就足够了。例如,代理负责处理 token 并将我们重定向到登录页面并返回到请求访问的原始页面。

token 保存在 HTTPOnly cookie 中,这使得它无法访问。

同时 coockie 可以从 JBoss 服务器访问,因此理论上我可以实现根据 OpenAM 验证 token 的服务。还有注销服务。我的理解是,这样的实现将是一种黑客行为,因为首先,如果 session 无效,我们不应该最终到达 JBoss 服务器。应该由代理为我们执行此检查。

我的问题是,当我无法从浏览器(HTTPOnly cookie)访问 token 时,如何检查登录状态,而无需往返 JBoss 服务器仅获取对 cookie 的访问权限。以及如何在不再次涉及 JBoss 服务器的情况下实现注销。

最佳答案

how to check logged in status when I don|t have Access to the token from the browser (HTTPOnly cookie) without doing a roundtrip to the JBoss server only to get Access to the cookie.

如果您处于 HTTPOnly cookie 模式的客户端(浏览器)中并且想要检查 SSOToken cookie(默认名称 iPlanetDirectoryPro)的有效性,那么您可以调用 AM 服务器上的 session 端点。您不需要获取 cookie - 浏览器会将其添加到传出请求中 - 如果成功验证,它将返回 token 的详细信息。这样您就不会在客户端代码中获取 token 本身,但您可以解决它并回答您的问题。

请求:

POST /openam/json/sessions?_action=getSessionInfo HTTP/1.1
Host: myserver.com:8080
Content-Type: application/json
Cookie: iPlanetDirectoryPro=... <-- added by browser, not in code
Accept-API-Version: protocol=1.0,resource=2.0
Cache-Control: no-cache

{}

回应:

{
    "username": "demo",
    "universalId": "id=demo,ou=user,dc=openam,dc=forgerock,dc=org",
    "realm": "/",
    "latestAccessTime": "2017-09-28T20:15:17Z",
    "maxIdleExpirationTime": "2017-09-28T20:45:17Z",
    "maxSessionExpirationTime": "2017-09-28T22:15:16Z",
    "properties": {}
}

关于javascript - 检查登录用户 session 状态 OpenAM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46344748/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com