Ниже представлен мой файл web.xml, содержащий аутентификацию веб-службы.Аутентификация в Restful 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
.
В чем причина данной аутентификации?
Благодаря
Просто попробуйте заменить '' @PreAuthorize ("hasRole ('customer')") '' с '' @PreAuthorize ("hasAuthority ('customer')") '' – Babl
он не работает. – unknown
Затем попробуйте переместить строку '' '' верхняя, затем строка '' '' –
Babl