평행코드

<Spring> Security 본문

Spring

<Spring> Security

나의 오류는 누군가 겪었던 오류 2023. 12. 14. 23:16

Security 적용하는 방법

 

1. security모듈 추가

2. security설정

→ web.xml securityFilter를 등록

→ 서비스별 인증, 권한에 대한 설정을 → springbeanconfigration.xml

- security namespace가 제공하는 태그를 이용

- 인증방법, 서비스별 권한설정, 인증실패, 성공에 대한 설정, 인증페이지설정 등.

 

pom.xml


암호화 처리를 위한 모듈
            
		<!-- https://mvnrepository.com/artifact/org.springframework.security/spring-security-core -->
		<dependency>
		    <groupId>org.springframework.security</groupId>
		    <artifactId>spring-security-core</artifactId>
		    <version>${org.springsecurity-version}</version>
		</dependency>
		<dependency>
		    <groupId>org.springframework.security</groupId>
		    <artifactId>spring-security-web</artifactId>
		    <version>${org.springsecurity-version}</version>
		</dependency>
		<dependency>
		    <groupId>org.springframework.security</groupId>
		    <artifactId>spring-security-config</artifactId>
		    <version>${org.springsecurity-version}</version>
		</dependency>

 

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>

 

security-context.xml


spring-security를 이용한 인증처리

       <security:http auto-config="true">
       		<!-- 로그인에 대한 설정 -->
       		<!-- 
       			id, password를 입력받아 인정 처리
       			<security:form-login>태그를 이용해서 설정
       			username-parameter : id값의 name속성명 -> username
       			password-parameter : password값의 name속성명 설정 -> password
       			login-page : 커스터마이징 로그인페이지 주소
       			default-target-url : 인증 후 연결될 기본주소 설정 -> 이전 페이지
       			authentication-failure-forward-url : 인증실패 후 연결될 서비스 URL
       			authentication-success-forward-url : 인증성공 후 연결될 서비스 URL
       			login-processing-url : URL주소를 등록 * 시큐리티가 처리할 주소
       		-->
       		<security:form-login
       			login-page="/loginpage"
       			username-parameter="userId"
       			password-parameter="pw"
       			login-processing-url="/loginend"
       			authentication-failure-forward-url="/loginfail"
       			authentication-success-forward-url="/loginsuccess"/>
       			
       			
       			
       		<security:csrf disabled="true"/>
       		
       		<!-- 
       			로그아웃처리 설정
       			logout-url : 로그아웃처리할 URL
       			logout-success-url : 로그아웃처리 후 이동할 URL 로그아웃시간남길수도있음
       		-->
       		<!-- <security:logout/> -->
       		<!-- 
       			권한에 따른 서비스이용 설정(URL패턴으로설정)
       			<security:intercept-url>태그를 이용해서 설정
       			pattern : 서비스URL패턴 /member/*, /notice/* 
       			access : 권한에 대한 설정 permitAll(), hasAnyAuthority("권한명","권한명"...), 
       						hasAuthority("권한"), hasRole("ROLE_USER"), 
       						hasAnyRole("ROLE_ADMIN","ROLE,USER")
       			기본 모든서비스 차단함
       		-->
			<security:intercept-url pattern="/" access="permitAll()"/>
			<security:intercept-url pattern="/loginpage" access="permitAll()"/>
			<security:intercept-url pattern="/resources/**" access="permitAll()"/>     <!-- *한개개체 **하위모두/// -->      		
       		<security:intercept-url pattern="/**" access="hasAnyAuthority('admin','user')"/>
       </security:http>
      
      <security:authentication-manager>
      		<security:authentication-provider>
      			<security:user-service>
      				<security:user name="bslove" authorities="admin" 
      				password="$2a$10$IiI5/HDjKIXMSlKiRqB/S.oWTTw7AP1BShMA1Of.5QzhDzJLzpIIS"/>
      			</security:user-service>
      			<security:password-encoder ref="bcryptPassword"/>	
      		</security:authentication-provider>
      </security:authentication-manager>