如何从 keycloack 领域密钥中检索私钥?

Bab*_*lli 5 private-key keycloak-rest-api

我正在尝试从 keycloack 领域密钥 获取私钥。我能够使用 Open-id/certs api 获取公钥。请告诉我是否能够获取 keycloack 中领域的私钥。

psy*_*ter 10

我使用私钥编写测试来篡改 JWT 有效负载以验证应用程序。我遇到了所有的安全陷阱

使用 MySQL 获取私钥很容易:

use <kc_db_schema>;
SELECT VALUE FROM COMPONENT_CONFIG CC INNER JOIN COMPONENT C INNER JOIN REALM R ON(CC.COMPONENT_ID = C.ID AND R.ID = C.REALM_ID)
WHERE R.NAME='your-realm-name' AND C.NAME = 'rsa-generated' AND CC.name = 'privateKey';
Run Code Online (Sandbox Code Playgroud)

使用这个私钥值我可以签署我的有效负载。在 Python PyJWT 中,将带有换行符的 '-----BEGIN RSA PRIVATE KEY-----' / '-----END RSA PRIVATE KEY-----' 添加到密钥中非常重要:

private_key = b"-----BEGIN RSA PRIVATE KEY-----\n<my privateKey from SQL query>\n-----END RSA PRIVATE KEY-----"
jwt_encoded = jwt.encode({my payload}, private_key, algorithm="RS256")
Run Code Online (Sandbox Code Playgroud)


小智 -2

好吧,你不被允许这样做。这就是为什么它们被称为私钥,你不能期望通过 API 获得私钥。

私钥对于持有者来说是私有的,您可以在此处了解有关它们的更多信息。