Я пытаюсь создать спокойную веб-службу, которая будет использоваться другими веб-службами. В идеале, когда клиент обращается к службе и не проходит проверку подлинности, он должен получить 401. Я хочу, чтобы пользователь мог аутентифицироваться, добавив в запрос заголовок проверки подлинности. Я не хочу, чтобы пользователь заполнил форму для входа и разместил ее. Я также не хочу, чтобы он сохранял учетные данные для входа в файл cookie (т.е. сохранял состояние), все они должны быть в сообщении заголовка auth с каждым запросом. Я использовал spring roo для создания веб-службы.
То, что у меня есть на данный момент (взято из одного из spring руководств по безопасности 3.1), когда пользователь получает 401, им предоставляется страница входа в систему, а затем публикуется страница, получая куки файл, который они отправляют с помощью каждый запрос.
Вот мой spring security xml.
<http use-expressions="true">
<intercept-url pattern="/customers/**" access="isAuthenticated()" />
<intercept-url pattern="/**" access="denyAll" />
<form-login />
</http>
<authentication-manager>
<authentication-provider>
<user-service>
<user name="alice" password="other" authorities="user" />
<user name="custome1" password="other" authorities="user" />
</user-service>
</authentication-provider>
</authentication-manager>
Когда я отправляю запрос от curl, я получаю следующее:
$ curl -i -H "Accept: application/json" -H "Authorization: Basic Y3VzdG9tZXIxOm90aGVy" http://localhost:8080/Secured/customers
HTTP/1.1 302 Found
Server: Apache-Coyote/1.1
Set-Cookie: JSESSIONID=B4F983464F68199FA0160DBE6279F440; Path=/Secured/; HttpOnly
Location: http://localhost:8080/Secured/spring_security_login;jsessionid=B4F983464F68199FA0160DBE6279F440
Content-Length: 0
Date: Thu, 25 Apr 2013 17:18:48 GMT
где мой основной токен заголовка - base64 (customer1: other)
Как я могу заставить веб-службу принять заголовок auth, а не перенаправить меня на страницу входа?
Когда я удаляю из security.xml, я получаю следующее excpetion: org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Проблема с конфигурацией: Нет аутентификацииEntryPoint может быть установлена. Убедитесь, что у вас есть механизм входа в систему через пространство имен (например, форма-логин) или укажите пользовательский AuthenticationEntryPoint с атрибутом "entry-point-ref"