codinglog
코딩일기
-
Spring Security로 Security 서비스 구축하기 4
계층구조 Role 우리가 정의한 Role은 부모 Role을 가지질 수 있는 계층적인 구조이다. 따라서 부모가 가지고 있는 Permission 이 그대로 상속되고, 권한 체크할 때 부모가 가진 Permission도 모두 검증해봐야 한다. 그러기 전에 먼저, JPA의 JpaRepository interface가 계층적인 구조에서 잘 동작하는지 검증해보자. RoleRepositoryTest.java package cothe.security.core.repositories; @RunWith(SpringRunner.class) @SpringBootTest public class RoleRepositoryTest { @Autowired...
-
Cloud Native Java 따라하기 5(설정서버에 보안적용)
git 저장소에 HTTP 기본 인증과 같은 보안 처리가 되어 있으면 서버에 인증 정보가 있어야 접근이 가능하다. spring.cloud.config.server.git.username spring.cloud.config.server.git.passwaord 마찬가지로 서버 자체에 보안설정이 되어 있으면 클라이언트에 인증 정보가 있어야 접근이 가능하다. 서버 보안을 설정하는 가장 간단한 방법은 설정 서버에 스프링 시큐리티를 의존 관계로 추가하고, 클라이언트에서 인증 정보와 함께 요청하는 것이다. spring.security.user.name...
-
Cloud Native Java 따라하기 4(스프링 클라우드 설정 클라이언트)
스프링 클라우드 설정 클라이언트 스프링 클라우드 기반 서비스는 실행할 때 src/main/resources/bootstrap.properties(또는 yml) 파일을 찾는다. 애플리케이션 이름은 spring.application.name 속성에 지정한다. bootstrap 파일은 application.properties 파일보다 먼저 로딩된다. 클라우드 설정 서버는 클라이언트의 spring.application.name 에 설정된 이름으로 설정파일을 찾는다. 여기서는 config-client 으로 설정했다. 설정서버에 저장된 application.properties 파일은 모든 설정 클라이언트에서 참조할 수 있다. 클라이언트...
-
Cloud Native Java 따라하기 3(스프링 클라우드 설정 서버)
스프링 클라우드 설정 서버로 중앙집중형 설정 사용하기 설정정보를 외부 파일로 분리해서 사용하는 방법을 앞선 포스트에서 했었는데 몇 가지 남은 문제점들이 있다. 애플리케이션의 설정 정보가 변경되면 애플리케이션을 재시작 해야한다. 어떤 설정 정보가 변경됐는지 확인할 방법이 없고, 이전 상태로 원복할 수 없다. 설정이 분산되어 어디에서 어떤 설정 정보를 변경해야 하는지 파악하기 어렵다....
-
Spring Security로 Security 서비스 구축하기 3
ViewVoter 보완 앞선 포스트에서는 요청한 View가 사용자가 가진 View Type SecuredObject 중에 존재하는지 찾아봐서 접근허가 여부를 결정짓는 ViewVoter를 구현하였다. 이 구현체에 NPE을 대비한 코드를 조금 더 추가해서 완성도를 높혔다. package cothe.security.access.vote; public class ViewVoter implements AccessDecisionVoter<Object> { private RoleProvider roleProvider; public ViewVoter(RoleProvider roleProvider) { this.roleProvider = roleProvider; } @Override public...