Keycloak:无需登录即可访问我的安全资源

时间:2017-11-26 19:57:43

标签: java tomcat servlets openid-connect keycloak

我正在尝试使用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 / *没有安全保障吗?

0 个答案:

没有答案