2015-11-18 3 views
0

Ниже представлен мой файл 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.

В чем причина данной аутентификации?

Благодаря

+0

Просто попробуйте заменить '' @PreAuthorize ("hasRole ('customer')") '' с '' @PreAuthorize ("hasAuthority ('customer')") '' – Babl

+0

он не работает. – unknown

+0

Затем попробуйте переместить строку '' '' верхняя, затем строка '' '' – Babl

ответ

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 доступа, он работает нормально.

Смежные вопросы