首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否可以通过Keycloak中的REST检查用户是否有活动/有效的会话?

是否可以通过Keycloak中的REST检查用户是否有活动/有效的会话?
EN

Stack Overflow用户
提问于 2016-10-20 20:15:06
回答 3查看 7.9K关注 0票数 3

是否可以通过REST检查用户是否有活动/有效的会话?

我正在使用Java管理客户机。我看到UserSessionRepresentation回来了

代码语言:javascript
复制
List<UserSessionRepresentation> usr = Keycloak.realm("realmId").users().get("userId").getUserSessions();

但是UserSessionRepresentation没有我想要的信息。有可能吗?

EN

回答 3

Stack Overflow用户

发布于 2021-09-14 08:15:11

您可以使用以下地址检查您的会话:

代码语言:javascript
复制
http://keycloakAddressAndPort/auth/realms/develop/protocol/openid-connect/userinfo

如果会话不正常,则会看到此响应(http状态代码401):

代码语言:javascript
复制
{
    "error": "invalid_request",
    "error_description": "User session not found or doesn't have client attached on it"
}

如果可以的话,您可以看到类似的内容(http状态代码200):

代码语言:javascript
复制
{
    "sub": "c0c25095-63e7-471d-a39e-f3b157c91fd7",
    "email_verified": true,
    "name": "Amir Azizkhani",
    "preferred_username": "a.azizkhani@...",
    "given_name": "Amir",
    "family_name": "Azizkhani",
    "email": "a.azizkhani@...."
}

邮递员json:

代码语言:javascript
复制
{
    "info": {
        "_postman_id": "77ce65c3-948a-4b3d-a97b-b11cd00c593b",
        "name": "Spring Keycloak",
        "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
    },
    "item": [
    
        {
            "name": "openid-connect/userinfo",
            "request": {
                "auth": {
                    "type": "bearer",
                    "bearer": [
                        {
                            "key": "token",
                            "value": "eyJhbGciOiJSUzI1NiIsInR5cC...",
                            "type": "string"
                        }
                    ]
                },
                "method": "GET",
                "header": [
                    {
                        "key": "accept",
                        "value": "application/json"
                    }
                ],
                "url": {
                    "raw": "http://192.168.131.33:8080/auth/realms/develop/protocol/openid-connect/userinfo",
                    "protocol": "http",
                    "host": [
                        "192",
                        "168",
                        "131",
                        "33"
                    ],
                    "port": "8080",
                    "path": [
                        "auth",
                        "realms",
                        "develop",
                        "protocol",
                        "openid-connect",
                        "userinfo"
                    ]
                },
                "description": "Dont forget to set Bearer value obtains from token request"
            },
            "response": []
        }
    ]
}
票数 3
EN

Stack Overflow用户

发布于 2016-10-20 20:21:07

我认为您希望就是那个获得活动客户端会话的列表:

代码语言:javascript
复制
GET /admin/realms/{realm}/client-session-stats

描述

键是客户端id,(返回的)值是当前与该客户端一起活动的会话数。只有实际具有与它们关联的会话的客户端才会出现在此地图中。

票数 0
EN

Stack Overflow用户

发布于 2021-04-13 21:41:05

您在这里引用的特定API端点(接口实现 )只返回该用户的活动/有效会话。您可以在会话id (或其他各种事物)上匹配。如果会话无效,则标记为“删除”,而不返回该端点。所以这似乎是你想要的。

但也要意识到,如果您正在寻找其他会话(比如离线会话)。如果需要,请检查链接的源以获得更多信息或其他端点。

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

https://stackoverflow.com/questions/40163736

复制
相关文章

相似问题

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