我正在尝试使用keycloak保护我的示例Web项目。
的web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchems-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<display-name>Client</display-name>
<description>
Client App
</description>
<module-name>client</module-name>
<security-constraint>
<display-name>Security contraint for /roles folder</display-name>
<web-resource-collection>
<web-resource-name>Role pages</web-resource-name>
<url-pattern>/client/roles/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>KEYCLOAK</auth-method>
<realm-name>valijon-demo</realm-name>
</login-config>
</web-app>
keycloak.json
{
"realm": "master",
"auth-server-url": "http://localhost:8080/auth",
"ssl-required": "external",
"resource": "ourdemo",
"public-client": true
}
context.xml中
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<Valve className="org.keycloak.adapters.tomcat.KeycloakAuthenticatorValve" />
</Context>
在keycloak服务器中的应用程序:
客户ID: mydemo
客户端协议 openid-connect
访问类型公开
根网址 localhost:9595 / client / *
有效重定向uri localhost:9595 / client / /
管理员网址 localhost:9595 / client / *
Keycloak没有保护应用程序。它允许访问/ client / roles / *而无需登录。
如果我尝试从 C:\ tomcat8 \ apache-tomcat-8.0.47 \ lib中的 keycloak-tomcat8-adapter-dist-3.4.0.Final.zip 中删除jar 文件夹和访问/客户端/角色/ *我将获得500,服务器抛出noshuchmethod异常(这意味着在项目中使用了keycloak)。
有人可以解释为什么/ client / roles / *没有安全保障吗?