• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

Spring OAuth2 인증서버 TokenStore 관련 문의

19.02.02 17:23 작성 조회수 831

0

1,인증서버 설정시 TokenStore를 In Memory 방식을 사용하는것은 권장되지 않는다고 하는데 이유가

1)인증서버와 리소스서버를 분리할 경우 인증 토큰이 공유 되지 않는 이슈

2)서버 재시작시 인증토큰이 모두 초기회 되여 클라이언트가 다시 인증을 받아야 하는 이슈

이외에 다른 이슈가 있는지 궁금합니다.

서비스 규모가 크지 않아서 인증서버와 리소스서버를 분리하지 않고 서비스 재시작시 토큰은 만료 시키고 재인증을 요구하는 해야 하는 상황이면 JDBC 로 DB에 저장시 OAuth2 인증을 관리 하기 위하여 사용하는 테이블이 6개정도 생성해야 하는것으로 기억하는데 오히려 인메모리가 유리하지 않을까요?

그리고 인중토큰은 Rdsis에서 관리하는 방법은 없는지요?

2.TokenStore를 JWT Tokenstore로 사용하려고 하는데 Spring 공식 문서는 OAuth2 에 관련된 레퍼런스가 많지 않고 OAuth2 라이브러리도 여러 프로젝트에서 별도로 관리되고 있어서 여러 싸이트의 문서를 보았는데 Spring Secury 에 대한 이야기 부족해서인지 연동이 잘되지 않고 있습니다.

Spring Security 강좌를 진행하실 계획이 있으신지요? 있다면 언제쯤 등록 되나요?

답변 3

·

답변을 작성해보세요.

0

신석균님의 프로필

신석균

질문자

2019.02.28

Token Store를 JWT 설정시 stackoverflow 오류가 발생하는 문제는 Spring Security 버전 문제가 아니였습니다.
개발중인 프로젝트를 SpringBoot 2.0.x 도 다운그레이드 해도 동일한 오류가 발생하여 JPA를 사용하고 있어서 OAuth 관련 테이블을 엔터티에서 사용한 연관관계 설정에 문제가 있어 발생한 문제 였습니다.
Entity Class 를 삭제하고 OAuth 관련테이블을 Script 로 수동 생성후 해결되었습니다.
혼돈을 주어 죄송합니다.
그리고 JWT를 TokenStore로 사용하면 디버깅 해보니 oauth_client_details 만 생성하면 됩니다.
아마도 JWT Payload 에서 권한및 토큰의 만료기간등 가지고 있어서...

0

신석균님의 프로필

신석균

질문자

2019.02.07

감사합니다.
1.Token Store를 JWT 로 설정하면 토큰에 만료시간, 권한등이 포함되어 있어 OAUTH Client 정보만 DB나 메모리에 저장하면되기 떄문에 JWT TokenStore를 사용하려고 합니다..
2.알려주신 https://www.baeldung.com/spring-security-oauth-jwt는 이미 봤던 문서인데 SpringBoot 2.1.1에서 토큰 발급시 stackoverflow 오류가 발생합니다.(로그보면 재귀 호출이 발생)
오늘 아침에 문서에는 SpringBoot가 2.0.2 버전을 사용하고 있어 2.0.2로 변경하면 stackoverflow 오류는 발생하지 않고 다른 문서도 이상없이 동작하는 걸로 봐서는 SpringBoot 2.0.x는 Spring Security 5.0.x을 사용하고 2.1.x는 Spring Security 5.1.x를 사용하고 있어 Spring Security 연동 방식이 변경ㄷ힌거 같아서 Spring Security 5.1 레퍼런스를 보고 있습니다.
https://tv.naver.com/v/4012597 를 보니 피보탈에서 여러 프로젝트에 흩어져 있는 OAuth2 API를 통합하면서 많은 변화가 있는거 같습니다.

0

운영 서버라면 메모리 스토어는 권장드리고 싶지 않습니다. 말씀하신대로 두가지 이유도 그렇고 테이블 6개 생성하고 서버와 토큰 스토어를 독립적으로 운영할 수 있다면 JDBC Store를 사용하는게 큰 장점이지 않을까요?

Redis를 Tokenstore로 사용하는 방법은 저도 해보진 않았지만 검색해보니까 누군가 해본듯 하네요. 한번 시도해 보시면 좋을 거 같습니다.

https://stackoverflow.com/questions/42449017/how-to-use-redis-to-persist-token-using-spring-security-oauth2

TokenStore만 JWT 토큰 스토어로 사용하는 방법은 아래 링크에서 확인해 보세요.

https://www.baeldung.com/spring-security-oauth-jwt

시큐리티 강좌는 구상 중이긴 한데 아직 구체적인 일정을 잡진 않았습니다. 좀 더 시간이 필요합니다.

감사합니다.