问题标签 [keycloak-connect]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
55 浏览

angular - 如何使用从 OTP 获得的令牌配置 Keycloak

我正在使用隐式流程。我已经创建了 OTP API。我在我的自定义 keycloak 模板中添加了一个用于 OTP 登录的选项。

现在,在从 OTP 登录 API 成功获取令牌后,重定向到我的主应用程序时。keycloak 登录模板再次打开。如何通过从 otp 登录获得的令牌配置 keycloak 对象,以便我可以直接重定向到我的主应用程序?

0 投票
1 回答
474 浏览

spring-boot - 我们如何在 Java Springboot 中动态使用 Policy-enforcer?

Saurav Chaurasia 周五,5 月 7 日,下午 5:00(20 小时前)给我

就像我可以通过在 application.properties 中提供路径、方法和资源来使用静态策略执行器一样。但是在实时应用程序中,我们将拥有 N 个角色,我们将拥有 N 个 API,我们将在 KeyCloak 的资源、策略和权限中提供这些 API。将来,如果我们希望将更多角色添加到 keycloak 中,并且将添加具有必要权限的新资源。我们不会回到我们的 springboot 来更改资源和角色的代码。所有的权限检查都应该对 Spring Boot 是动态的,我们该怎么做,请帮帮我。

我目前使用的静态版本适用于少数角色。我们正在向 keyCloak 添加更多角色。

下面是静态代码。

application.properties

keycloak.realm=大学

keycloak.auth-server-url=http://localhost:8080/auth

keycloak.ssl-required=外部

keycloak.resource=课程管理

keycloak.bearer-only=true

keycloak.credentials.secret=a5df9621-73c9-4e0e-9d7a-97e9c692a930

keycloak.securityConstraints[0].authRoles[0]=老师

keycloak.securityConstraints[0].authRoles[1]=ta

keycloak.securityConstraints[0].authRoles[2]=学生

keycloak.securityConstraints[0].authRoles[3]=parent

keycloak.securityConstraints[0].securityCollections[0].name=课程管理

