微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将Keycloak与Spring集成(无启动)?

我一直试图让我的Spring Web应用程序与Keycloak一起工作几天没有任何运气.我按照他们的文档here中提到的说明进行操作.

我已经设置了在Wildfly 9中运行的Keycloak服务器.对于我的Web应用程序,我正在使用JBoss AS 7和Spring Framework 4.1.7.我按照步骤here为JBoss AS 7配置了适配器.然后,对于我的Spring Web应用程序,我按照here中提到的步骤操作.但是,当我尝试运行我的应用程序时,它不会重定向到我的Keycloak服务器.它只显示页面而无需任何身份验证.

请参阅下面的代码.

的pom.xml

web.xml中

servlet的context.xml中

安全的context.xml

keycloak.json

{
  "realm": "demorealm","realm-public-key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA8g2TQ1HLuPryt0uygtRLQP29OQSTYcgLbrpCOhxvumghB+meTeI6eXdY3RT29oPI5C39oETo74eaoyG2eIKAfy/hcuQotEFwPus03iKAlXQFf5h7Sf8UUdCcCWNXakSpyCpkFqFlNcDJBdvUdgtogY4vznauCGexnP4lAuIlgdL7aYse1xUtWhNMVFjRr/fCnkabsJo+E6NqnjYmbnsuBrgeWB6chRP8CfnAK2Q4MeARIiSUZbXL8MX9etB4d15nc2llUl/PzDIJ7sD3U70+1LIU8bzanYErCxz7f07hx96kHHPLtH58r+d9YrjJtjMFsd9AO4r1YesdlnAshxPccwIDAQAB","auth-server-url": "https://mykeycloakurl.com/auth","ssl-required": "none","resource": "demo","credentials": {
    "secret": "e140dbb8-22ba-4ba7-9b54-73e688e937da"
  }
}

HomeController.java

package org.demo.keycloak;

import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

/**
 * Handles requests for the application home page.
 */
@Controller
public class HomeController {

  private static final Logger logger = LoggerFactory.getLogger(HomeController.class);

  /**
   * Simply selects the home view to render by returning its name.
   */
  @RequestMapping(value = "/home",method = RequestMethod.GET)
  public String home(Locale locale,Model model) {
    logger.info("Welcome home! The client locale is {}.",locale);

    Date date = new Date();
    DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG,locale);

    String formattedDate = dateFormat.format(date);

    model.addAttribute("serverTime",formattedDate );

    return "home";
  }

}

Project Structure

感谢任何帮助.

2015年8月18日更新

在JBoss Standalone中将level设置为DEBUG并在我的应用程序的log4j.xml中添加记录器之后,我从应用程序服务器(JBoss AS 7)日志文件获取了这个.它有点长,并且无法将其粘贴在此处,所以我将其粘贴在here上.希望它有所帮助.

2015年8月26日更新

我尝试了另一种方法,即设置具有安全性约束的web.xml文件,并删除pom.xml文件中的spring安全适配器引用,并使用keycloak core和keycloak adapter core.它现在重定向到我的Keycloak服务器.但是,当我使用用户名密码登录时,我被重定向回web url,但它返回错误Http Status 403已禁止访问指定的资源().我不确定我做错了什么.

的pom.xml

web.xml中

Keycloak服务器配置:

境界:demorealm

客户端设置:

>客户:演示
>客户端协议:openid-connect
>访问类型:保密
>有效的重定向网址:http://localhost:8080/ *
> Base Url:http://localhost:8080

客户范围:

>允许全范围:TRUE

仍然没有运气.感谢任何帮助.

最佳答案
使用Keycloak Spring安全适配器时,不应在同一项目中使用任何其他Keycloak适配器.

您的配置文件看起来没问题,但您描述的行为使得听起来像Spring没有采用您的安全规则.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