Team-Crackdown / TAVE-Android

TAVE Client Application
2 stars 1 forks source link

[기능 요청] Spring Security 적용에 따라 변경된 API 적용 #13

Open KOOJAESUNG opened 1 year ago

KOOJAESUNG commented 1 year ago

요청한 기능이 어떤 문제 및 어떤 향상을 가져다 주는지 기술해 주세요. 백엔드 Spring Security 가 적용되었습니다. 이제 인증과 인가를 적용할 수 있습니다.

당신이 고려한 대안을 설명해주세요 안드로이드측에서도 변경된 API를 적용해야합니다. !!!! 주소와 parameter가 변경된 API가 매우 많습니다!!!! 꼭 확인 부탁드립니다!!!

추가 내용

로그인 url : POST https://domain.kro.kr:8080/login //domain은 원래 주소로 변경해야합니다. https://와 :8080 붙여야합니다.

로그인 DTO :

{ “username”:”value”, //로그인 아이디 “password”:”value” //비밀번호 }

로그인 아이디 전략 : 현재 MemberEntity와 AdminEntity가 별도로 존재하기 때문에 로그인 아이디를 통해 현재 로그인하는 사용자가 Admin인지 Member인지 확인할 수 있도록 구현했습니다. 따라서 Admin의 경우 로그인 아이디 맨 앞에 “admin_”을 붙여주어야 합니다. 로그인 아이디와 이메일은 별개이기 때문에 admin_string@gmail.com 과 같이 이메일 주소 형식으로 해도 무방합니다.

ex) Role이 MEMBER인 경우 로그인 아이디: stringstring Role이 ADMIN인 경우 로그인 아이디: admin_stringstring

현재 dummy data는 다음과 같습니다.

MEMBER :

{ “username”:”member1”, //로그인 아이디 “password”:”member1” //비밀번호 }

부터

{ “username”:”member5”, //로그인 아이디 “password”:”member5” //비밀번호 }

ADMIN :

{ “username”:”admin_admin5”, //로그인 아이디 “password”:”admin_admin5” //비밀번호 }

부터

{ “username”:”admin_admin5”, //로그인 아이디 “password”:”admin_admin5” //비밀번호 }

JWT Token 발급: 로그인 성공시 response header에 key: Authorization / value: XXX.XXX.XXX(JWT Token) 이 포함됩니다. 로그인 이후 서버에 request 요청시 http header에 발급받은 jwt token을 포함해야 합니다. 이 때, value의 prefix로 “Bearer “가 붙어야합니다. Bearer 뒤에 공백은 꼭 포함되어야 합니다. 현재 만료시간은 10일로 잡아두었으며, 추후 논의 후 변경될 수 있습니다.

ex) 발급된 token: key: Authorization value: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbl9hZG1pbjIiLCJpZCI6MiwiZXhwIjoxNjg5MjIxMTU0LCJ1c2VybmFtZSI6ImFkbWluX2FkbWluMiJ9.T5ckfslj0WbNiUJHdxRmIV0-Z4ID7CnXG_F1Yet70kvbcbP6Gt-l9923SDo422vcC7Dw-JmNbopoXWMsKUrxLw

Request header에 포함해야 하는 token: key: Authorization value: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbl9hZG1pbjIiLCJpZCI6MiwiZXhwIjoxNjg5MjIxMTU0LCJ1c2VybmFtZSI6ImFkbWluX2FkbWluMiJ9.T5ckfslj0WbNiUJHdxRmIV0-Z4ID7CnXG_F1Yet70kvbcbP6Gt-l9923SDo422vcC7Dw-JmNbopoXWMsKUrxLw

Test시 사용법:

login은 Postman을 사용해 접근해야 합니다.

스크린샷 2023-07-03 오후 1 26 42

위와 같이 JSON형식으로 request body에 로그인 DTO를 담아 요청하면,

스크린샷 2023-07-03 오후 1 27 34

위와 같이 token이 발급되는 것을 확인할 수 있습니다.

이 token을 swagger에서 사용하기 위해서는 token값을 복사해

스크린샷 2023-07-03 오후 1 22 37

각 API 옆에 있는 자물쇠 혹은 초록색 Authorize 버튼을 클릭해 token을 입력하면 됩니다.

API는 사용하기 편리하도록 1.모든 API(1.ALL), 2.ADMIN만 접근 가능한 API(2.ADMIN), 3. ADMIN, MEMBER(3.MEMBER)가 접근할 수 있는 API 로 그룹화하였으며, swagger 페이지 오른쪽 상단의 Select a definition을 통해 변경 가능합니다. 인가가 필요하지 않은 요청은 1.ALL 에 있음에 유의하시기 바랍니다.

KanuKim97 commented 1 year ago

@KOOJAESUNG 확인했습니다! 작업 고생하셨습니다!