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

前端之家收集整理的这篇文章主要介绍了如何将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没有采用您的安全规则.

猜你在找的Spring相关文章