我正在为我的 RESTful Web 服务(使用 Spring MVC 实现)添加基本身份验证,而 Spring Security 以前从未真正使用过它。现在,我只是在使用内存UserService
中,目的是稍后添加基于存储库的内存。
<security:http>
<security:http-basic />
<security:intercept-url pattern="/**" access="ROLE_ADMIN" />
</security:http>
<security:authentication-manager>
<security:authentication-provider>
<security:user-service>
<security:user name="admin" password="admin"
authorities="ROLE_USER, ROLE_ADMIN" />
<security:user name="guest" password="guest"
authorities="ROLE_GUEST" />
</security:user-service>
</security:authentication-provider>
</security:authentication-manager>
这很好用,即发送以下请求授予我访问所需资源的权限(其中编码字符串为 admin:admin):
GET /user/v1/Tyler HTTP/1.1
Authorization: Basic YWRtaW46YWRtaW4=
发送以下请求会给我一个错误 403(其中编码的字符串是 guest:guest):
GET /user/v1/Tyler HTTP/1.1
Authorization: Basic Z3Vlc3Q6Z3Vlc3Q=
但是,发送所提供的用户名不包含在其中的请求UserService
不会导致错误 403,正如我预期的(或至少是预期的),而是继续提示输入用户名和密码。例如(其中编码的字符串是用户:用户):
GET /user/v1/Tyler HTTP/1.1
Authorization: Basic dXNlcjp1c2Vy
当提供无法识别的用户凭据时,是否需要额外的配置来响应错误 403?我该怎么做呢?