安全约束导致404

时间:2017-11-21 16:54:41

标签: jetty resteasy web.xml keycloak

我正在尝试通过向我的网络应用添加Keycloak仅承载令牌验证来保护部分Resteasy休息服务。

在我的web.xml中,我添加了:

<security-constraint>
    <web-resource-collection>
        <web-resource-name>RestService</web-resource-name>
        <url-pattern>/rest/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>user</role-name>
    </auth-constraint>
</security-constraint>

<login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>RestService</realm-name>
</login-config>

<security-role>
    <role-name>user</role-name>
</security-role>

<servlet>
    <servlet-name>RestApplication</servlet-name>
    <servlet-class>
        org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher
    </servlet-class>
    <init-param>
        <param-name>javax.ws.rs.Application</param-name>
        <param-value>com.web.rest.ResteasyApplication</param-value>
    </init-param>
    <init-param>
        <param-name>resteasy.servlet.mapping.prefix</param-name>
        <param-value>/rest</param-value>
    </init-param>
</servlet>


<servlet-mapping>
    <servlet-name>RestApplication</servlet-name>
    <url-pattern>/rest/*</url-pattern>
</servlet-mapping>

我正在调用网址:http://localhost:8090/rest/app

就身份验证而言,这确实有效。只有具有有效令牌的请求才会被“接受”(其他请求将导致401错误)

但是,当我使用此配置时,我总是会收到404错误。

当我禁用安全约束时,Resteasy控制器会遇到断点,一切都很好。 映射是否相互冲突?如何将请求从身份验证阶段传递到Resteasy处理?

1 个答案:

答案 0 :(得分:2)

<login-config>使用<auth-method>KEYCLOAK</auth-method>而不是BASIC