[SPRING] spring-security-context.xml에서 사용자 이름 / 패스워드를 이동하는 방법?
SPRINGspring-security-context.xml에서 사용자 이름 / 패스워드를 이동하는 방법?
내 프로젝트 중 하나에서 Spring Security를 사용하고 있습니다. web-app에는 사용자가 로그인해야합니다. 따라서 다음과 같이 spring-security-context.xml 파일에 몇 가지 사용자 이름과 암호를 추가했습니다.
<authentication-manager>
<authentication-provider>
<user-service>
<user name="user_1" password="password_1" authorities="ROLE_USER" />
<user name="user_2" password="password_2" authorities="ROLE_USER" />
</user-service>
</authentication-provider>
</authentication-manager>
내 질문은 spring-security-context.xml에 유지하는 대신 이러한 사용자 이름 - 비밀번호 쌍을 다른 파일 (일부 속성 파일과 같은)로 이동하는 방법입니다. 그리고 그 파일 특성 파일을 읽는 방법?
해결법
-
==============================
1.별도의 .properties 파일에 사용자 이름과 암호를 저장할 수 있습니다.
별도의 .properties 파일에 사용자 이름과 암호를 저장할 수 있습니다.
<user-service id="userDetailsService" properties="users.properties"/>
users.properties의 형식은 다음과 같습니다.
jimi=jimispassword,ROLE_USER,ROLE_ADMIN,enabled bob=bobspassword,ROLE_USER,enabled
데이터베이스에 저장하려면이 문서를 읽어보십시오. http://www.mkyong.com/spring-security/spring-security-form-login-using-database/
참고 자료 : 스프링 보안 메모리 내 인증
-
==============================
2.PropertyPlaceholderConfigurer를 사용할 수 있습니다 - 속성 파일에 넣은 다음 EL을 사용하여 참조하십시오 :
PropertyPlaceholderConfigurer를 사용할 수 있습니다 - 속성 파일에 넣은 다음 EL을 사용하여 참조하십시오 :
http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/beans.html#beans-factory-placeholderconfigurer
-
==============================
3.데이터베이스 또는 LDAP로 이동하는 방법을 찾을 수 있습니다. 스프링 시큐리티는 반드시 둘 다 지원합니다.
데이터베이스 또는 LDAP로 이동하는 방법을 찾을 수 있습니다. 스프링 시큐리티는 반드시 둘 다 지원합니다.
-
==============================
4.나는 마지막으로 제안 된 방법을 시도해 보았습니다. 다음과 같이하면 좋았습니다.
나는 마지막으로 제안 된 방법을 시도해 보았습니다. 다음과 같이하면 좋았습니다.
웹 xml에 이러한 변경 사항을 추가했습니다.
<filter-mapping> <filter-name>springSecurityFilterChain</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <servlet-mapping> <servlet-name>service</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping> <filter> <filter-name>springSecurityFilterChain</filter-name> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> </filter> <filter-mapping> <filter-name>springSecurityFilterChain</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
스프링 보안 xml에 이러한 변경 사항을 추가하십시오.
<security:authentication-manager alias="authenticationManager"> <security:authentication-provider> <security:user-service> <security:user name="${resource.service.authentication.name}" authorities="${resource.service.authentication.authorities}" password="${resource.service.authentication.password}"/> </security:user-service> </security:authentication-provider> </security:authentication-manager>
이러한 변경 사항을 애플리케이션 컨텍스트 xml에 추가하거나 속성 로더 xml이있는 경우 ...보다 나은
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="placeholderPrefix" value="${" /> <property name="placeholderSuffix" value="}" /> <property name="locations"> <list> <value>classpath:resourceservice.properties</value> </list> </property> </bean>
그런 다음이 변경 사항을 등록 정보 파일 resourceservice.properties에 추가하십시오
memberservice.authentication.name=usename memberservice.authentication.authorities=AUTHORISED memberservice.authentication.password=password
Jersey를 사용하는 리소스에 이러한 변경 사항을 추가하십시오.
@PUT @Path("{accountId}") @Consumes("application/xml") @PreAuthorize("hasRole('AUTHORISED')") public Response methodName
-
==============================
5.이것은 나를 위해 스프링 보안 인증 및 권한 부여를 사용하여 속성 파일을 사용하여 작동합니다 :
이것은 나를 위해 스프링 보안 인증 및 권한 부여를 사용하여 속성 파일을 사용하여 작동합니다 :
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:security="http://www.springframework.org/schema/security" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.2.xsd"> <mvc:annotation-driven /> <bean id="webPropertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="ignoreResourceNotFound" value="true" /> <property name="ignoreUnresolvablePlaceholders" value="true" /> <property name="locations"> <list> <value>classpath:abc.properties</value> </list> </property> </bean> <bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor" /> <security:http auto-config="true" use-expressions="true"> <security:intercept-url pattern="/stat/login" access="permitAll"/> <security:intercept-url pattern="/stat/summary" access="hasRole('ROLE_ADMIN')" /> <security:form-login login-page="/stat/login" default-target-url="/stat/summary" authentication-failure-url="/stat/loginError" /> </security:http> <!-- Username and password used from xml --> <!-- <security:authentication-manager> <security:authentication-provider> <security:user-service> <security:user name="xyz" password="xyz" authorities="ROLE_ADMIN" /> </security:user-service> </security:authentication-provider> </security:authentication-manager> --> <security:authentication-manager> <security:authentication-provider> <security:user-service> <security:user name="${stat.user}" password="${stat.pwd}" authorities="ROLE_ADMIN" /> </security:user-service> </security:authentication-provider> </security:authentication-manager> </beans>
abc.properties 파일은 다음과 같습니다.
stat.user=xyz stat.pwd=xyz
봄 보안 구현을위한 web.xml 항목 :
<filter> <filter-name>springSecurityFilterChain</filter-name> <filter-class>org.springframework.web.filter.DelegatingFilterProxy </filter-class> </filter> <filter-mapping> <filter-name>springSecurityFilterChain</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
from https://stackoverflow.com/questions/11075170/how-to-move-username-passwords-out-of-spring-security-context-xml by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Java / Jetty : Embedded Jetty에 필터를 추가하는 방법 (0) | 2019.02.11 |
---|---|
[SPRING] JAXB 주석이있는 Spring 3.1.2의 등록자 MappingJackson2HttpMessageConverter (0) | 2019.02.11 |
[SPRING] Spring MVC에서 Gzip 압축 된 요청 바디를 디코딩하는 법 (0) | 2019.02.11 |
[SPRING] 전체 페이지를 가져 오려면 PageRequest에서 계산 쿼리를 비활성화하는 방법? (0) | 2019.02.11 |
[SPRING] RunWith 및 ContextConfiguration 이상한 동작 (0) | 2019.02.11 |