我正在尝试获取分页的用户列表我尝试使用此端点
获取 /admin/realms/{realm}/users
但响应包含所有用户。
我正在尝试为 keycloak 创建一个 docker 容器。但是当我在 docker 快速启动终端中尝试以下命令时:
docker run -it -p 8080:8080 -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=admin jboss/keycloak
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
/opt/jboss/tools/docker-entrypoint.sh: line 165: DB_ADDR: unbound variable
Run Code Online (Sandbox Code Playgroud)
经过一番研究,我发现我DB_ADDR还需要传递命令。所以我现在尝试了以下命令:
docker run -it -p 8080:8080 -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=admin -e DB_ADDR=keycloak-db -e DB_VENDOR=h2 jboss/keycloak
Run Code Online (Sandbox Code Playgroud)
但我仍然遇到同样的错误。我真的不知道我做错了什么。如果有人可以在这里帮助我,请。谢谢你们。
我正在尝试从 Keycloak 端点获取身份验证令牌并使用它来访问另一个资源。获取令牌不是问题,但将其传递到另一个请求的标头中却是一项不可能的任务,至少在单个命令中是这样:
curl \
-X POST \
-d 'client_id=app' \
-d 'username=username' \
-d 'password=password' \
-d 'grant_type=password' \
-d "client_secret=$APP_SECRET" \
'http://localhost:9000/auth/realms/realm/protocol/openid-connect/token' \
| \
jq -r '.access_token' \
| \
curl \
-X GET \
-H "Accept: application/json" \
-H "Authorization: Bearer @-" \ # <- read header value from stdin
-u "username:password" \
"http://localhost:8080/app/api/"
Run Code Online (Sandbox Code Playgroud)
实现这一目标的替代方法是什么?
我想创建一个用户并在 Keycloak 的单个API 中为其分配客户端角色,我已附上详细信息。
我有这个API
http://testkeycloak.com:8085/auth/admin/realms/engineer/users
{
"enabled":true,
"username":"joshbiden",
"email":"email@gmail.com",
"firstName":"Josh",
"lastName":"biden",
"attributes":
{
"Mobile Number":"3333332332"
},
"clientRoles":
{
"name": "DEVELOPER"
},
"credentials":
[
{
"type":"password",
"value":"rollback",
"temporary":false
}
]
}
Run Code Online (Sandbox Code Playgroud)
客户角色 - 详细信息
{
"id": "32e432da-d0c0-45f8-a67d-f3146b7a24b4",
"name": "DEVELOPER",
"composite": false,
"clientRole": true,
"containerId": "343434-7631-4187-ac76-ad78de119b90"
}
Run Code Online (Sandbox Code Playgroud)
如何将两个客户端的角色分配给用户,我尝试添加用户但面临未知错误。让我知道同样的问题的任何解决方案
我正在尝试从邮递员向我的节点 apollo、express 后端发出经过身份验证的请求。我收到一条错误消息,指出用户未经身份验证。当我查看上下文对象时,没有访问令牌并且调用 context.kauth.isAuthenticated() 返回 false。
查看访问令牌,我可以看到它accessToken确实是空白的,但请求标头中确实存在承载令牌。
所以我不确定为什么不包含访问令牌。
我正在向邮递员发出请求,我将令牌包含在请求中,如下所示:
为了获得此访问令牌,我首先向 Keycloak 发出邮递员请求以生成此令牌,如下所示(请注意,我故意不显示这篇文章的用户名和密码
我在上面的邮递员请求中使用了上述访问令牌。
这就是我的index.js文件的样子:
require("dotenv").config();
import { ApolloServer } from "apollo-server-express";
import { ApolloServerPluginDrainHttpServer } from "apollo-server-core";
const { makeExecutableSchema } = require('@graphql-tools/schema');
import { configureKeycloak } from "./auth/config"
import {
KeycloakContext,
KeycloakTypeDefs,
KeycloakSchemaDirectives,
} from "keycloak-connect-graphql";
import { applyDirectiveTransformers } from "./auth/transformers";
import express from "express";
import http from "http";
import typeDefs from "./graphql/typeDefs";
import resolvers from "./graphql/resolvers";
import { MongoClient } from "mongodb";
import …Run Code Online (Sandbox Code Playgroud) 我的要求是在 Keycloak 中使用电子邮件启用 2FA。
启用后,如果用户尝试通过电子邮件和密码登录,用户成功通过身份验证后,基于时间的令牌将发送到电子邮件。
用户将通过自定义 UI 执行此操作,即在我们的产品中,我们有 UI 为用户启用/禁用 2FA。
我们正在使用 Keycloak 并且我们希望使用 Keycloak API 来实现这一点。
我正在使用 keycloak-admin-client 与 Keycloak API 进行交互,但我没有找到足够的资源来使用 keycloak-admin-client 实现此目的。
我正在寻找一种使用 keycloak-admin-client 为用户启用 2FA 的方法。
任何帮助将不胜感激。
谢谢
keycloak keycloak-rest-api keycloak-admin-client keycloak-spring-boot-starter
我正在关注这个教程
https://www.keycloak.org/getting-started/getting-started-docker
keycloak server我设法使用以下命令启动
docker run -p 8080:8080 -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=admin quay.io/keycloak/keycloak:20.0.2 start-dev
Run Code Online (Sandbox Code Playgroud)
在我的本地计算机上并通过登录到控制台http://localhost:8080
我可以使用该admin用户登录。发布后,我创建了 arealm和 anew user并设置了凭据,但是,我无法通过新创建的用户登录。(在创建时将其标记为启用)我在docker日志中看到的错误是
2022-12-21 14:23:00,184 WARN [org.keycloak.events] (executor-thread-17) type=LOGIN_ERROR, realmId=f5e9717b-0eeb-47cf-9d9b-2f697416c841, clientId=account-console, userId=null, ipAddress=172.17.0.1, error=user_not_found, auth_method=openid-connect, auth_type=code, redirect_uri=http://localhost:8080/realms/master/account/?referrer=security-admin-console&referrer_uri=http%3A%2F%2Flocalhost%3A8080%2Fadmin%2Fmaster%2Fconsole%2F%23%2Fmyrealm%2Fusers%2F9d6a5677-3767-4bce-a5bb-db20fe2c7ac5%2Fsessions#/, code_id=aa9ac3df-dadc-4abc-bfea-022b27ca35f0, username=harsh, authSessionParentId=aa9ac3df-dadc-4abc-bfea-022b27ca35f0, authSessionTabId=XmE45k_yHPg
Run Code Online (Sandbox Code Playgroud)
我看到user_not_found虽然它存在并且我也设置了凭据。
是否需要任何其他配置才能启用该用户?
我正在尝试使用keycloak REST API删除用户会话,但是却获取了403禁止的Http状态代码。我正在将令牌和cookie传递到标题中,如果我遗漏了一些东西,请告诉我。
static void logOut(String userId,KeycloakSecurityContext session){
userId = "a12c13b7-fa2e-412f-ac8e-376fdca16a83";
String url = "http://localhost:8081/auth/admin/realms/TestRealm/users/a12c13b7-fa2e-412f-ac8e-376fdca16a83/logout";
HttpClient httpclient = HttpClients.createDefault();
HttpPost httppost = new HttpPost(url);
HttpResponse response;
try {
httppost.addHeader("Accept", "application/json");
httppost.addHeader("Content-Type","application/json");
httppost.addHeader("Cookie", "JSESSIONID=CABD8A135C74864F0961FA629D6D489B");
httppost.addHeader("Authorization", "Bearer "+session.getTokenString());
response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
System.out.println("entity :"+response.getStatusLine());
if (entity != null) {
String responseString = EntityUtils.toString(entity, "UTF-8");
System.out.println("body ....."+responseString);
}
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace(); …Run Code Online (Sandbox Code Playgroud) 我们有几个应用程序,我们使用自定义实现的安全性和用户管理 现在我们可能会切换到keycloak,因为它是一个更好的解决方案.
在每个应用程序中,我们在多个地方使用我们的用户模型,例如Product(fe creator_id = 1)aso类似的问题在这里被问到Keycloak和spring boot rest api - 用户特定的数据策略
我的问题是:
如何保留我们的用户模型,但使用keycloak进行身份验证和用户管理,而无需将用户迁移到keycloak?以及如何同步用户注册过程(使用Keycloak)?一个有用的例子非常有帮助.
从各种谷歌上搜索和阅读https://www.jhipster.tech/security/#oauth2,我收集的是,为了与JHipster移动/社会融合产生的应用程序,我应该使用的OAuth2.我是这样思考的吗?(我似乎无法找到明确的答案)
我使用启用了OAuth2的JHipster v5.1.0创建了一个新的应用程序.我注意到在用户管理方面缺少一些功能.以下是我的问题.
希望有上述经验的人可以帮助澄清.
先感谢您.