当前位置: 首页 > 知识库问答 >
问题:

Spring Boot Security and Keyclope-使用HTTPS成功登录后接收403禁止/sso/登录

伯君浩
2023-03-14

我有一个Spring Boot应用程序,使用Spring Security和Keyclope作为IDP。

Keyclope在以下位置可用https://auth.example.com,具有一个具有html" target="_blank">客户端backo核心的领域backo和一个配置了所需角色的testuser。

如果我配置本地应用程序,请使用

keycloak.enabled=true
keycloak.auth-server-url=https://auth.example.com/auth
keycloak.realm=backo
keycloak.public-client=true
keycloak.resource=backo-core
keycloak.ssl-required=external
keycloak.confidential-port=443

一切正常。

如果我将其部署到我的开发环境中https://backo.example.com/backo具有https://backo.example.com/sso/login,当访问应用程序时,我会重定向到KeyClope登录。成功登录后,我被重定向到带有状态、会话状态和代码参数的重定向URL,但收到403。https://backo.example.com/sso/login?state=...

如果我在本地设置keydepage。ssl required=all,访问登录页面时的redirect\u url参数为https://localhost/sso/login,因此我可以手动将其更改为http://localhost:8080/sso/login.成功登录后,我遇到了与403禁止响应完全相同的问题http://localhost:8080/sso/login?state=...

请求启动器链来自https://auth.example.com/auth/realms/backo/login-action/authenticate?...

这就是我的安全配置的样子

protected void configure(HttpSecurity http) throws Exception {
            super.configure(http);
            http
                .authorizeRequests()
                .antMatchers("/backo").hasAnyRole(ROLE_ADMIN, ROLE_BACKOFFICE)
                .anyRequest().permitAll();

            http.csrf().disable();
            http.headers().frameOptions().disable(); // otherwise Vaadin doesn't work properly

            http
                .logout()
                .addLogoutHandler(keycloakLogoutHandler())
                .logoutUrl("/sso/logout").permitAll()
                .logoutSuccessUrl("/");
        }

您可以忽略这个Vaadin解决方案,因为它已经在/sso/login中失败了。http。csrf()。禁用();需要防止授权时post请求中的其他403禁止错误。

值得一提的是:Spring Boot应用程序没有启用HTTPS,在我们的开发环境中,它位于AWS应用程序负载平衡器ALB的后面。HTTPS在ALB中终止。

共有1个答案

狄楷
2023-03-14

三天前,我们在spring boot thymeleaf应用程序中遇到了类似的问题。我们已经使用KeyClope适配器(13.0.1)进行Spring Boot。

成功登录后,它重定向到/sso/login页面,出现403错误。

经过大量努力,我们终于获得了修复此问题所需的配置。您需要使用以下应用程序属性:

server.use-forward-headers=true
keycloak.public-client=true
keycloak.ssl-required=all
keycloak.confidential-port=443
 类似资料:
  • 我试图将twitter登录选项添加到我的python应用程序中,我从web服务器收到以下错误: GET/social auth/login/twitter/HTTP/1.1“500 103190 403客户端错误:url禁止:https://api.twitter.com/oauth/request_token 我在本地主机上使用SSL开发环境django unicorn。我查看了Twitter回

  • 我正在我是身份提供者的地方实施SSO,现在我能够成功登录到服务提供者。但它把我带到了主页。我想在发布响应时指定着陆页URL。搜索了很多,但找不到任何令人信服的东西。不太知道SAML响应的哪个元素携带着陆页URL或采用我必须指定的形式。使用java和opensaml库生成响应。

  • 以下是 IdP 在 OpenAm 的元数据文件 SP位于:http://mysp.com/ 可以发布SAML响应的SP的验证url位于:http://mysp.com/login 以下请求适用于 SSO 登录:http://myidp.com/openam/idpssoinit?metaAlias=/idp 当我发布 SAML 请求以 http://myidp.com/openam/SSOPOST

  • 我有一个spring boot应用程序,它包含spring security,其中添加了formLogin和自定义loginPage。每当我通过身份验证时,它会将我发送到defaultSuccessUrl,即/app/dashboard,它会与模式http一起发送。我一整天都在尝试将successUrl模式设置为https,只需对应用程序进行一些修改。属性,有时使用Bean,但我仍然无法实现。我的

  • 问题内容: 我想要在spring成功注册后自动登录:我有一个受保护的页面,需要登录才能访问它们,我要在注册后跳过登录页面并进行自动登录,以便用户可以看到受保护的页面有我吗?我正在使用spring 3.0,spring security 3.0.2,该怎么做? 问题答案: 可以通过以下方式(半伪代码)通过spring安全性完成此操作: 更新:仅包含注册后如何创建会话

  • 我正在用android编程。当我使用(LoginActivity)成功登录时,下一步是加载MainActivity,这个MainActivity是一个导航抽屉活动,但我遇到了这个错误: 致命异常:主进程:com.example.administrador.vicon,PID:32149java.lang.运行时异常:无法启动活动ComponentInfo{com.example.administr