- [SignUpActivity] 회원가입 구현하기
- [SignUpActivity] DB 데이터 User에 Add
- [LoginActivity] 화면만들기
- [LoginActivity] 로그인 구현하기
- [LoginActivity] jwt(userIdx) sharedPreference에 'id' (primary key) 저장
- [AlbumFragment] 하트 누르면 User 구분하여 Like Table 업데이트
- [보관함 프래그먼트] 리사이클러뷰 및 좋아요 - DB의 클릭한 Album의 isLike 업데이트
사용자 인증 방식
01. oAuth
개념
: 다양한 플랫폼 환경에서 권한 부여를 위한 산업 표준 프로토콜
: 우리가 흔히 보는 구글로 로그인하기, 페이스북로그인 하기 등
장점
: 로그인 과정에서 요구되는 세션관리 및 개발 비용과 운영 비용을 줄일 수 있다.
: 개인정보 관리 책임을 서드파티 애플리케이션 (구글, 카카오 등)에게 위임할 수 있다.
요소
(1) Client (Wep/App) :
OAuth 2.0을 사용해 서드파티 로그인 기능을 구현할 자사 또는 개 인 애플리케이션 서버
(2) Recource Owner (사용자) :
Recource(개인정보) 를 가지고 있으며 서드파티 앱에 이미 개인정보가 저장이 되어 있는 사람
(3) Resource Server (제공자) :
google, facebook, kakao, naver 등 Client가 oauth 사용 요청을 하고 > Token을 이 서버로 넘겨서 개인정보를 응답 받을 수 있다.
(4) Authorization Server :
권한을 부여해주는 서버 (인증할 때 사용하는 서버) 사용자는 이 서버로 ID, PW를 넘겨 Authorization Code를 발급 받을 수 있다. Client는 이 서버로 Authorization Code을 넘겨 Token을 받급 받을 수 있다.
진행 과정
(1) client가 resource server에 oauth 사용 요청
(2) resource server가 사용자 정보 제공
(3) resource owner가 client에 접속 > Oauth 로그인 클릭 > client에서 어떤 정보가 필요하며 이를 승인 할 것인지 질문 (4) 승인 버튼 클릭 > client owner는 Authorization server로 접속 > 해당 server에 로 그인을 하고 정보를 제공하는 것을 허락하는 지 여부 확인
(5) 승인이 완료되면 server는 client에게 Authorization Code 제공 > client는 code값 과 id, secret값을 다시 server로 전송 ( client가 맞는 지 확인)
(6) server는 access token을 client에게 발급
02. Cookie
개념
: 하이퍼 텍스트의 기록서의 일종으로, 사용자가 어떠한 웹사이트를 방문할 때, 그 사이트가 사용하고 있는 서버를 통해 인터넷 사용자의 컴퓨터에 설치되는 작은 기록 정보 파일을 말함.
: 기록 정보 파일에 있는 정보는 사이트 방문 시마다 읽히고 수시로 새로운 정보로 바뀜
단점
: 보안이 허술한 웹사이트에 들어가면 사용자의 개인정보에 관련된 쿠키가 쌓이고, 클라이언트와 서버과 쿠키를 주고받는 과정에서 악성 사용자에게 탈취될 수 있다.
예시
: id와 pw를 저장하겠습니까?
: 오늘 하루/일주일 동안 팝업창을 보지 않음
03. JWT
개념
: json web token의 약어로 인증 방식 중 하나
: 서버와 클라이언트 간 정보를 주고 받을 때 http 리퀘스트 헤더에 JSON 토큰을 넣은 후,
서버는 별도의 인증 과정 없이 헤더에 포함되어 있는 JWT 정보를 통해 인증한다.
구성
: JWT는 세 파트 (헤더, 페이로드, 서명)으로 구성된다.
과정
1) 사용자가 id와 pw를 입력하여 로그인을 시도한다.
2) 서버에서 요청을 확인하고 secret key를 통해 Access token을 발급한다.
3) JWT 토큰을 클라이언트에 전달한다.
4) 클라이언트에서 API를 요청할 때, 클라이언트가 헤더 부분에 Access token을 담아서 보낸다.
5) 서버는 JWT signature을 확인하고 Payload로부터 사용자 정보를 확인해 데이터를 반환한다.
6) 클라이언트의 로그인 정보를 서버 메모리에 저장하지 않기 때문에 토큰 기반 인증 메커니즘을 제공한다.
장점
: JWT에 필요한 모든 정보를 토큰에 포함하기 때문에 데이터베이스와 같은 서버와의 커뮤니케이션 오버 헤드를 최소화 할 수 있다.
: 쿠키를 사용하지 않기 때문에 두 도메인에서 API를 제공하더라도 문제가 발생하지 않는다.
: JSON 포멧으로 통신을 하기 때문에 수많은 프로그래밍 언어에서 지원된다.
: HTTP 헤더에 담아서 전달하기에 서버와 클라이언트 간의 전달이 쉽다.
'안드로이드' 카테고리의 다른 글
[안드로이드/Retrofit2] No type arguments expected for class Call (0) | 2022.02.06 |
---|---|
[Android] Navigation(네비게이션) 사용법 (0) | 2022.01.31 |
[UMC] 7주차 - RoomDB (0) | 2022.01.05 |
[UMC] 6주차 - ListView/ RecyclerView / 데이터 렌더링 (0) | 2022.01.05 |
[UMC] 5주차 - 액티비티 생명주기 / MediaPlayer / GSON,JSON (0) | 2022.01.05 |