Опитвам се да създам спокойна уеб услуга, която ще се използва от други уеб услуги. В идеалния случай, когато клиент получи достъп до услугата и не е удостоверен, той трябва да получи 401. Искам потребителят да може да се удостовери, като добави заглавка за удостоверяване към заявката. Не искам потребителят да попълни формуляр за вход и да го публикува. Също така не искам да съхранява идентификационни данни за влизане в бисквитка (т.е. запазване на състоянието), всичко трябва да е в заглавката за удостоверяване, изпращана с всяка заявка. Използвах spring roo, за да създам уеб услугата.
Това, което имам в момента (взето от един от пролетните уроци за сигурност 3.1), когато потребителят получи 401, той получава подкана със страница за вход и след това публикува страницата, получавайки бисквитка, която изпраща с всяка заявка.
Ето моя пролетен 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)
Как мога да накарам уеб услугата да приеме заглавката за удостоверяване и да не ме пренасочва към страница за вход?
Когато премахна от security.xml, получавам следното:
excpetion:org.springframework.beans.factory.parsing.BeanDefinitionParsingException:
Configuration problem: No AuthenticationEntryPoint could be established.
Please make sure you have a login mechanism configured through the namespace
(such as form-login) or specify a custom AuthenticationEntryPoint with the
'entry-point-ref' attribute