Skip to content

Commit 3d05295

Browse files
author
gkislin@yandex.ru
committed
Add spring security
Protect rest api
1 parent 41ca136 commit 3d05295

6 files changed

Lines changed: 52 additions & 1 deletion

File tree

conf/Topjava-soapui-project.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?xml version="1.0" encoding="UTF-8"?>
2-
<con:soapui-project activeEnvironment="Default" name="Topjava02" resourceRoot="" soapui-version="4.6.2" xmlns:con="http://eviware.com/soapui/config"><con:settings/><con:interface xsi:type="con:RestService" wadlVersion="http://wadl.dev.java.net/2009/02" name="http://localhost:8080" type="rest" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><con:settings/><con:definitionCache/><con:endpoints><con:endpoint>http://localhost:8080</con:endpoint></con:endpoints><con:resource name="" path="/topjava/rest/admin/users"><con:settings/><con:parameters/><con:method name="" method="GET"><con:settings/><con:parameters/><con:representation type="FAULT"><con:mediaType>text/html;charset=utf-8</con:mediaType><con:status>500</con:status><con:params/><con:element>html</con:element></con:representation><con:representation type="RESPONSE"><con:mediaType>application/json</con:mediaType><con:status>200</con:status><con:params/><con:element xmlns:ns="http://localhost/topjava/rest/admin/users/100000">ns:Response</con:element></con:representation><con:request name="AdminGetAll" mediaType="application/json"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers">&lt;xml-fragment/></con:setting></con:settings><con:endpoint>http://localhost:8080</con:endpoint><con:request/><con:credentials><con:authType>Global HTTP Settings</con:authType></con:credentials><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:parameters/></con:request></con:method><con:method name="" method="POST"><con:settings/><con:parameters/><con:representation type="REQUEST"><con:mediaType>application/json</con:mediaType><con:params/></con:representation><con:representation type="FAULT"><con:mediaType>text/html;charset=utf-8</con:mediaType><con:status>500</con:status><con:params/><con:element>html</con:element></con:representation><con:representation type="RESPONSE"><con:mediaType>application/json</con:mediaType><con:status>201</con:status><con:params/><con:element xmlns:user="http://localhost/topjava/rest/admin/users">user:Response</con:element></con:representation><con:request name="AdminCreate" mediaType="application/json" postQueryString="false"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers">&lt;xml-fragment/></con:setting></con:settings><con:endpoint>http://localhost:8080</con:endpoint><con:request>{
2+
<con:soapui-project activeEnvironment="Default" name="Topjava02" resourceRoot="" soapui-version="4.6.2" abortOnError="false" runType="SEQUENTIAL" xmlns:con="http://eviware.com/soapui/config"><con:settings/><con:interface xsi:type="con:RestService" wadlVersion="http://wadl.dev.java.net/2009/02" name="http://localhost:8080" type="rest" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><con:settings/><con:definitionCache/><con:endpoints><con:endpoint>http://localhost:8080</con:endpoint></con:endpoints><con:resource name="" path="/topjava/rest/admin/users"><con:settings/><con:parameters/><con:method name="" method="GET"><con:settings/><con:parameters/><con:representation type="FAULT"><con:mediaType>text/html;charset=utf-8</con:mediaType><con:status>500 401</con:status><con:params/><con:element>html</con:element></con:representation><con:representation type="RESPONSE"><con:mediaType>application/json</con:mediaType><con:status>200</con:status><con:params/><con:element xmlns:ns="http://localhost/topjava/rest/admin/users/100000">ns:Response</con:element></con:representation><con:request name="AdminGetAll" mediaType="application/json"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers">&lt;xml-fragment/></con:setting></con:settings><con:endpoint>http://localhost:8080</con:endpoint><con:request/><con:credentials><con:username>user@yandex.ru</con:username><con:password>password</con:password><con:authType>Global HTTP Settings</con:authType></con:credentials><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:parameters/></con:request></con:method><con:method name="" method="POST"><con:settings/><con:parameters/><con:representation type="REQUEST"><con:mediaType>application/json</con:mediaType><con:params/></con:representation><con:representation type="FAULT"><con:mediaType>text/html;charset=utf-8</con:mediaType><con:status>500</con:status><con:params/><con:element>html</con:element></con:representation><con:representation type="RESPONSE"><con:mediaType>application/json</con:mediaType><con:status>201</con:status><con:params/><con:element xmlns:user="http://localhost/topjava/rest/admin/users">user:Response</con:element></con:representation><con:request name="AdminCreate" mediaType="application/json" postQueryString="false"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers">&lt;xml-fragment/></con:setting></con:settings><con:endpoint>http://localhost:8080</con:endpoint><con:request>{
33
"name": "New2",
44
"email": "new2@yandex.ru",
55
"password": "passwordNew",

