본문 바로가기

컴퓨터공학/Spring & Hibernate

Spring> Security> JDBC Database Authentication

순서

1. 데이터베이스 생성을 위한 SQL 스크립트 작성 

2. 데이터베이스 지원을 위한 메이븐 POM 파일에 내용 추가

3. JDBC properties 파일 생성

4. Spring configuration 에서 데이터소스 정의

5. JDBC 사용을 위한 Spring Security Configuration 업데이트

 

 

순서대로 하는 일을 좀 더 풀어쓰자면

 

1. 테이블 작성

2. 메이븐에 라이브러리 추가

3. connection pool 정보 추가

4. securityDataSource에 데이터베이스 정보 입력하고 반환

5. Spring Security 에 JDBC 인증을 위한  DataSource 제공

 


1. 데이터베이스 생성

테이블을 작성한다 

일단 데이터베이스를 생성한다. 이미 있으면 없애고 없으면 만든다.

그리고 만든 데이터베이스를 사용한다

테이블을 만든다.

이름은 users 이고

칼럼은 username, password, enabled 를 만든다.

pk는 username 

user 테이블에 데이터 값을 주입한다.

 

테이블을 하나 더 만드는데 이름은 authorities 로 역할 정보를 담고 있는 테이블이다.

칼럼은 username과 authority

유일키는 authorities_idx_1 이름을 붙이고 두 개 칼럼 모두를 지정한다.

외래키는 username으로 users 테이블의 username이며 이름도 authorities_idfx_1 로 지정

 

데이터를 authorities 테이블에 넣어준다.

아 참고로 connection은 이전에 쓰던 거 그대로 이용했음..

 

mysql 에서 user를 새로 만들고 싶을 땐 어떻게 하지?

 

 

 

복습할 겸 이전 스샷 재활용.. 유저를 쿼리를 통해 만들어주고

connection을 만들 때 지정해주면된다.

 

 

 

 

 

 

데이터베이스는 성공적으로 구성완료


2. 데이터베이스 지원을 위한 메이븐 POM 파일에 내용 추가

 메이븐에 라이브러리 추가한다

 

 

http://search.maven.org 에서 찾을 수 있다. 

 

Maven Central Repository Search

 

search.maven.org

 


3 .JDBC properties 파일 생성

connection pool 정보 추가한다

 

 

security database  연결 상세 정보가 있는 파일이다.

Jdbc driver, url, 유저 아이디/비번, connection pool 정보 등등 이 들어있다.

Config 파일에서 properties 파일을 불러와야 한다..

src/main/resources 파일은 메이븐이 빌드하는 동안 자동적으로 classpath 에 복사된다. 

 


4. Spring configuration 에서 데이터소스 정의

 

env 는 properties 파일에 있는 데이터를 가져온다.

Logger 하나 만들어주고

@Bean 클래스도 만들어준다.

securityDataSource...

이 클래스 안에는 이제 해야할 일은 다음과 같다.

 

1. Connection pool 생성하기

DataSource 객체를 만들어준다. 

 

2. jdbc 드라이버 클래스 설정하기

아까도 말했지만 env 는 properties 데이터를 가져온다.

env가 properties 데이터를 가져와 DataSource 에 입력한다.

properties 파일에 jdbc Driver 정보가 있고

이걸 env가 가져와서 DataSource 객체에 있는 드라이버 클래스에 입력한다.

properties에는 jdbc.driver 가 있다.. env가 properties 이고 이걸 가져오는것

 

3. connection 로그 남기기

4. database connection 을 설정하기

먼저 String 을 Int로 바꾸는 메소드를 만든다.

 

5. connection pool 설정하기

 


5. JDBC 사용을 위한 Spring Security Configuration 업데이트

이전에 만든 Config 클래스에 있는 securityDataSource  메소드를 @Autowired 를 통해 불러온다.

 

Config 클래스에는 앱의 전체적인 config 정보가 들어있고

securityConfig는 SpringSecurity에 관한 config가 들어있다.

securityDataSource는 데이터베이스 접근을 위한 정보가 들어있는데

데이터베이스 정보는  앱 config에 있다

Spring security가 데이터베이스 접근을 위해 정보가 필요하다.

Spring security는 정보를 얻기 위해 security config를 뒤적거린다

security config 는 정보를 제공하기 위해  데이터베이스 정보를 앱 config에서 가져온다

Spring security가 이걸 이용하여 데이터베이스에 접근한다.

 

 

@Autowired 를 통해 가져온 securityDataSource (여기엔 데이터베이스 정보가 있음)

이제 Spring Security Config에 등록한다.

 

이야 잘 작동한다