Keycloak Client没有Access Type Public提供的机密信息

问题描述 投票:0回答:2

我正在使用Keycloak 3.4.3并保护基于Spring的Rest服务。

以下是Keycloak客户端配置:

Client Protocol: openid-connect<br>
Access Type: public<br>
Standard Flow Enabled: ON<br>
Implicit Flow<br>
Direct Access Grants Enabled: ON<br>
Authorization Enabled: OFF<br>

将Access Type作为公共密钥提供秘密是否很重要。如果是,我怎么能提供秘密,因为我在Keycloak客户端配置中找不到任何选项。请帮忙。

2018-02-28 15:19:10.216 WARN 7813 --- [nio-8080-exec-2] aaClientIdAndSecretCredentialsProvider:客户'democlientid'没有秘密可用2018-02-28 15:19:10.375 ERROR 7813 - - [nio-8080-exec-2] okadapters.OAuthRequestAuthenticator:无法将代码转换为令牌

java.net.ConnectException:java.base / java.net.PlainSocketImpl.socketConnect(Native Method)〜[na:na]在java.base / java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java)上拒绝连接(连接被拒绝) :400)〜[na:na] at java.base / java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:243)〜[na:na] at java.base / java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java :225)〜[na:na] at java.base / java.net.SocksSocketImpl.connect(SocksSocketImpl.java:402)〜[na:na] at java.base / java.net.Socket.connect(Socket.java :org.apache的org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:121)〜[httpclient-4.5.5.jar!/:4.5.5]的~591)〜[na:na] .http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:180)~ [httpclient-4.5.5.jar!/:4.5.5] at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry。 java:144)〜[httpclient-4.5.5.jar!/:4.5.5]在org.apache.http.impl。 conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:134)〜[httpclient-4.5.5.jar!/:4.5.5] at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:610)~ [httpclient-4.5.5.jar!/:4.5.5]在org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:445)〜[httpclient-4.5.5.jar!/:4.5。 5]在org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:835)〜[httpclient-4.5.5.jar!/:4.5.5] org.apache.http.impl.client。在org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:108)〜[httpclient]中的CloseableHttpClient.execute(CloseableHttpClient.java:83)〜[httpclient-4.5.5.jar!/:4.5.5] -4.5.5.jar!/:4.5.5]在org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:56)〜[httpclient-4.5.5.jar!/:4.5.5]在org.keycloak的org.keycloak.adapters.ServerRequest.invokeAccessCodeToToken(ServerRequest.java:111)〜[keycloak-adapter-core-3.4.3.Final.jar!/:3.4.3.Final] .adapters.OAuthRequestAuthenticator.resolveCode(OAuthRequestAuthenticator.java:336)〜[keycloak-adapter-core-3.4.3.Final.jar!/:3.4.3.Final] at org.keycloak.adapters.OAuthRequestAuthenticator.authenticate(OAuthRequestAuthenticator。 java:281)〜[keycloak-adapter-core-3.4.3.Final.jar!/:3.4.3.Final] org.keycloak.adapters.RequestAuthenticator.authenticate(RequestAuthenticator.java:139)〜[keycloak-adapter -core-3.4.3.Final.jar!/:3.4.3.Final] at org.keycloak.adapters.tomcat.AbstractKeycloakAuthenticatorValve.authenticateInternal(AbstractKeycloakAuthenticatorValve.java:203)〜[spring-boot-container-bundle-3.4。 3.Final.jar!/:3.4.3.Final] at org.keycloak.adapters.tomcat.KeycloakAuthenticatorValve.authenticate(KeycloakAuthenticatorValve.java:50)[spring-boot-container-bundle-3.4.3.Final.jar! /:3.4.3.Final] at org.keycloak.adapters.tomcat.KeycloakAuthenticatorValve.doAuthenticate(KeycloakAuthenticatorValve.java:57)[spring-boot-container-bundle-3.4.3.Final.jar!/:3.4.3。最终]在org.apache.catalina.aut henticator.AuthenticatorBase.invoke(AuthenticatorBase.java:586)[tomcat-embed-core-8.5.27.jar!/:8.5.27] at org.keycloak.adapters.tomcat.AbstractKeycloakAuthenticatorValve.invoke(AbstractKeycloakAuthenticatorValve.java:181) 〜[spring-boot-container-bundle-3.4.3.Final.jar!/:3.4.3.Final] org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)[tomcat-embed- !核心8.5.27.jar /:27年5月8日]

spring rest keycloak
2个回答
0
投票

您有配置错误;服务器地址不对。


0
投票

如果您将检查admin-cli领域下的客户端master,您将很容易理解为什么默认情况下为此客户端提及access-type=public。仅供参考,请查看官方文件中的以下详细信息

访问类型

这定义了OIDC客户端的类型。

  1. 机密访问类型适用于需要执行浏览器登录并在将访问代码转换为访问令牌时需要客户端密钥的服务器端客户端(有关详细信息,请参阅OAuth 2.0规范中的访问令牌请求)。此类型应用于服务器端应用程序。上市
  2. 公共访问类型适用于需要执行浏览器登录的客户端客户端。使用客户端应用程序无法保密。相反,通过为客户端配置正确的重定向URI来限制访问非常重要。
  3. 仅承载访问类型意味着应用程序仅允许承载令牌请求。如果启用此选项,则此应用程序无法参与浏览器登录。

因此,您的客户端具有公共访问类型,因此它意味着您要为客户端站点应用程序登录,因此对于公共访问类型keyclock不会给出密钥。

除了你的问题,另一个优点是,用户也可以从命令提示符使用keyclock。你可以这样登录

/opt/keycloak/bin/kcadm.sh config credentials --server https://<IP ADDRESS>:8666/auth --realm master --user admin --password admin --client admin-cli

你可以执行管理任务

  1. 创造一个新的领域。
  2. 在新领域创建客户
  3. 创建用户/组等
© www.soinside.com 2019 - 2024. All rights reserved.