java - 是否可以通过 Keycloak 中的 REST API 检查用户是否具有 Activity/有效 session ?

标签 java keycloak

是否可以通过 REST API 检查用户是否有 Activity/有效 session ?

我正在使用 Java REST 管理客户端。我看到了

返回的UserSessionRepresentation
List<UserSessionRepresentation> usr = Keycloak.realm("realmId").users().get("userId").getUserSessions();

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

最佳答案

您可以使用此地址检查您的 session :

http://keycloakAddressAndPort/auth/realms/develop/protocol/openid-connect/userinfo

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

{
    "error": "invalid_request",
    "error_description": "User session not found or doesn't have client attached on it"
}

如果没问题,您会看到类似这样的内容(http 状态代码 200):

{
    "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@...."
}

完整的 postman json:

{
    "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": []
        }
    ]
}

关于java - 是否可以通过 Keycloak 中的 REST API 检查用户是否具有 Activity/有效 session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40163736/

相关文章:

java - 请提供 hibernate 条件中 If 语句的示例

java - 如何在java中将二维数组的子数组引用为一维数组

java - 使用 HSSFWorkbook 将 Jtable 导出到 Excelsheet

authentication - keycloak 删除自动添加的默认角色

java - Keycloak:如何以编程方式添加具有关联用户的新子组?

java - SQL异常 : Could not retrieve transation read-only status server

java - 在 maven 中构建包时出错

spring - 无法在可访问已部署 JAR 的 Wildfly 中加载 Spring 框架库

docker - 如何配置容器化的 Keycloak-gatekeeper 来充当反向代理?

amazon-web-services - Keycloak 服务器管理控制台阻止使用 Istio 网关和 AWS HTTPS 应用程序负载均衡器的 AWS K3S Kubernetes 集群上的混合内容响应