개발놀이터

CAS 인증서버 구축하기 (3) : 사용자 등록하기 본문

Spring/Spring Security

CAS 인증서버 구축하기 (3) : 사용자 등록하기

마늘냄새폴폴 2024. 2. 25. 22:37

이제 로그인을 하기 위해서 사용자가 있어야겠죠? 

 

가장 간단한 방법은 static한 사용자를 만들면 됩니다. 그냥 하드코딩으로 때려박는거죠. 하지만 이 방법은 생략하도록 하겠습니다. 

 

우리가 본질적으로 원하는 것은 데이터베이스에 존재하는 사용자를 이용해서 로그인을 진행하는 것이니까요.

 

static한 사용자 인증을 패스하고 바로 데이터베이스 사용자를 등록해보도록 하겠습니다. 

 

일단 CAS 서버를 띄웠으니 데이터베이스를 위한 서버를 하나 더 띄우겠습니다. 

 

그곳에서 docker, docker-compose을 내려받아주고 Docker를 이용해 MySQL을 띄웁니다. 

 

MySQL 사용자를 만들어주고 외부 연결까지 마치고 나면 준비 끝입니다. 

 

너무 두루뭉술하게 넘어가서 왜이렇게 금방금방 넘어가? 하신다면 아래의 링크를 통해 자세히 보실 수 있습니다!

 

https://coding-review.tistory.com/category/%EB%B0%B0%ED%8F%AC/docker

 

'배포/docker' 카테고리의 글 목록

 

coding-review.tistory.com

 

데이터베이스 쿼리를 사용하기 위해 application.yml에 다음과 같이 작성합니다. 

 

 

test라는 데이터베이스를 사용했고 컬럼은 id, login_id, login_pw가 있습니다. 

 

user에는 우리가 생성한 MySQL사용자를, password는 사용자를 인증하기위한 비밀번호를, 실제 CAS 서버에서 아이디와 비밀번호를 입력받아야하는 텍스트필드와 데이터베이스의 컬럼과 바인딩하기위해 어떤 컬럼명인지 field-user, field-password를 적어줍니다. 

 

그리고 마지막으로 password-encoder를 NONE으로 하였는데 해당 옵션은 데이터베이스에 평문으로 비밀번호를 저장할 때 사용하는 것입니다. 저는 테스트용으로 만들었기 때문에 암호화를 하지 않았지만 실환경에선 BCrypt로 암호화할 것입니다. 

 

이때는 password-encoder 의 type 부분을 BCRYPT라고 적어주시면 됩니다. 

 

테스트용 사용자를 하나 만들고 다시 CAS 서버에서 로그인을 진행해보도록 하겠습니다. 

 

주의!

그리고 뭐라도 설정이 하나 바뀌었다면 서버를 내렸다가 다시 올려야합니다. 

 

다시 서버를 올려서 로그인을 진행해보면?

 

이렇게 성공한 것을 볼 수 있습니다. 

 

데이터베이스 연동에 대한 더 자세한 내용은 아래의 링크를 참고해주세요! 해당 링크는 CAS 공식문서입니다. 

 

https://apereo.github.io/cas/6.6.x/authentication/Database-Authentication.html

 

CAS - Database Authentication

This property controls the maximum lifetime of a connection in the pool. When a connection reaches this timeout, even if recently used, it will be retired from the pool. An in-use connection will never be retired, only when it is idle will it be removed. T

apereo.github.io

 

이제 클라이언트를 만들어보도록 하죠!