我已经在 EKS 集群上部署了 keycloak,并且能够成功访问仪表板并已经创建了一个新领域。
于是我想到测试我的keycloak,就去https://www.keycloak.org/app/进行测试。
我创建了一个根 URL 为“https://www.keycloak.org/app/”的客户端,并创建了一个用户。我已经使用我的领域的帐户登录成功测试了我的用户。
然后我去https://www.keycloak.org/app/输入我的 keycloak URL 作为https://keycloak.test.nip.io,领域作为 Test(与我的领域同名),然后客户端名称作为一个门户(在 keycloak 上创建的同名客户端)。
当我点击“登录”时,它会重定向到我的 keycloak URL,但显示“我们很抱歉...找不到页面”
任何人都知道我为什么会收到此错误以及如何避免该错误。
keycloak keycloak-services keycloak-gatekeeper keycloak-connect keycloak-rest-api
我对 Keycloak 服务器非常陌生,想用它来保护我的前端应用程序和后端 REST API,它们也通过互联网开放。到目前为止,我理解和所做的是在 Keycloack 上创建 2 个客户端,1 个用于使用客户端协议(openid-connect)和访问类型(公共)的前端,然后在客户端我使用采用者将用户重定向到 Keycloak 登录页面并进行身份验证并获取令牌。现在,对于后端(rest-apis),我创建了一个单独的客户端,它再次使用客户端协议(openid-connect),但具有访问类型(机密)并且在身份验证流程中:浏览器流和直接授予流都是直接授予,然后我得到客户端 ID 和客户端秘密来调用 Keycloak Rest api。
现在我希望当用户从前端进行身份验证并获取令牌并将标头请求发送到我的其余 API 时,我在这里调用一些 Keycloak 其余 api 通过提供 client_id 和 client_secret 来验证此令牌。
我正在使用 Keycloak 中的以下 REST API 来验证我在前端生成的令牌:
http://localhost:8120/auth/realms/evva_realm/protocol/openid-connect/token/introspect
Run Code Online (Sandbox Code Playgroud)
但结果是这样的:
{
"active": false
}
Run Code Online (Sandbox Code Playgroud)
我可能使用了一些错误的 api 或整个架构来验证和保护我的后端 api 不正确。有人可以帮助我了解问题出在哪里吗?
authentication keycloak keycloak-services keycloak-connect keycloak-rest-api
我正在使用 keycloak 的登录和注册页面。对于登录我使用:
keycloak.init({onLoad: 'login-required'}).then(function (authenticated) {
if (!authenticated) {
} else{
}
Run Code Online (Sandbox Code Playgroud)
这工作正常,因为我可以使用上面的代码重定向到收到令牌的应用程序页面。但是,如果用户单击注册链接并注册为新用户,我会看到浏览器重定向到:
htttps://localhost/auth/realms/realm1/login-actions/registration?session_code=2TC4xBE5BoFy_Dt7nK8wNDzdLx-8rJmA7l0IjTY1Khk&execution=2e64e3ef-185a-4ca8-a6cc-51c40f9fb7fc&client_id=bizmapp&tab_id=EbayK64spNk
Run Code Online (Sandbox Code Playgroud)
我希望在注册后有一个 keycloak 回调,我可以在其中获取令牌并将用户重定向到应用程序的原始安全页面,用户在登录/注册之前想要访问该页面
在 Keycloak 中,当用户通过身份提供者登录时,有没有办法将用户分配到默认组?
注意:这已经适用于角色。例如navigate to Identity Provider?select Provider? Mappers? New? Hardcoded Role? select Role? Save. 但是,在选择组时似乎缺少这样的映射器。
关于如何实现这一目标的任何想法?
oauth openid-connect keycloak keycloak-services keycloak-connect
尝试使用 iFrame 访问 Keycloak 时遇到登录问题。我收到以下错误:
2020-08-29 04:06:50,976 WARN [org.keycloak.events] (default task-9654) type=LOGIN_ERROR, realmId=34d62e4f-f267-4f1a-8ec7-075e5046543b, clientId=null, userId=null, ipAddress=192.168.66.183, error=invalid_code
Run Code Online (Sandbox Code Playgroud)
尝试通过 chrome 浏览器访问它时工作正常,
2020-08-29 04:08:44,310 INFO [org.keycloak.events] (default task-9658) type=LOGIN, realmId=34d62e4f-f267-4f1a-8ec7-075e5046543b, clientId=dxp-frontend, userId=6db38019-c323-4071-abc2-a39c705ed122, ipAddress=192.168.66.183, auth_method=openid-connect, auth_type=code, redirect_uri=https://dxp-model1.devopnet.in.telstra.com.au/csrtb/, consent=no_consent_required, code_id=ac77dc9d-9237-4c17-b74d-9f3c9582ebbd, username=dxpcsr1, authSessionParentId=ac77dc9d-9237-4c17-b74d-9f3c9582ebbd, authSessionTabId=3K3KgKVc2bc
2020-08-29 04:08:45,811 INFO [org.keycloak.events] (default task-9658) type=CODE_TO_TOKEN, realmId=34d62e4f-f267-4f1a-8ec7-075e5046543b, clientId=dxp-frontend, userId=6db38019-c323-4071-abc2-a39c705ed122, ipAddress=192.168.66.183, token_id=15905d22-c77f-4f6d-bce4-63c36ed04f0b, grant_type=authorization_code, refresh_token_type=Refresh, scope='openid profile email', refresh_token_id=a0b3437b-c2b3-4179-ad24-833459a847db, code_id=ac77dc9d-9237-4c17-b74d-9f3c9582ebbd, client_auth_method=client-secret
Run Code Online (Sandbox Code Playgroud)
使用部署了单个 Keycloak 实例的 K8 集群。
keycloak keycloak-gatekeeper keycloak-nodejs-connect keycloak-connect
输入用户名密码和确认密码时显示错误“我们很抱歉发生内部错误”。如何创建初始管理员用户?
我正在尝试使用 Keycloak 创建联合身份验证,并按照此处提到的步骤进行操作:Setup User Federation with Keycloak
我一直在使用该端口10389而不是389文档中提到的端口。一切似乎都工作正常,直到我将 Keycloak 连接到 LDAP。
当我提供Connection URLasldap://localhost:10389并单击时,Test Connection我收到错误:
Error! Error when trying to connect to LDAP. See server.log for details
Run Code Online (Sandbox Code Playgroud)
我不确定出了什么问题,因为当我检查那里时,Apache Directory Studio一切似乎对我来说都工作正常,并且我能够获取所有用户列表等。我不知道为什么我无法建立从 Keycloak 到 LDAP 的连接。
我尝试了以下方法,但对我没有任何作用:
当我尝试在 Windows powershell 或 cmd 中运行 kc.bat 时,我无法运行 keycloak 服务器
.\kc.bat
Run Code Online (Sandbox Code Playgroud)
我收到错误
Error: Could not find or load main class io.quarkus.bootstrap.runner.QuarkusEntryPoint
Caused by: java.lang.ClassNotFoundException: io.quarkus.bootstrap.runner.QuarkusEntryPoint
Run Code Online (Sandbox Code Playgroud)
我安装了 quarkus 但即使我安装了它也不起作用
我们为keycloak搭建了一个测试环境。该环境在 GCP 上运行。它有两个 keycloak 实例:
我们需要使用实例 A 连接实例 B。
因此实例 A 用户可以通过实例 B 登录。
有什么办法可以做到这一点吗?我们如何实现这个逻辑呢?
我无法在 keyClock 的配置对象中设置客户端秘密
function initializeKeycloak(keycloak: KeycloakService) {
return () =>
keycloak.init({
config: {
url: 'http://localhost:8080/auth',
realm: 'your-realm',
clientId: 'your-client-id',
client-secret: 'xxxxxxxxxxx' <-- problem
},
initOptions: {
onLoad: 'check-sso',
silentCheckSsoRedirectUri:
window.location.origin + '/assets/silent-check-sso.html',
},
});
}
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 领域,其中一些用户作为 Nodejs + Typescript 项目的 IdP。
如果我按“全部注销”,它们就会从这里消失,但它们仍然有效。
例子:
1) I create a new session. I get its JWT token as a response
2) I do a GET req on one of the protected routes with the token attached. It works.
4) I logout all sessions by pressing the button in that photo
5) I do the same GET req on the same protected route. It still works.
I expect it NOT to work, because I previously logged …Run Code Online (Sandbox Code Playgroud) keycloak ×12
keycloak-connect ×12
javascript ×2
cmd ×1
java ×1
jwt ×1
ldap ×1
node.js ×1
oauth ×1