当前位置: 首页 > 知识库问答 >
问题:

KeyCloak:未为联邦用户保存授权范围

谭凯
2023-03-14

我有一个混合用户群的Keycloak领域。有些用户是原生的(本机用户),有些是通过自定义用户存储SPI实现提供的(联邦用户)。

当我执行OIDC登录时,Keycloak要求批准4个作用域(测试客户机、配置文件、电子邮件、角色)。该请求是用openID作用域执行的。Keycloak将其转换为这四个作用域。test-client是客户端名称。在管理UI中没有显示具有此名称的实际客户端范围。

使用本机用户,一切都很好。我批准并成功完成登录。

[invalid_scope] Client no longer has requested consent from user

11:06:31,964 WARN  [org.keycloak.events] (default task-10) type=CODE_TO_TOKEN_ERROR, realmId=torment, clientId=test-client, userId=f:ff4c66e5-2a6f-465c-8418-200648a49973:dfb_user, ipAddress=127.0.0.1, error=not_allowed, grant_type=authorization_code, code_id=418dfa66-b4c8-4481-b46d-ceac97e65b39, client_auth_method=client-secret
  1. 为什么会发生这种情况?
  2. 如何使其工作?

共有1个答案

曹建华
2023-03-14

您似乎没有将作用域列表作为用于启动Keycloak身份验证的URL中的查询参数传递。请检查您的身份验证URL。

 Set<ClientScopeModel> clientScopes = TokenManager.getRequestedClientScopes(scopeParam, client);
        if (!TokenManager.verifyConsentStillAvailable(session, user, client, clientScopes)) {
            event.error(Errors.NOT_ALLOWED);
            throw new CorsErrorResponseException(cors, OAuthErrorException.INVALID_SCOPE, "Client no longer has requested consent from user", Response.Status.BAD_REQUEST);
        }
 类似资料:
  • null null 使用NodePort服务公开Keycloak。 应用程序使用istio入口网关公开。 Keycloak服务器版本:9.0.0。

  • 我有一个关于钥匙斗篷的问题。我有安装Keycloak独立,wildfly与Keycloak适配器,并希望访问我的服务在wildfly中部署的Rest点,这是由Keycloak保护的。没有keycloaksecurity的Rest运行良好。但是当我想访问安全endpoint时,我总是得到一个未经授权的响应。 我的客户机(JavaFX)获得访问令牌很好,如果我输入错误的凭据,我会得到一个未经授权的异常

  • 我想做的是: 我的应用程序集成了钥匙斗篷。因此,当我的应用程序启动时,会向用户显示钥匙斗篷登录页面。现在,我正在尝试提供一个使用PingFedrate登录的选项。因此,将出现一个用于使用 PingFed 登录的按钮(一旦在密钥保护中配置了新的 SAML 提供程序)。在 PingFedrate 上,我尝试集成 SP 初始化的 SSO: 我添加了一个新的SP连接,并将其配置为SSP启动的SSO。(它迫

  • 我是Spring Security的新手,我正在开发一个需要使用Spring Security 3.2进行身份验证和授权的web应用,身份验证部分工作正常,但授权不正常。下面是我的Spring Security配置xml片段。 使用此配置,除了授权之外,其他一切都可以正常工作。我有两个用户,即tim@abc.com(角色=管理员)和bob@abc.com(role=USER),但是当我尝试使用bo

  • 我们使用keycloak-adapter与Jetty一起使用KeyCloak进行身份验证和授权。根据OIDC Auth流程的Keycloak文档: 我们有连接到Jetty并使用Auth的webapps。因此,我们创建了一个公共客户端,它对WebApp/REST身份验证非常有效。 问题是,一旦我们启用授权,客户端类型就会从公共类型转换为机密类型,并且不允许将其重置为公共类型。现在,我们在汤里。由于授

  • 我正在使用postman,并尝试通过http://localhost:8180/auth/admin/realms/demo/users/{userID}更新用户的配置文件,但收到响应。 通过http://localhost:8180/auth/admin/realms/demo/users/{userID}发送带有Json内容类型和用户信息的Put请求。 不幸的是,我已经连续收到了401个回复。