Keycloak 密钥斗篷服务器身份验证

Keycloak 密钥斗篷服务器身份验证,keycloak,Keycloak,我正在创建Java应用程序,需要用户登录。目前,我正在验证是否可以配置足够安全的KeyClope。我想确保我的应用程序真的针对我的KeyClope服务器对用户进行身份验证-例如,我知道存在类似DNS泊松或其他攻击的情况,在这些情况下,我的应用程序可以通过复制/攻击者KeyClope实例访问攻击者服务器。令我惊讶的是,我目前使用以下键配置: keycloak.auth-server-url=... keycloak.realm=... keycloak.resource=... keycloak.

我正在创建Java应用程序,需要用户登录。目前,我正在验证是否可以配置足够安全的KeyClope。我想确保我的应用程序真的针对我的KeyClope服务器对用户进行身份验证-例如,我知道存在类似DNS泊松或其他攻击的情况,在这些情况下,我的应用程序可以通过复制/攻击者KeyClope实例访问攻击者服务器。令我惊讶的是,我目前使用以下键配置:

keycloak.auth-server-url=...
keycloak.realm=...
keycloak.resource=...
keycloak.public-client=true
keycloak.security-constraints[0].authRoles[0]=..
keycloak.security-constraints[0].securityCollections[0].patterns[0]=...
keycloak.principal-attribute=preferred_username
而且不需要公钥。这里更糟糕的是:我看到了投票结果较高的评论,我的应用程序可能会从(恶意)服务器下载密钥


在开始对用户进行身份验证之前,我是否需要执行任何额外的步骤来对keydepot服务器进行身份验证?

根据您的配置,您似乎已将keydepot中的客户端定义为public。这使您的客户机能够在不进行任何身份验证的情况下调用keydape。例如,当您要在网页中通过js进行身份验证时,可以使用这种类型的客户端,在该网页中,攻击者可以访问网页源,因此无法隐藏任何内容

如果您将客户端的“访问类型”设置为“机密”(在KeyClope Admin UI的客户端设置中)并保存设置,则会出现另一个选项卡(位于客户端的“设置”选项卡旁边),标题为“凭据”。在那里,您可以看到为客户端创建的默认机密。然后,您应该在应用程序中的
keydape.json
文件中输入以下秘密:

"credentials": {
    "secret": "paste-the-secret-value-here"
}
您还可以通过选择“重新生成机密”按钮重新生成该值

您还可以在此处更改“客户端身份验证程序”,并将其设置为“X509证书”。然后会要求您定义一个正则表达式来验证客户端将用于身份验证的证书的“Subject DN”。任何与该正则表达式匹配的证书都将被视为有效且经过身份验证。然后,您必须将客户端设置为使用此类证书,而不是在
keydape.json
文件中定义“secret”值


当然,还有另一个使用“签名JWT”的选项,该选项也是安全的,您可以在第节的KeyClope文档中找到关于如何设置它的详细信息。

根据您的配置,您似乎已经在KeyClope中将您的客户机定义为public。这使您的客户机能够在不进行任何身份验证的情况下调用keydape。例如,当您要在网页中通过js进行身份验证时,可以使用这种类型的客户端,在该网页中,攻击者可以访问网页源,因此无法隐藏任何内容

如果您将客户端的“访问类型”设置为“机密”(在KeyClope Admin UI的客户端设置中)并保存设置,则会出现另一个选项卡(位于客户端的“设置”选项卡旁边),标题为“凭据”。在那里,您可以看到为客户端创建的默认机密。然后,您应该在应用程序中的
keydape.json
文件中输入以下秘密:

"credentials": {
    "secret": "paste-the-secret-value-here"
}
您还可以通过选择“重新生成机密”按钮重新生成该值

您还可以在此处更改“客户端身份验证程序”,并将其设置为“X509证书”。然后会要求您定义一个正则表达式来验证客户端将用于身份验证的证书的“Subject DN”。任何与该正则表达式匹配的证书都将被视为有效且经过身份验证。然后,您必须将客户端设置为使用此类证书,而不是在
keydape.json
文件中定义“secret”值


当然,还有另一个使用“签名JWT”的选项,它也是安全的,您可以在第节的KeyClope文档中找到关于如何设置它的详细信息。

我看不出这是目标,但看到公钥和私钥的位置,我明白答案是,在领域设置->按键->活动中有按键列表。您可以使用右侧的按钮下载公钥或证书。在我的Spring boot中,在keydove.realm key下输入application.properties文件一个公钥。

我看不出这是目标,但看到公钥和私钥的位置,我知道答案是,在realm settings->keys->active中有一个密钥列表。您可以使用右侧的按钮下载公钥或证书。在我的Spring boot案例中,在keydove.realm key下输入application.properties文件一个公钥。

我终于有时间来验证您的回答,我们似乎误解了彼此。我有一个信任的客户机,我想信任我连接到了正确的密钥斗篷服务器(例如,没有人攻击网络在两者之间放置假密钥斗篷)。您的回答似乎验证了客户是否可信。由于我终于有时间验证您的回答,我们似乎误解了彼此。我有一个信任的客户机,我想信任我连接到了正确的密钥斗篷服务器(例如,没有人攻击网络在两者之间放置假密钥斗篷)。您的回答似乎验证了客户是否可信。