我想用Keycloak 4.5保护我的Spring Boot 2.1应用程序.
目前,由于以下错误,我无法启动该应用程序:
Exception encountered during context initialization - cancelling refresh attempt:
org.springframework.beans.factory.support.BeanDefinitionOverrideException:
Invalid bean definition with name 'httpSessionManager' defined in class path resource [dummy/service/SecurityConfig.class]:
Cannot register bean definition [Root bean: class [null]; scope=; abstract=false; lazyInit=false; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=securityConfig; factoryMethodName=httpSessionManager; initMethodName=null; destroyMethodName=(inferred); defined in class path resource [dummy/SecurityConfig.class]] for bean 'httpSessionManager':
There is already [Generic bean: class [org.keycloak.adapters.springsecurity.management.HttpSessionManager]; scope=singleton; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null; defined in URL [jar:file:/.m2/repository/org/keycloak/keycloak-spring-security-adapter/4.5.0.Final/keycloak-spring-security-adapter-4.5.0.Final.jar!/org/keycloak/adapters/springsecurity/management/HttpSessionManager.class]] bound.
Run Code Online (Sandbox Code Playgroud)
我的类SecurityConfig(见下文)扩展自KeycloakWebSecurityConfigurerAdapter.此适配器已定义bean httpSessionManager. …
我在一个使用 Keycloak Spring Adapter 的项目中更新到了 Spring Boot 3。不幸的是,它没有启动,因为它 KeycloakWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter
首先在 Spring Security 中被弃用,然后被删除。目前是否有另一种方法可以使用 Keycloak 实现安全性?或者换句话说:如何将 Spring Boot 3 与 Keycloak 适配器结合使用?
我在互联网上搜索,但找不到任何其他版本的适配器。
我正在尝试为我正在使用的 UI 应用程序实现身份验证https://github.com/joaojosefilho/vuejsOidcClient我已成功配置为与 gluu auth 服务器一起使用
现在我想尝试使用 keycloak 发生的情况是流程开始,看起来不错
http://auth.solidsense.tk/auth/realms/master/protocol/openid-connect/auth?client_id=console&redirect_uri=http%3A%2F%2Fportal.solidsense.tk%2Fcallback.html&response_type=id_token%20token&scope=openid%20profile%20permission%20address%20roles&state=f60457ff91c84ac5b49179bc4b47cd8d&nonce=3753dd32c3ea4f8087608382c2eef932
并且显示了 keycloak 登录页面,但在提交时输入凭据后,我收到以下请求的错误 502 (如果输入了不正确的凭据,则会显示正确的错误消息)
http://auth.solidsense.tk/auth/realms/master/login-actions/authenticate?session_code=2xol67J32yIFVfDfrN0DmIT1sdzfzoeo1dg_kPZrYeY&execution=499b2298-5c08-4521-8993-b23eb253f0a4&client_id=console&tab_id=cHj4HozAr-Q
这是我在日志中看到的异常
08:03:26,164 DEBUG [io.undertow.request.io] (default task-1) UT005013: An IOException occurred: java.io.IOException: Connection reset by peer
at sun.nio.ch.FileDispatcherImpl.read0(Native Method)
at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:39)
at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:223)
at sun.nio.ch.IOUtil.read(IOUtil.java:197)
at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:380)
at org.xnio.nio.NioSocketConduit.read(NioSocketConduit.java:289)
at org.xnio.conduits.ConduitStreamSourceChannel.read(ConduitStreamSourceChannel.java:127)
at io.undertow.util.ConnectionUtils.doDrain(ConnectionUtils.java:96)
at io.undertow.util.ConnectionUtils.cleanClose(ConnectionUtils.java:74)
at io.undertow.server.protocol.http.HttpReadListener.exchangeComplete(HttpReadListener.java:368)
at io.undertow.server.protocol.http.HttpServerConnection.exchangeComplete(HttpServerConnection.java:232)
at io.undertow.server.HttpServerExchange.invokeExchangeCompleteListeners(HttpServerExchange.java:1279)
at io.undertow.server.HttpServerExchange.terminateResponse(HttpServerExchange.java:1563)
at io.undertow.server.Connectors.terminateResponse(Connectors.java:147)
at io.undertow.server.protocol.http.ServerFixedLengthStreamSinkConduit.channelFinished(ServerFixedLengthStreamSinkConduit.java:58)
at io.undertow.conduits.AbstractFixedLengthStreamSinkConduit.exitFlush(AbstractFixedLengthStreamSinkConduit.java:316)
at io.undertow.conduits.AbstractFixedLengthStreamSinkConduit.flush(AbstractFixedLengthStreamSinkConduit.java:234)
at org.xnio.conduits.ConduitStreamSinkChannel.flush(ConduitStreamSinkChannel.java:162)
at io.undertow.channels.DetachableStreamSinkChannel.flush(DetachableStreamSinkChannel.java:119)
at org.xnio.channels.Channels.flushBlocking(Channels.java:63)
at io.undertow.servlet.spec.ServletOutputStreamImpl.close(ServletOutputStreamImpl.java:618)
at io.undertow.servlet.spec.HttpServletResponseImpl.closeStreamAndWriter(HttpServletResponseImpl.java:486)
at io.undertow.servlet.spec.HttpServletResponseImpl.responseDone(HttpServletResponseImpl.java:575) …
Run Code Online (Sandbox Code Playgroud) 我正在尝试实现自己的表单来更改用户的密码.我试图在Keycloak中找到用于更改用户密码的API,但我在文档中找不到任何内容.这样做有API吗?
我刚刚开始一个新项目。结果将是一个 API 服务器和一个渐进式 Web 应用程序。API 服务器使用 TypeScript 和 NestJS 框架实现,客户端使用 Angular 6。
我一直在和 keycloak 调情。不过,我还不太确定它是否适合我。但是我不想再担心令牌更新之类的事情,并且发现 Keycloak 告诉我如何创建用户角色很有趣。
困扰我的是以下 - 集成。对于我的用例,登录和密码重置等所有功能都是我的应用程序的一部分。这意味着我想自己创建表单,以便能够在我自己的设计中完美地做到这一点,并且没有第二个翻译过程等。Keycloak 主题不是一个选项。那么是否有可能以这种方式隐藏 keycloak,或者它是如此复杂以至于我不应该首先使用 Keyloak?Afaik 密码重置已经存在问题 - 我无法从用户端请求它,但必须对管理端点进行 REST 调用 - 这可以但并不理想,因为它需要我做更多的服务器端逻辑(和这不是我想使用 Keycloak 的原因)。
此外,Keycloak 过于关注 GUI - 这对我来说很困难,尤其是在开发过程中。因为我还想在开发过程中为我的团队提供一个本地的keycloak实例。但是将初始数据导入领域、应用程序以及将用户导入 Keycloak 的概念是什么?我发现了一些 JSON 导入 - 但到目前为止仅适用于领域和应用程序。还有一个功能可以导入整个哑巴吗?
这样我的团队就建立在预先构建的设置上,并且每个角色都有一个用户。包含初始数据导入的 Vagrant 或 Docker 的可重复设置 - 这将是目标。
简而言之,我的问题是:
我有一个 NGINX (1.14.1),它将 /auth 请求转发到在云中运行的 Keycloak (14.0.0)。
这是 /etc/nginx/conf.d/my.domain.biz.conf 中的 NGINX 配置
server {
listen 80;
server_name my.domain.biz;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name my.domain.biz;
ssl_certificate /etc/letsencrypt/live/domain.biz/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/domain.biz/privkey.pem;
location /auth {
proxy_pass http://127.0.0.1:8080/auth;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Scheme $scheme;
add_header X-Frame-Options "ALLOW-FROM https://my.domain.biz/";
add_header Content-Security-Policy "frame-src https://my.domain.biz/; frame-ancestors https://my.domain.biz/; object-src https://my.domain.biz/;";
}
}
Run Code Online (Sandbox Code Playgroud)
我可以在 Keycloak 的管理控制台https://my.domain.biz/auth/中创建一个领域和一个公共客户端。我可以从https://my.domain.biz/auth/realms/myrealm/.well-known/openid-configuration列出端点
另外,我还更新了领域设置的安全防御中的以下两个值,
X-Frame-Options: ALLOW-FROM https://my.domain.biz
Content-Security-Policy: frame-src https://my.domain.biz/; …
Run Code Online (Sandbox Code Playgroud) 如何设置docker keycloak base url
as参数?
我有以下nginx反向代理配置:
server {
listen 80;
server_name example.com;
location /keycloak {
proxy_pass http://example.com:8087/;
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试访问http://example.com/keycloak/时,我获得了一个keycloak http重定向到http://example.com/auth/而不是http://example.com/keycloak/auth/
有任何想法吗?
我有一个用户群,其中包含由keycloak管理的身份和身份验证.我想允许这些用户使用OpenID Connect联合登录并使用Cognito的AWS API网关服务.
有些使用OpenID Connect提供程序的AWS文档有些缺乏.我找到了一个使用SAML 的旧引用,但更愿意避免这种情况并使用OpenID Connect.
如果有人实现了这一点,他们会介意从keycloak管理员角度编写一些简单的指令吗?
amazon-web-services single-sign-on openid-connect amazon-cognito keycloak
keycloak客户端ID是否具有客户端密钥?我试图在keycloak admin中创建一个客户端,但我无法发现客户端密码.
它是自动生成的吗?我在哪里可以得到这个秘密?
我正在使用Keycloak授权服务器来管理我的应用程序权限.但是,我发现独立服务器只能在本地访问.
http://localhost:8080/auth
有效,但不是http://myhostname:8080/auth
.此问题不允许从内部网络访问服务器.