본문 바로가기

전체 글

(217)
[연재] Spring Boot diary : 접근보안 (feat. Postman) 원문은 Spring Boot: study.diary 접근보안 (feat. Postman) 을 참고하세요. Spring Boot 를 이용해서 학습차원에서 개발해보고 있는 diary 프로그램이 프로그램으로서의 기본 골격은 갖추었다고 생각했어.그런데, A 라는 사용자가 로그인해서 B 사용자가 작성한 일기를 볼 수 있다거나, 편집할 수 있는 허점이 있어. 그리고 일단 사용자로 등록한 후에 비밀번호를 변경하는 작업 역시 불가능한 상태야.이런 보안상 허점이라거나 미진한 기능들을 한꺼번에 모아서 처리해볼께.일기 작성자 확인하기사용자를 한 명 더 추가해봤어. 추가된 사용자의 이메일주소는 klist02@naver.com 이야.이 사용자로 로그인해서 작성한 일기 데이터는 고유값 id 가 19 번 하나야.기억날지 모르지만 ..
[연재] Spring Boot diary : 로그인정보 조회 원문은 Spring Boot: study.diary : 로그인정보 조회를 참고하세요. diary 프로그램은 회원가입 기능이 완료되었다. 로그인 기능이 완료되었다.이제 로그인해서 일기를 쓸 때 로그인정보를 가져와서 해당 일기의 주인을 표시하는 기능을 구현해야 한다.로그인한 사용자의 정보는 아래 코드를 통해서 가져올 수가 있다.SecurityContextHolder.getContext().getAuthentication().getName()위 코드로 구해지는 값을 테스트하기 위해서 DiaryService 의 테스트 클래스를 작성해볼께.package com.woohahaapps.study.diary.service;import com.woohahaapps.study.diary.domain.Diary;import..
[연재] Spring Boot diary : study.diary 멤버 가입 원문은 Spring Boot: study.diary 멤버 가입을 참고하세요. 데이터베이스에 사용자 테이블 member 를 추가-- 사용자 테이블 추가CREATE TABLE public."member" ( email varchar(255) NOT NULL, "password" varchar(255) NOT NULL, "name" varchar(255) NOT NULL, CONSTRAINT member_pk PRIMARY KEY (email));COMMENT ON TABLE publ..
[연재] SpringBoot diary : 설정파일 분리 (IntelliJ, Jenkins) 원본은 spring boot : 설정파일 분리 (IntelliJ, Jenkins) 에서 보실 수 있습니다. spring boot 프로젝트의 설정 파일인 application.yml (application.properties 확장자가 기본이야) 은 resources 디렉토리에 존재하기 때문에 프로그램을 빌드하면 해당 파일이 포함되어 보안에 문제가 있어. Gradle 의 Tasks 항목 아래의 build/bootJar 를 선택해서 실행해보면 배포를 위한 빌드를 할 수 있어. 빌드된 파일은 프로젝트 폴더 아래의 build/libs 디렉토리에서 찾을 수가 있는데, study.diary-0.0.1-SNAPSHOT.jar 라고 되어 있네. 확장자는 .jar 이지만, 압축파일 포맷이기 때문에 확장자를 .zip 으로 ..
[연재] SpringBoot diary - jenkins 배포 - diary 서비스화 원본은 jenkins: diary 서비스화 에서 보실 수 있습니다. 프로젝트 가장 상위에 script 디렉토리를 만들고 그 아래에 4개의 파일을 생성한다. script 디렉토리를 src 디렉토리의 바깥에 둔 이유는 소스에 포함시키지 않기 위해서이다. diary.service 파일의 내용 [Unit] Description=Diary Web Program After=syslog.target network.target [Service] #Type=simple User=root Group=root ExecStart=/usr/bin/java -Xms128m -Xmx256m -jar /var/webapp/diary/study.diary.jar Restart=on-failure RestartSec=10 [Instal..
[연재] SpringBoot diary - 로그인해서 일기쓰기 원문은 Spring Boot : study.diary 로그인해서 일기쓰기 에서 확인할 수 있습니다. diary 프로젝트에 폼 로그인 기능을 추가해서 로그인했을 때 Home 화면에서 일기 목록이 잘 보여지는것 까지는 성공을 했다. 그런데 일기쓰기 화면에서 일기를 작성하고 저장을 누르면 에러 페이지가 표시되었다. 도대체 무슨 일일까를 고민하다가, 일기쓰기 폼이 write.html 인데, 여기에서 “저장” 버튼을 누르면 처리되는 URL 에서 로그인하여 인증된 데이터가 사용되지 않은 것이 아닐까 생각되었다. write.html 파일에서 태그의 action 속성값을 아래와 같이 기록하고 있었다. 이것을 thymeleaf 문법에 따라 아래와 같이 수정했더니 잘 되었다. 앞의 일반적인 html 태그 방식으로 작성했을..
[연재] SpringBoot diary - Spring Security 폼 로그인 원문은 spring boot: study.diary : Spring Security 폼 로그인 에서 확인할 수 있습니다. diary 프로그램에 로그인 기능이 없어서 아무나 접근해서 읽기를 볼 수도 있고, 쓸 수도 있는 상황이야. spring boot 의 Spring Security 기능을 이용해서 폼 로그인 기능을 붙여볼께. https://start.spring.io 에서 Add Dependencies 로 security 를 검색하여 Spring Security 의존성을 추가해. Explorer 버튼으로 수정된 build.gradle 파일의 내용에서 spring security 의존성 부분을 복사해서 프로젝트의 build.gradle 에 붙여넣기 한다. build.gradle 변경된 것을 적용한다. 이 ..
jenkins 를 이용한 프로젝트 배포 원문은 jenkins 를 이용한 프로젝트 배포 에서 확인할 수 있습니다. 프로젝트 배포에 jenkins 를 이용한다는 개념을 설명한 도식이야. 가장 중요한 점은 프로젝트 소스가 gitlab 에서 관리되고 있어야 한다는 점이지. 그래야만 jenkins 가 소스를 ① 내려받아서 ② 빌드하고 ③ 배포할 수가 있어. 이 개념에서 가장 중요한 행위자는 jenkins 야. jenkins 에서 gitlab 에 접속하고, webserver 에 접속할 수 있어야 해. 그러기 위해서는 jenkins 에 gitlab 계정과 webserver 계정이 관리되어야 한다는 점이지. gitlab 계정 생성 gitlab 에 jenkins 가 접속할 수 있는 계정을 하나 만들어볼께. 계정을 만들기 위해서는 관리자 권한으로 로그인해야겠지..