我一直试图让我的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";
}
}
感谢任何帮助.
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
仍然没有运气.感谢任何帮助.
您的配置文件看起来没问题,但您描述的行为使得听起来像Spring没有采用您的安全规则.