Restful 网络服务中的身份验证
Authentication in Restful web service
下面是我的 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 下的服务。所以patter是/services/fichier.*
.
下面是具体方法:-
@PreAuthorize("hasRole('customer')")
@GET
@Path("/downloadFile/{fileName}/")
public String downloadFile(@PathParam("fileName") String fileName, @QueryParam("fileId") Integer fileId)
{
return "blah blah blah"
}
现在我的 URL 是 - http://localhost:8080/AutoFIE2Web/services/fichier/downloadFile/ffffff.jpg?fileId=5
我使用了 report
用户,它给我访问被拒绝的异常,但它确实适用于其他两个用户 - admin
、johndoe
.
这个认证有什么问题?
谢谢
<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
访问后,它工作正常。
下面是我的 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 下的服务。所以patter是/services/fichier.*
.
下面是具体方法:-
@PreAuthorize("hasRole('customer')")
@GET
@Path("/downloadFile/{fileName}/")
public String downloadFile(@PathParam("fileName") String fileName, @QueryParam("fileId") Integer fileId)
{
return "blah blah blah"
}
现在我的 URL 是 - http://localhost:8080/AutoFIE2Web/services/fichier/downloadFile/ffffff.jpg?fileId=5
我使用了 report
用户,它给我访问被拒绝的异常,但它确实适用于其他两个用户 - admin
、johndoe
.
这个认证有什么问题?
谢谢
<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
访问后,它工作正常。