标签: keycloak-services

避免使用keycloak默认登录页面并使用项目登录页面

我正在创建一个angular.js Web应用程序,并寻找如何集成keycloak到项目中.我已阅读并观看了许多教程,我发现其中大多数都有用户通过默认登录页面登录/注册keycloak,然后重定向到应用程序.

我已经设计了自己的登录和注册页面,我想使用它.我如何使用它们而不是keycloak默认值.有没有我可以调用的API,或者我的后端可能会这样做?我还看到有可用于keycloak的弹簧适配器,我可以使用它们吗?任何示例的任何链接都是好的.

我的第二个问题是在注册时我可以添加更多用户详细信息,例如地址,dob,性别keycloak吗?因为我的注册页面需要这些信息.

java angularjs keycloak keycloak-services

32
推荐指数
3
解决办法
3万
查看次数

如何在没有管理员帐户的情况下通过REST获取Keycloak用户

有没有办法通过REST获取Keycloak领域的用户列表而不使用管理员帐户?管理控制台可能有某种可分配的角色?寻找任何想法.

现在我正在使用管理员凭据来获取访问令牌,然后使用该令牌从realm/users端点提取用户.

获取令牌(来自node.js应用程序request):

uri: `${keycloakUri}/realms/master/protocol/openid-connect/token`,
form: {
  grant_type: 'password',
  client_id: 'admin-cli',
  username: adminUsername,
  password: adminPassword,
}
Run Code Online (Sandbox Code Playgroud)

使用令牌:

uri: `${keycloakUri}/admin/realms/${keycloakRealm}/users`,
headers: {
  'authorization': `bearer ${passwordGrantToken}`,
}
Run Code Online (Sandbox Code Playgroud)

我希望能够使用客户端应用程序中的通用用户信息(用户名,电子邮件,全名).

keycloak keycloak-services

13
推荐指数
1
解决办法
1万
查看次数

Keycloak 重定向页面显示我们很抱歉..未找到页面

我已经在 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

13
推荐指数
2
解决办法
2万
查看次数

使用服务帐户访问 Keycloak REST Admin API(客户端凭据授予)

我喜欢从我自己的应用程序管理 keycloak:创建用户和客户端,显示用户和客户端。由于这不是真正的用户,而是一台机器,我想使用具有客户端凭据授权的服务帐户,如如何在没有管理员帐户的情况下通过 REST 获取 Keycloak 用户中所述。为了实现这一点,我:

  1. 创造一个境界
  2. 在真正的内部创建了一个客户端
  3. 将客户端的访问类型配置为“机密”保存并激活保存后将出现的“服务帐户已启用”选项。
  4. 在范围内启用“真实管理”的客户端角色(见截图) 在此处输入图片说明

  5. 请求在标头中编码为“用户名:密码”base64 的访问令牌 curl -X POST 'http://accounts.d10l.de/auth/realms/d10l/protocol/openid-connect/token' \ -H "Content-Type: application/x-www-form-urlencoded" \ -H "Authorization: Basic ZGV2ZWxvcGVyLXBvcnRhbDpmZGRmYzM4Yy05MzAyLTRlZmQtYTM3Yy1lMWFmZGEyMmRhMzc=" \ -d 'grant_type=client_credentials' \ | jq -r '.access_token'

  6. 尝试使用访问令牌访问用户:

