问题标签 [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.
angular - 如何使用从 OTP 获得的令牌配置 Keycloak
我正在使用隐式流程。我已经创建了 OTP API。我在我的自定义 keycloak 模板中添加了一个用于 OTP 登录的选项。
现在,在从 OTP 登录 API 成功获取令牌后,重定向到我的主应用程序时。keycloak 登录模板再次打开。如何通过从 otp 登录获得的令牌配置 keycloak 对象,以便我可以直接重定向到我的主应用程序?
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();
}
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,以便允许空角色列表访问?
node.js - 如何配置 keycloak-(nodejs-)connect 以使用 PKCE?
我有一个我想用keycloak-connect
. 我还没有找到任何关于如何在这个中间件中使用 PKCE 设置授权代码流的文档或示例。
我想我已经正确配置了 Keycloak (IDP),因为来自应用程序的身份验证失败,因为中间件既不传输code_challenge
也不传输code_challenge_method
参数,身份验证服务器拒绝:
中间件配置:
keycloak-connect
甚至有能力利用这个流程吗?
node.js - 如何在 keycloak 中验证令牌并获取用户详细信息?
我在我的nodejs应用程序中为keycloak上的注册用户实现了keycloak,对于登录API,我使用了API:
如果用户名和密码正确,则返回登录用户的令牌,
现在我需要传递这个令牌(由上面的 API 返回)并检查这个令牌是否正确,如果令牌正确我需要用户详细信息,是否有任何 API。
提前致谢
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是怎么生成的?
django - Keycloak 与 Python 的集成
有人知道如何将 Keycloak 连接到 Django 后端的可靠教程吗?我尝试使用这个: https : //blog.jonharrington.org/static/integrate-django-with-keycloak 但除了 Keycloak 部分,Django 设置并不像看起来那么简单。
再一次,我陷入了 python 的技术问题。这两种描述对我来说似乎都很模糊。有没有人通过那里的教程设法做到这一点?
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 令牌对同一领域中的任何其他客户端进行身份验证。但显然我在拼图中遗漏了一些东西。
authentication - 使用 OIDC 身份代理进行 Keycloak 2 因素身份验证
是否可以使用 OIDC 身份代理进行 2 因素身份验证
我正在尝试使用 TOTP 设置 2 因素身份验证,它适用于密码身份验证方法,但不适用于 OIDC 身份代理。
1-带密码方法:
- 登录名+密码
- 一次性密码
- 成功登录
2- 使用 OIDC 身份代理:
- 选择 oidc 提供商
- 选择帐户
- 成功登录
是否可以otp password
在 oidc 方法中添加阶段?有人可以知道这个问题吗?
express - 将 Keycloak 添加到 express 服务器以从请求中获取 kauth
我正在尝试使用keycloak-connect将 Keycloak 身份验证添加到我的 ApolloServer 。我已经设置了我的领域并从localhost:8080/auth
. 但是,我在从上下文函数中的请求中获取 kauth 时遇到问题:
目前我有以下设置:
然后我尝试req.kauth
在上下文中访问,例如:
但是,我无法从我的请求中检索 kauth 属性。我该如何解决这个问题?