본문 바로가기
SPRING

[SPRING] Spring Web Security [다양한 인증 방식 지원]

by 함준혁 2023. 4. 27.
 

[SPRING] Spring Web Security [기본 설명 및 설정]

Spring Web Security는 Spring Framework에서 제공하는 웹 보안 프레임워크입니다. Spring Web Security를 사용하면 Spring 애플리케이션에서 사용자 인증, 권한 부여, 보안 인증 등을 구현할 수 있습니다. Spring Web

7ceojun.tistory.com

이 글은 [SPRING] Spring Web Security [기본 설명 및 설정] 글에 이어서 진행합니다.

이전 글을 참고하시려면 상위 버튼을 눌러주세요.

 

 


 

Spring Web Security는 다양한 인증 지원 방식을 제공합니다.

  • 기본 인증(Basic Authentication) - 사용자 이름과 비밀번호를 인코딩하여 요청 헤더에 포함시켜 인증을 처리하는 방식입니다.
  • 폼 인증(Form Authentication) - 사용자 이름과 비밀번호를 입력하는 폼을 제공하여 인증하는 방식입니다. 기본적으로 세션 기반으로 동작합니다.
  • OAuth 인증 - OAuth 프로토콜을 사용하여 사용자 인증을 처리하는 방식입니다. OAuth 프로토콜은 서드파티 애플리케이션에서 인증을 처리할 수 있는 방식으로, Facebook, Google 등에서 제공하는 소셜 로그인 기능에 이용됩니다.
  • LDAP 인증 - Lightweight Directory Access Protocol(LDAP)을 사용하여 사용자 인증을 처리하는 방식입니다. LDAP 서버에 사용자 정보를 저장하여 인증 처리를 합니다.
  • JWT 인증 - JSON Web Token(JWT)을 사용하여 사용자 인증을 처리하는 방식입니다. JWT는 클레임(Claim)이라는 정보를 JSON 형식으로 표현하고, 이를 Base64 URL 인코딩하여 토큰을 생성합니다. 클라이언트는 서버에서 전달받은 JWT를 저장하고, 이를 사용하여 인증을 처리합니다.

예제를 통하여 폼 인증에 대한 설명을 하겠습니다.


먼저 프로젝트 구조는 이와 같습니다.

 

프로젝트구조

.idea는 인텔리제이에서 생성하는 것이므로 신경쓰지 않아도 괜찮습니다.


security-context.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:security="http://www.springframework.org/schema/security"
       xsi:schemaLocation="http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security.xsd
       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <security:http>
        <security:form-login login-page="/member/login"/>
        <security:intercept-url pattern="/sample/member" access="hasRole('ROLE_MEMBER')"/>
        <security:intercept-url pattern="/sample/admin" access="hasRole('ROLE_ADMIN')"/>
        <security:logout logout-url="/sample/logout" logout-success-url="/sample/all"/>
        <security:access-denied-handler error-page="/accessError"/>
    </security:http>
    <security:authentication-manager>
        <security:authentication-provider>
            <security:user-service>
                <security:user name="member" password="{noop}member" authorities="ROLE_MEMBER"/>
                <security:user name="admin" password="{noop}admin" authorities="ROLE_MEMBER, ROLE_ADMIN"/>
            </security:user-service>
        </security:authentication-provider>
    </security:authentication-manager>
</beans>

 

위 코드는 Spring Security를 사용하여 보안 기능을 구현하는데 필요한 설정 파일인 XML 파일의 예시입니다.

 

security:http 태그는 HTTP 보안 구성에 사용됩니다. 여기서는 로그인 페이지를 "/member/login"으로 지정하고, "/sample/member"와 "/sample/admin" 패턴의 URL에 대한 접근 권한을 설정하고 있습니다. 또한 "/sample/logout"에 대한 로그아웃 URL과 로그아웃 후 이동할 페이지인 "/sample/all"을 설정하고 있으며, 접근 거부 시 이동할 페이지를 "/accessError"로 설정하고 있습니다.

 

security:authentication-manager 태그는 사용자 인증 관리를 위한 설정을 정의합니다.

 

여기서는 security:user-service 태그를 사용하여 사용자 이름, 비밀번호 및 권한을 지정하고 있습니다.

"member"와 "admin"이라는 사용자가 있으며, 비밀번호는 "{noop}member" 및 "{noop}admin"으로 설정되어 있습니다. "{noop}"은 비밀번호 인코딩 방식을 지정하는데, "{noop}"은 인코딩하지 않는다는 뜻입니다.

또한, "member" 사용자는 "ROLE_MEMBER" 권한을 가지고 있고, "admin" 사용자는 "ROLE_MEMBER" 및 "ROLE_ADMIN" 권한을 가지고 있습니다.


HomeController.java

Tomcat 서버 실행시 sample/all 로 이동시켜줍니다.


 

SampleController.java

all - 모든사람

member - 회원

admin - 관리자

logout - 로그아웃


URI를 만듭니다.


MemberController.java

 


 

all.jsp

admin.jsp와 member.jsp로 이동할 수 있습니다


admin.jsp


member.jsp

 


CommonController.java

 


accessError.jsp

403 forbidden 페이지가 나올 시에 나타나는 페이지입니다. 여기서의 auth는 

 





728x90

'SPRING' 카테고리의 다른 글

[SPRING] Spring Web Security [기본 설명 및 설정]  (0) 2023.04.27
API정의서  (0) 2023.04.03
IoC란? ( 제어 역행, Spring )  (0) 2023.03.29
Spring Framework란?  (1) 2023.03.28