Restful Web服务中的身份验证

时间:2015-11-18 13:55:32

标签: java web-services jax-rs restful-authentication

下面是我的web.xml文件,其中包含对Web服务的身份验证。

<sec:authentication-manager>
        <sec:authentication-provider>
            <sec:user-service id="userService">
                <sec:user name="admin" password="admin" authorities="admin" />
                <sec:user name="report" password="report" authorities="customer" />
                <sec:user name="johndoe" password="password" authorities="customer, admin" />
            </sec:user-service>
        </sec:authentication-provider>
    </sec:authentication-manager>

    <sec:http create-session="stateless" use-expressions="true" path-type="regex">
        <sec:intercept-url pattern="/services.*" access="permitAll" />
        <sec:intercept-url pattern="/services/fichier.*" access="hasRole('customer')" />
        <sec:intercept-url pattern="/services.*" access="hasRole('admin')" />
        <sec:http-basic />
    </sec:http>

现在我指定了一个用户 - report,其中有一个角色 - customer。该用户只能访问fichier下的服务。淅沥是/services/fichier.*

以下是具体方法: -

@PreAuthorize("hasRole('customer')")
@GET
@Path("/downloadFile/{fileName}/")
public String downloadFile(@PathParam("fileName") String fileName, @QueryParam("fileId") Integer fileId)
{
    return "blah blah blah"
}

现在我的网址是 - http://localhost:8080/AutoFIE2Web/services/fichier/downloadFile/ffffff.jpg?fileId=5

我使用了report用户,它为我提供了拒绝访问权限的异常,但它确实与其他两位用户合作 - adminjohndoe

此身份验证有什么问题?

由于

1 个答案:

答案 0 :(得分:0)

<sec:http create-session="stateless" use-expressions="true" path-type="regex">
       <!-- <sec:intercept-url pattern="/services.*" access="permitAll" /> -->
        <sec:intercept-url pattern="/services/fichier.*" access="hasRole('customer')" />
        <sec:intercept-url pattern="/services.*" access="hasRole('admin')" />
        <sec:http-basic />
</sec:http>

删除permitAll访问权限后,工作正常。