Я пытаюсь защитить мои REST веб-служб на URL/диспетчерский/отдыха/**Как обезопасить веб-службы REST с помощью Spring Security
Мой текущий дизайн отлично работает, если доступ к веб-сервиса через браузер - когда Я пытаюсь перейти к URL-адресу REST, он перенаправляет меня на страницу входа в систему, чтобы ввести учетные данные, а затем перенаправляет меня на данные веб-службы после входа в систему.
Проблема в том, что при попытке доступа к веб-сервису через код Java используя RestTemplate, мой код прерывается. Это происходит, даже если пользователь уже зарегистрировался и прошел проверку подлинности.
Моя весна-security.xml конфигурационный файл:
<beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:beans="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.2.xsd">
<!-- enable use-expressions -->
<http auto-config="true" use-expressions="true">
<intercept-url pattern="/dispatcher/admin**" access="hasRole('ROLE_ADMIN')" />
<intercept-url pattern="/dispatcher/rest/**" access="hasRole('ROLE_ADMIN')"/>
<!-- access denied page -->
<access-denied-handler error-page="/dispatcher/403" />
<form-login
login-page="/dispatcher/login"
default-target-url="/dispatcher/admin"
login-processing-url="/dispatcher/login_process"
authentication-failure-url="/dispatcher/login?error"
username-parameter="username"
password-parameter="password" />
<logout logout-success-url="/dispatcher/login?logout" logout-url = "/dispatcher/logout"/>
<!-- enable csrf protection -->
<csrf />
</http>
<authentication-manager>
<authentication-provider user-service-ref="myUserDetailsService" >
</authentication-provider>
</authentication-manager>
<beans:bean id="myUserDetailsService" class="com.shopping.services.MyUserDetailsService" />
</beans:beans>
Любая помощь будет принята с благодарностью!
описать «когда я пытаюсь получить доступ к веб-сервиса с помощью Java-код с помощью RestTemplate, мой код разрывы». Попытайтесь изолировать, где проблема, либо ваш наружный код 'RestTemplate' сломан, либо безопасность. В первом случае вы также должны отправить код, который вы использовали для вызова вашего защищенного API. – g00glen00b
Очень редко используется служба REST, защищенная регистрацией формы - вы уверены, что это то, что вы хотите? Традиционно вы использовали бы базовую аутентификацию вместо входа в систему, или если услуги вызываются от имени конечного пользователя, вы можете использовать OAuth2. –