일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- Git
- static
- GitHub
- #내일배움캠프
- 성장기록
- 감사기록
- 스레드
- 스파르타내일배움캠프
- 메서드
- Java
- Diary 해우소
- #스파르타내일배움캠프
- Token
- 객체지향 언어
- JVM
- 생성자
- KPT
- 스파르타내일배움캠프TIL
- 포맷은 최후의 보루
- diary
- 회고록
- 인스턴스
- Github_token
- TiL_1st_0419
- 내일배움캠프
- Java의 이점
- 변수의 다양성
- #스파르타내일배움캠프TIL
- 클래스
- 해우소
- Today
- Total
몬그로이
TIL_038 본문
이전 팀프로젝트 담당 튜터님께서 주신 링크
IntelliJ 한 줄 자동완성 기능이 있는 사람은 끄는게 좋겠다는 제안이 있어 혹시 몰라 확인해 보았는데
윈도우버전에는 그 기능이 아예 없는 것 같다
코드카타를 너무 오랜만에 해서 그런지 살짝 헷갈린다
아직 완전 숙지된 것이 아니라서 그런듯..
21. 하샤드 수를 찾는 로직을 짰는데, 하면서 if문의 retrun 을 굳이 적지 않아도 되는 구조를 만들 수 있다는 걸 알았다
https://mongroy.tistory.com/99
Kakao 소셜 로그인에 대해 학습하는데 인증과 인가가 섞여 있어서 이해하기 힘들었다
이전에는 별개로 생각했는데, 이번에는 그게 아닌지라 혼동이 왔기 때문이다
또한 주의할 점이, application 과 유저를 별개로 보는 게 아니라
application 을 이용하려는 user 를 기준으로 생각해야 한다는 것이다
따라서 시작은 " user 의 로그인시도" 이다
과정을 정리해 보면,
1. 사용자가 로그인을 시도하면 application 은 Kakao 에 "너네 서비스 사용할게" 라는 인증[인가] 를 받는다
-> 그러면 Kakao 측에서 인증[인가] 되었다는 code를 전해준다
2. 받은 인증/인가 코드로 "우리 유저 로그인 시키기 위한 API 를 사용할 수 있는 AccessToken"을 요청한다
-> Kakao 측에서 인증/인가 코드를 확인하여 AccessToken 을 발행해 준다
**getToken 메서드 : Kakao 가 token 발급을 위해 정해둔 Uri + Kakao에서 요구하는 Http 형태(Header 와 Body) 설정 + properties 에 설정해 두었던 uri (Kakao 에 AccessToken 보내는 주소(callback) + 인가코드
3. 받은 토큰으로 유저를 로그인시키기 위한 API를 호출한다
그 때 AccessToken 과 함께 User 의 메일주소와 비밀번호를 전달한다
-> Kakao 에서 유저 정보와 Application 의 AccessToken 을 받으면
AccessToken의 (유효성)확인, 존재하는 유저인지 확인 후
Application 에게 유저에 대한 정보를 넘겨준다
**이 때 시간이 너무 걸릴 경우, 무한대기를 막기위 강제종료 설정을 해두면 좋다(RestTemplateConfig)
4. 유저정보를 확인 후, DB에 등록되지 않은 유저임이 확인되면 회원가입을 진행한다
3번에서 받아온 user 정보를 바탕으로 DB에 등록한다
5. Application 을 사용할 수 있는 토큰을 발행하여 유저에게 건네준다
+ 내 생각인데, 지금 배우는 내용은 뭔가 생략된 과정들이 더 있는 것 같다
예를 들면 4번의 경우, 유저가 가입하겠다는 동의를 얻은 다음 진행되어야 하는 것이 맞을 것이다
개인과제를 위해서 전에 만들었던 내 todo 관리 app 을 실행해보니 에러가 발생했다
그걸 고치려면 security 로그인에 대한 이해가 필요하기 때문에 예전 강의, 자료를 다시 봐야만 하는 상태이다
일반 로그인, Security 로그인, JWT 로그인, Security JWT 로그인 의 차이가 아직도 헷갈린다
사실 정리가 됐다고 생각했었는데, 팀 프로젝트 기간동안 다 뒤죽박죽 된 듯 하다
로그인시 차이를 알아보기위해 숙련주차 강의를 다시 들었다
JWT 란 무엇일까? 라는 강의에서 예전엔 보이지 않던 부분이 또 보였다
지금까지 그 강의만 6번은 본 것 같은데 5번째까지는 보이지 않던 부분이 보인 것
더 와닿았다는 말이 더 맞을 것이다
또한
Servlet 이 자동으로 생성된다는 것, 그걸 "가져와서" 사용한다는 것
도 잊고 있었다는 걸 깨달았다
그 외 새롭게 보인 것들
passwordEncoder.matches(password, user.getPassword()) 에는 password 를 암호화 처리 기능이 있어
Encoder 인 Bcrypt 없어도 됨
boolean 타입의 필드값을 가져올 때는 isABC 처럼 is~ 로 사용한다
어떤 메서드를 수행할 때 에러처리하는 방법 : try ~ catch
Security 는 기본적으로 Filter 기능을 사용하며, Session 방식으로 동작함
https://mongroy.tistory.com/101