curl -I GET 'http://accounts.d10l.de/auth/admin/realms/d10l/users/' \ -H "Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICIxRVdoNENFUjIweDY5SlBCekU4dU9GdXF4R2NVNlVfWmpTNTQ5bmd2QjNjIn0.eyJqdGkiOiI0NDM0ZDFhNS0xZTA5LTQ4MzQtYWI2Yy0zOTk1YmEwMTgxMzAiLCJleHAiOjE1MzY0MzYwMDEsIm5iZiI6MCwiaWF0IjoxNTM2NDM1NzAxLCJpc3MiOiJodHRwOi8vYWNjb3VudHMuZDEwbC5kZS9hdXRoL3JlYWxtcy9kMTBsIiwiYXVkIjoiZGV2ZWxvcGVyLXBvcnRhbCIsInN1YiI6IjliYWI0YWM1LTRiNWMtNGIxOS05ZTc3LWFjOWFmNzlkNzFhZiIsInR5cCI6IkJlYXJlciIsImF6cCI6ImRldmVsb3Blci1wb3J0YWwiLCJhdXRoX3RpbWUiOjAsInNlc3Npb25fc3RhdGUiOiIyOWM2YWI3Mi05N2RiLTQ2NWUtYTE1Yy03ZWE5NzA0NmZlYzQiLCJhY3IiOiIxIiwiYWxsb3dlZC1vcmlnaW5zIjpbXSwicmVzb3VyY2VfYWNjZXNzIjp7fSwic2NvcGUiOiJlbWFpbCBwcm9maWxlIiwiY2xpZW50SWQiOiJkZXZlbG9wZXItcG9ydGFsIiwiY2xpZW50SG9zdCI6IjE3Mi4xNy4wLjEiLCJlbWFpbF92ZXJpZmllZCI6ZmFsc2UsInByZWZlcnJlZF91c2VybmFtZSI6InNlcnZpY2UtYWNjb3VudC1kZXZlbG9wZXItcG9ydGFsIiwiY2xpZW50QWRkcmVzcyI6IjE3Mi4xNy4wLjEiLCJlbWFpbCI6InNlcnZpY2UtYWNjb3VudC1kZXZlbG9wZXItcG9ydGFsQHBsYWNlaG9sZGVyLm9yZyJ9.D_XnpF1rwCayup8h4UXM4AGWkY_xQo40X-yIlWhmqaxkVh1FQy24932VDRCAmxYHcrwazRMqO7snXmre3_8YF5R9Dt8GYjiBorECvQ9X_nBwunmHqnGxIeE64c2GXiz6zSjdgQJQE8fH10NsLyFWHQ-lBPsBwZBsrkKQ5QUEU2qjE7rDRPtYLJPB94BSE4QGfedmRIbvg39snVkClBDUmuBTq_Rc4p7kV69h0a2Mb1sgEr3MdB4RcsOe3gJPZVVtu7gZuGqcAQKMYgtybArF3OXz37w8hjUp6FABxDcvY7K-jsGxXn0hSU0OB7wxAWY9vP4ar4tQYlKxNjs46rPLWw"

但响应是 403:

url: (6) Could not resolve host: GET HTTP/1.1 403 Forbidden content-length: 0 date: Sat, 08 Sep 2018 19:42:06 GMT

如何/是否可以通过客户端凭据授权从新服务帐户访问 Admin REST API?

keycloak keycloak-services

12
推荐指数
1
解决办法
2万
查看次数

在 Keycloack 上创建一个用户,包括 curl 命令的密码

我尝试使用 CURL 命令在 keycloak 上创建用户(创建时不提供任何密码),成功,但无法知道登录密码。那么,如何在创建时为用户提供密码。以及如何在keycloak中为新用户设置默认密码

我使用此链接使用 curl创建用户从 curl 命令在 Keycloack 上创建用户

curl jira jira-rest-api keycloak keycloak-services

12
推荐指数
1
解决办法
6402
查看次数

Keycloak 无效的令牌发行者

我有一个移动应用程序(react-native)、一个资源服务(spring boot)和 Keycloak Authenticatioin Service(Auth-Service)。

客户端直接使用 Auth-Service 进行身份验证并获取访问令牌。当我向资源服务发出请求时,资源服务通过询问 Auth-Service 来检查访问令牌。但是客户端应用程序和 iss 字段获取的令牌是http://10.0.2.2:8060/auth/realms/sau和我在http://localhost:8110 的资源服务。

Keycloak 说: error="invalid_token", error_description="Invalid token issuer. Expected 'http://localhost:8060/auth/realms/sau', but was 'http://10.0.2.2:8060/auth/realms/sau'"

我的问题是如何代表我的客户在资源服务中进行身份验证?

移动应用:

 export const prepareRequestBody = credentials => {
  const params = new URLSearchParams();
  params.append('username', credentials.username);
  params.append('password', credentials.password);
  params.append('client_id', "nasilim-mobile-app");
  params.append('grant_type', "password");
  return params;
};

export const login = credentials => {
  const params = prepareRequestBody(credentials);
  return axios.post(LOGIN, params);
};
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

资源服务:

应用程序.yml

keycloak:
  realm: sau
  resource: photo-service
  bearer-only: false
  auth-server-url: http://localhost:8060/auth
  credentials: …
Run Code Online (Sandbox Code Playgroud)

oauth-2.0 openid-connect keycloak keycloak-services keycloak-rest-api

12
推荐指数
2
解决办法
9182
查看次数

没找到publicKey for kid,Keycloak?

我在调用端点从angular js 2到widlfly服务器时遇到了这个异常"没有找到publicKey for kid".