keycloak.securityConstraints[0].securityCollections[0].patterns[0] = /courses/get/*

#keycloak.policy-enforcer-config.lazy-load-paths=true

keycloak.policy-enforcer-config.paths[0].path=/courses/get/*

keycloak.policy-enforcer-config.paths[0].methods[0].method=GET

keycloak.policy-enforcer-config.paths[0].methods[0].scopes[0]=view

keycloak.policy-enforcer-config.paths[0].methods[1].method=DELETE

keycloak.policy-enforcer-config.paths[0].methods[1].scopes[0]=delete

配置.class

`导入java.util.List;

导入 org.keycloak.AuthorizationContext;

导入 org.keycloak.KeycloakSecurityContext;

导入 org.keycloak.representations.idm.authorization.Permission;

公共类身份{

}`

控制器类

导入 java.math.BigInteger;

导入 java.net.URI;

导入 java.util.ArrayList;

导入 java.util.List;

导入 javax.servlet.http.HttpServletRequest;

导入 org.keycloak.KeycloakSecurityContext;

导入 org.springframework.beans.factory.annotation.Autowired;

导入 org.springframework.hateoas.EntityModel;

//导入 org.springframework.hateoas.Link;

//导入 org.springframework.hateoas.server.mvc.WebMvcLinkBuilder;

//导入 org.springframework.http.HttpHeaders;

导入 org.springframework.http.MediaType;

导入 org.springframework.http.ResponseEntity;

导入 org.springframework.ui.Model;

导入 org.springframework.web.bind.annotation.DeleteMapping;

导入 org.springframework.web.bind.annotation.GetMapping;

导入 org.springframework.web.bind.annotation.PathVariable;

导入 org.springframework.web.bind.annotation.PostMapping;

导入 org.springframework.web.bind.annotation.RequestBody;

导入 org.springframework.web.bind.annotation.RequestHeader;

导入 org.springframework.web.bind.annotation.RestController;

导入 org.springframework.web.servlet.support.ServletUriComponentsBuilder;

导入 com.fasterxml.jackson.core.JsonProcessingException;

导入 com.lantana.school.course.coursemanagment.security.Identity;

@RestController

公共类课程控制器{

//

// @GetMapping(value = "/courses/api")

// public String generateApi(@RequestHeader("Authorization") String token){

////// rol.clear();

////// 列表头 = 令牌。;

// System.out.println("Token: "+token);

////// System.out.println("角色控制器:"+rol);

////// rol=couseService.getRole(token);

////// List<?> link=new ArrayList<>();

//////

// return new String("Role Fetched");

// }

//

}

服务类

导入 java.util.ArrayList;

//导入java.util.Iterator;

导入 java.util.LinkedHashMap;

导入 java.util.List;

导入 java.util.Map;

导入 org.apache.commons.codec.binary.Base64;

导入 org.json.JSONArray;

导入 org.json.JSONObject;

导入 org.springframework.stereotype.Component;

@零件

公共类 CourseService {

// return id+"删除成功";

// System.out.println("解码:" + decodedString);

// 列表动作=new ArrayList();

// 映射角色=((Map)jo.get("realm_access"));

// Iterator<Map.Entry> itr1=roles.entrySet().iterator();

// while(itr1.hasNext())

// {

// Map.Entry pair=itr1.next();

// System.out.println(pair);

// }

}

模型类

导入 org.springframework.hateoas.RepresentationModel;

公共类课程扩展了RepresentationModel {

}

hatos 自定义类

导入 java.util.List;

导入 org.springframework.beans.factory.annotation.Autowired;

导入 org.springframework.hateoas.EntityModel;

导入 org.springframework.hateoas.server.mvc.WebMvcLinkBuilder;

导入 org.springframework.stereotype.Component;

导入 org.springframework.ui.Model;

导入 com.fasterxml.jackson.core.JsonProcessingException;

@零件

公共课仇恨{

// course.removeLinks();

}

0 投票
1 回答
94 浏览

node.js - 即使是空角色,Keycloak 也会拒绝访问

Node.js应用程序中,我尝试使用 保护页面keycloak.protect(),但成功登录后应用程序总是以403错误响应。

Keycloak 是这样配置的:

  • Master-> Add realm-> 名称:kingdom
  • Clients-> Create-> 客户 ID:nodejs
  • Clients-> nodejs-> Settings
    • Access Type:机密
    • Valid Redirect URIs: *

然后添加Alice用户并在 Keycloak 要求凭据时以该用户身份成功登录,但随后获取Access denied页面。我已经建立了一个项目,一切都可能是./run.sh一个命令。我将不胜感激有关如何额外配置 Keycloak 的任何提示。

如何正确设置 Keycloak,以便允许空角色列表访问?

0 投票
1 回答
400 浏览

node.js - 如何配置 keycloak-(nodejs-)connect 以使用 PKCE?

我有一个我想用keycloak-connect. 我还没有找到任何关于如何在这个中间件中使用 PKCE 设置授权代码流的文档或示例。

我想我已经正确配置了 Keycloak (IDP),因为来自应用程序的身份验证失败,因为中间件既不传输code_challenge也不传输code_challenge_method参数,身份验证服务器拒绝:

中间件配置:

keycloak-connect甚至有能力利用这个流程吗?

0 投票
1 回答
983 浏览

node.js - 如何在 keycloak 中验证令牌并获取用户详细信息?

我在我的nodejs应用程序中为keycloak上的注册用户实现了keycloak,对于登录API,我使用了API:

如果用户名和密码正确,则返回登录用户的令牌,

现在我需要传递这个令牌(由上面的 API 返回)并检查这个令牌是否正确,如果令牌正确我需要用户详细信息,是否有任何 API。

提前致谢

0 投票
0 回答
108 浏览

keycloak - 如何自己生成 SSO Cookie (KEYCLOAK_IDENTITY)?

请问如何生成 jwt 令牌以将其用作KEYCLOAK_IDENTITY cookie 以绕过登录表单?

我在 keycloak 中配置了一个SAML 客户端,并将其映射到我们的hubspot帐户,所以我想单击我的应用程序中的一个按钮来访问我们的 hubspot 帐户,我的想法是将 KEYCLOAK_IDENTITY cookie 添加到 http 响应(IDP 发起的 sso 登录url) 通过 keycloak 在 hubspot 中进行身份验证,无需登录表单。请注意,我使用浏览器KEYCLOAK IDENTITY ccokie 成功尝试了此操作。但是不知道这个cookie是怎么生成的?

0 投票
0 回答
261 浏览

django - Keycloak 与 Python 的集成

有人知道如何将 Keycloak 连接到 Django 后端的可靠教程吗?我尝试使用这个: https : //blog.jonharrington.org/static/integrate-django-with-keycloak 但除了 Keycloak 部分,Django 设置并不像看起来那么简单。

然后,我搬到了这个: https ://sairamkrish.medium.com/keycloak-integration-part-3-integration-with-python-django-backend-5dac3b4a8e4e

再一次,我陷入了 python 的技术问题。这两种描述对我来说似乎都很模糊。有没有人通过那里的教程设法做到这一点?

0 投票
1 回答
1074 浏览

node.js - Node.js API 由 Keycloak 保护,访问类型为“仅承载”

我是 Keycloak 的新手。我根据文档在 Node.js 中创建了 simples 应用程序:

我的keycloak.json样子如下

客户端 mydemoapp-api 的访问类型设置为“机密”。使用 Postman 或 CURL,我可以生成令牌,然后使用它访问 entpoint /api。如果我尝试在没有令牌的情况下连接到 /api,我会被拒绝访问 - 到目前为止一切都很好。

我在 Keycloak 管理员中将 mydemoapp-api 的访问类型更改为“仅承载”。然后我在同一个领域 mydemoapp-client 中创建了另一个客户端,访问类型为“public”

我再次使用 Postman 为客户端 mydemoapp-client 请求了一个令牌。然后我使用这个令牌访问端点/api。但我总是被拒绝访问。

从文档中我了解到,如果没有指定角色并且没有激活其他限制,我应该能够登录到领域中的任何客户端,然后使用 SSO 令牌对同一领域中的任何其他客户端进行身份验证。但显然我在拼图中遗漏了一些东西。

0 投票
1 回答
186 浏览

authentication - 使用 OIDC 身份代理进行 Keycloak 2 因素身份验证

是否可以使用 OIDC 身份代理进行 2 因素身份验证

我正在尝试使用 TOTP 设置 2 因素身份验证,它适用于密码身份验证方法,但不适用于 OIDC 身份代理。

1-带密码方法:

  • 登录名+密码
  • 一次性密码
  • 成功登录

2- 使用 OIDC 身份代理:

  • 选择 oidc 提供商
  • 选择帐户
  • 成功登录

是否可以otp password在 oidc 方法中添加阶段?有人可以知道这个问题吗?

0 投票
1 回答
222 浏览

express - 将 Keycloak 添加到 express 服务器以从请求中获取 kauth

我正在尝试使用keycloak-connect将 Keycloak 身份验证添加到我的 ApolloServer 。我已经设置了我的领域并从localhost:8080/auth. 但是,我在从上下文函数中的请求中获取 kauth 时遇到问题:

目前我有以下设置:

然后我尝试req.kauth在上下文中访问,例如:

但是,我无法从我的请求中检索 kauth 属性。我该如何解决这个问题?