pom.xml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
<webjars-datetimepicker.version>2.3.4</webjars-datetimepicker.version>
4747
<webjars-noty.version>2.2.4</webjars-noty.version>
4848
<webjars-datatables.version>1.9.4-2</webjars-datatables.version>
49+
<spring-security.version>3.2.5.RELEASE</spring-security.version>
4950
</properties>
5051

5152
<build>
@@ -207,6 +208,18 @@
207208
</exclusions>
208209
</dependency>
209210

211+
<!--security-->
212+
<dependency>
213+
<groupId>org.springframework.security</groupId>
214+
<artifactId>spring-security-web</artifactId>
215+
<version>${spring-security.version}</version>
216+
</dependency>
217+
<dependency>
218+
<groupId>org.springframework.security</groupId>
219+
<artifactId>spring-security-config</artifactId>
220+
<version>${spring-security.version}</version>
221+
</dependency>
222+
210223
<!--DataBase-->
211224
<dependency>
212225
<groupId>org.springframework.data</groupId>

src/main/resources/logback.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626

2727
<logger name="ru.javawebinar.topjava" level="debug"/>
2828
<logger name="org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver" level="debug"/>
29+
<logger name="org.springframework.security" level="debug"/>
2930

3031
<root level="INFO">
3132
<appender-ref ref="file"/>

src/main/resources/spring/spring-app.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
</bean>
1313
-->
1414
<import resource="spring-tools.xml"/>
15+
<import resource="spring-security.xml"/>
1516

1617
<context:annotation-config/>
1718

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<beans:beans xmlns="http://www.springframework.org/schema/security"
2+
xmlns:beans="http://www.springframework.org/schema/beans"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://www.springframework.org/schema/beans
5+
http://www.springframework.org/schema/beans/spring-beans.xsd
6+
http://www.springframework.org/schema/security
7+
http://www.springframework.org/schema/security/spring-security.xsd">
8+
9+
<http pattern="/resources/**" security="none"/>
10+
<http pattern="/webjars/**" security="none"/>
11+
12+
<http pattern="/rest/**" use-expressions="true" name="restSecurityFilterChain" create-session="stateless">
13+
<http-basic/>
14+
<intercept-url pattern="/rest/admin/**" access="hasRole('ROLE_ADMIN')"/>
15+
<intercept-url pattern="/**" access="isAuthenticated()"/>
16+
</http>
17+
18+
<authentication-manager>
19+
<authentication-provider>
20+
<user-service>
21+
<user name="user@yandex.ru" password="password" authorities="ROLE_USER"/>
22+
<user name="admin@gmail.com" password="admin" authorities="ROLE_ADMIN"/>
23+
</user-service>
24+
</authentication-provider>
25+
</authentication-manager>
26+
</beans:beans>

src/main/webapp/WEB-INF/web.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,16 @@
6060
<url-pattern>/dandelion-assets/*</url-pattern>
6161
</servlet-mapping>
6262

63+
<!-- Spring Security -->
64+
<filter>
65+
<filter-name>springSecurityFilterChain</filter-name>
66+
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
67+
</filter>
68+
<filter-mapping>
69+
<filter-name>springSecurityFilterChain</filter-name>
70+
<url-pattern>/*</url-pattern>
71+
</filter-mapping>
72+
6373
<!-- Dandelion filter definition and mapping -->
6474
<filter>
6575
<filter-name>dandelionFilter</filter-name>

0 commit comments

Comments
 (0)