标签: keycloak

由于重复的Bean注册httpSessionManager,无法在Spring Boot 2.1中使用Keycloak

我想用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. …

spring-security spring-boot keycloak

28
推荐指数
3
解决办法
7634
查看次数

将 Keycloak Spring 适配器与 Spring Boot 3 结合使用

我在一个使用 Keycloak Spring Adapter 的项目中更新到了 Spring Boot 3。不幸的是,它没有启动,因为它 KeycloakWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter首先在 Spring Security 中被弃用,然后被删除。目前是否有另一种方法可以使用 Keycloak 实现安全性?或者换句话说:如何将 Spring Boot 3 与 Keycloak 适配器结合使用?

我在互联网上搜索,但找不到任何其他版本的适配器。

spring-boot keycloak

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

为什么我在尝试身份验证时收到 502

我正在尝试为我正在使用的 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)

jboss-tools keycloak

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

在keycloak上是否有用于更改用户密码的API调用?

我正在尝试实现自己的表单来更改用户的密码.我试图在Keycloak中找到用于更改用户密码的API,但我在文档中找不到任何内容.这样做有API吗?

json keycloak

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

我应该使用keycloak还是不使用?

我刚刚开始一个新项目。结果将是一个 API 服务器和一个渐进式 Web 应用程序。API 服务器使用 TypeScript 和 NestJS 框架实现,客户端使用 Angular 6。

我一直在和 keycloak 调情。不过,我还不太确定它是否适合我。但是我不想再担心令牌更新之类的事情,并且发现 Keycloak 告诉我如何创建用户角色很有趣。

困扰我的是以下 - 集成。对于我的用例,登录和密码重置等所有功能都是我的应用程序的一部分。这意味着我想自己创建表单,以便能够在我自己的设计中完美地做到这一点,并且没有第二个翻译过程等。Keycloak 主题不是一个选项。那么是否有可能以这种方式隐藏 keycloak,或者它是如此复杂以至于我不应该首先使用 Keyloak?Afaik 密码重置已经存在问题 - 我无法从用户端请求它,但必须对管理端点进行 REST 调用 - 这可以但并不理想,因为它需要我做更多的服务器端逻辑(和这不是我想使用 Keycloak 的原因)。

此外,Keycloak 过于关注 GUI - 这对我来说很困难,尤其是在开发过程中。因为我还想在开发过程中为我的团队提供一个本地的keycloak实例。但是将初始数据导入领域、应用程序以及将用户导入 Keycloak 的概念是什么?我发现了一些 JSON 导入 - 但到目前为止仅适用于领域和应用程序。还有一个功能可以导入整个哑巴吗?

这样我的团队就建立在预先构建的设置上,并且每个角色都有一个用户。包含初始数据导入的 Vagrant 或 Docker 的可重复设置 - 这将是目标。

简而言之,我的问题是:

  1. 如果我想通过 API 使用所有东西,或者我应该只使用 Passport 和 JWT,那么使用 Keycloak 是否仍然值得?
  2. 在我的开发过程中,我可以有一个可重现的设置,包括领域、应用程序、用户、用户角色等吗?

keycloak

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

keycloak-js 初始化失败,因为祖先违反了内容安全策略指令:“frame-ancestors 'self'

我有一个 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)

keycloak keycloak-javascript

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

使用自定义基本URL为Keycloak docker配置反向代理

如何设置docker keycloak base urlas参数?

我有以下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/

有任何想法吗?

nginx docker keycloak

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

如何在Keycloak中创建客户端以与AWS Cognito Identity Federation一起使用

我有一个用户群,其中包含由keycloak管理的身份和身份验证.我想允许这些用户使用OpenID Connect联合登录并使用Cognito的AWS API网关服务.

有些使用OpenID Connect提供程序的AWS文档有些缺乏.我找到了一个使用SAML 的旧引用,但更愿意避免这种情况并使用OpenID Connect.

如果有人实现了这一点,他们会介意从keycloak管理员角度编写一些简单的指令吗?

amazon-web-services single-sign-on openid-connect amazon-cognito keycloak

21
推荐指数
1
解决办法
4042
查看次数

keycloak客户端ID是否有秘密

keycloak客户端ID是否具有客户端密钥?我试图在keycloak admin中创建一个客户端,但我无法发现客户端密码.

它是自动生成的吗?我在哪里可以得到这个秘密?

keycloak

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

启用对Keycloak的远程访问

我正在使用Keycloak授权服务器来管理我的应用程序权限.但是,我发现独立服务器只能在本地访问.

http://localhost:8080/auth有效,但不是http://myhostname:8080/auth.此问题不允许从内部网络访问服务器.

keycloak

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