验证发生在keycloak中,但是我使用相同的令牌在同一个域内调用来自不同客户端(不同的微服务)的8个端点,但是我只在这个微服务调用中得到了这个例外.

我确信用户拥有所有客户的所有角色.我还在JWT上解码了令牌来验证.

有时它工作,有时没有!这个异常堆栈跟踪:

Caused by: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
    at sun.security.validator.PKIXValidator.<init>(PKIXValidator.java:90)
    at sun.security.validator.Validator.getInstance(Validator.java:179)
    at sun.security.ssl.X509TrustManagerImpl.getValidator(X509TrustManagerImpl.java:312)
    at sun.security.ssl.X509TrustManagerImpl.checkTrustedInit(X509TrustManagerImpl.java:171)
    at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:184)
    at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:124)
    at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1491)
    at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:216)
    at sun.security.ssl.Handshaker.processLoop(Handshaker.java:979)
    at sun.security.ssl.Handshaker.process_record(Handshaker.java:914)
    at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1062)
    at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1375)
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1403)
    ... 55 more
Caused by: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
    at java.security.cert.PKIXParameters.setTrustAnchors(PKIXParameters.java:200)
    at java.security.cert.PKIXParameters.<init>(PKIXParameters.java:120)
    at java.security.cert.PKIXBuilderParameters.<init>(PKIXBuilderParameters.java:104)
    at sun.security.validator.PKIXValidator.<init>(PKIXValidator.java:88)
    ... 67 more

2017-06-09 00:33:35,994 ERROR [org.keycloak.adapters.rotation.AdapterRSATokenVerifier] (default task-445) Didn't find publicKey for kid: …
Run Code Online (Sandbox Code Playgroud)

java authentication jwt keycloak keycloak-services

11
推荐指数
2
解决办法
9816
查看次数

从邮递员访问keycloak API

我试图从邮递员那里访问keycloak API.但它显示了400个不良请求.

我用以下格式打电话给api.

http://{hostname}:8080/auth/realms/master/protocol/openid-connect/token?username=admin&password=admin&client_id=admin-cli&grant_type=password
Run Code Online (Sandbox Code Playgroud)

在我设置的标题中 content_type as application/x-www-form-urlencoded

我得到的答复如下.

{
    "error": "invalid_request",
    "error_description": "Missing form parameter: grant_type"
}
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮助我.任何帮助将不胜感激.提前致谢

java postman keycloak keycloak-services

11
推荐指数
2
解决办法
1万
查看次数

如何使用 Keycloak Rest 端点获取 Keycloak 中用户的上次登录会话详细信息?

如何使用 keycloak Rest 端点获取 Keycloak 中用户的上次登录会话详细信息?

例子:

builder.append(OAuth2Constants.AUDIENCE+"="+clientId+"&");
builder.append(OAuth2Constants.GRANT_TYPE+"="+OAuth2Constants.UMA_GRANT_TYPE+"&");
headers.put("Content-Type", "application/x-www-form-urlencoded");
headers.put("Authorization", "Bearer "+accessToken);

//String keycloakURL = keyCloakCFGBean.getCreateRefreshSession();
String keycloakURL="http://10.10.8.113:10004/auth/realms/{realm}/protocol/openid-connect/token";
keycloakURL = keycloakURL.replace("{realm}", realmName);

URL url = new URL(keycloakURL);
httpURLConnection  = (HttpURLConnection) url.openConnection();
httpURLConnection.setUseCaches(false);
httpURLConnection.setDoInput(true);
httpURLConnection.setRequestMethod("POST");
httpURLConnection.setDoOutput(true);
if (headers != null && headers.size() > 0) {
    Iterator<Entry<String, String>> itr = headers.entrySet().iterator();
    while (itr.hasNext()) {
        Entry<String, String> entry = itr.next();
        httpURLConnection.setRequestProperty(entry.getKey(), entry.getValue());
    }
}

outputStreamWriter = new OutputStreamWriter(httpURLConnection.getOutputStream(), StandardCharsets.UTF_8);
outputStreamWriter.write(builder.toString());
outputStreamWriter.flush();
Run Code Online (Sandbox Code Playgroud)

keycloak keycloak-services

11
推荐指数
2
解决办法
2万
查看次数

keycloak支持mongodb作为数据库吗?

我们可以使用 PostgreSQL 或 MySQL 作为 keycloak 的数据库,但我想使用 mongo DB 作为 keycloak 的数据库。有什么办法可以实现这个吗?

spring-boot spring-security-oauth2 keycloak keycloak-services

11
推荐指数
2
解决办法
9572
查看次数