https://sodock00.tistory.com/15
[UMC] 8주차 - 사용자 인증 방식(oAuth/JWT)
[SignUpActivity] 회원가입 구현하기 [SignUpActivity] DB 데이터 User에 Add [LoginActivity] 화면만들기 [LoginActivity] 로그인 구현하기 [LoginActivity] jwt(userIdx) sharedPreference에 'id' (primary key..
sodock00.tistory.com
JWT(Json Web Token)에 대한 전반적인 내용은 위에 정리해두었다.
오늘은 실전편, 실제 안드로이드에서 JWT를 사용하기 이다.
다시 한번 JWT 사용과정을 살펴보자!!
* 실제 적용한 부분으로 조금씩 내용 추가할 예정
JWT 사용과정
1) 사용자가 id와 pw를 입력해서 로그인 시도
2) 서버에서 요청을 확인하고 secret key를 통해 Access token 발급
3) JWT 토큰을 클라이언트에 전달 (=저장소에 저장)
4) 클라이언트에서 API를 요청할 때, 클라이언트가 헤더 부분에 Access token을 담아서 서버에 요청
5) 서버는 JWT signature을 확인하고 Payload로부터 사용자 정보를 확인해 데이터를 반환
JWT 구조

Shared Preference 사용방법
* Shared Preference?
: 간단한 데이터들을 DB에 저장하기 좀 그럴 때, Shared Preference를 통해 데이터를 관리할 수 있다.
: 앱의 어디서든 전역적으로 사용하기 때문에 싱글톤 패턴을 사용하는 것이 좋다.
1. preference class 생성 후 preference 인스턴스를 생성한다.
2. get set 메서드를 통해 토큰을 가져오는 식으로 관리한다.
3. 가장 먼저 실행되기 위해 Application을 상속받은 class에서 onCreate 전에 초기화한다.
(이때 효율적인 자원관리를 위해 싱글톤 패턴을 사용한다)
* 싱글톤 패턴?
: 해당 클래스에 한 개의 인스턴스만을 갖게 하고 전역 범위에서 이 인스턴스에 접근할 수 있도록 사용하는 패턴
: 한 개의 객체를 여러 개의 클래스가 공유해서 쓰는 방법 구현할 때 사용 > 메모리 낭비 방지 가능
: class 생성시 kindTab에 singleton을 선택해서 사용한다.
4. manifast에서 application을 등록한다.
5. Shared Preference에서 토큰을 저장하고 가져올 수 있다.
OkHttp3 Interceptor 사용방법
인증정보를 암호화하여 url 형식으로 전달해주는 토큰인 JWT
이 토큰이라는 것은 만료시간이 있어서 만료된 토큰은 더 이상 사용하지 못한다.
( 만료된 토큰으로 서버와 통신하면 401 error가 뜬다)
따라서 만료된 토큰은 새로은 access token을 갱신받아 사용해야 한다.
이때 안드로이드에서 토큰 갱신하는 것을 okhttp3을 통해 구현할 수 있다.
1. Interceptor 생성
interceptor을 상속받아서 intercept 메서드를 구현한다
chain에 "Authorization"이라는 key와 prefs의 값을 가진 헤더를 붗이고 리턴한다.
(헤더에 Authorization(인가)을 추가하면 인증된 사용자만 정보를 취득할 수 있다 > retrofit2로도 구현 가능)
2. Client 생성
1번에서 만든 interceptor을 바탕으로 okHttpClient를 생성한다.
3. Client와 retrofit의 인스턴스를 연결
retrofit의 인스턴스를 생성할 때 client를 연결한다.
참고한 블로그
https://leveloper.tistory.com/133
[Android] SharedPreferences 간단하게 사용하기 (Kotlin)
안드로이드 앱을 개발하면서 데이터를 저장하는 방법으로는 여러 가지가 있는데, 오늘은 그중 하나인 SharedPreferences를 사용하는 방법을 알아볼 것이다. SharedPreferences란? SharedPreferences는 간단
leveloper.tistory.com
안드로이드에서 JWT 사용하기
안드로이드에서 JWT를 사용하는 방법을 알아봅시다
velog.io
https://lktprogrammer.tistory.com/187
[Android Studio] 안드로이드 스튜디오 - 싱글톤 패턴 (SingleTon Pattenr) 클래스 자동 생성
디자인 패턴(Design Pattern) 중 싱글톤(Singleton) 패턴은 특정 클래스에 대한 인스턴스를 단 한 번만 Static 메모리 영역에 할당하고 해당 클래스에 대한 생성자를 여러 번 호출하더라도 최초에 생성된
lktprogrammer.tistory.com
http://throughkim.kr/2017/03/14/Jwt/
JWT(Json Web Token)을 이용한 모바일 인증
토큰 방식의 모바일 유저 인증에 대해 잘 정리되어 있는 글이 있어 번역하며 정리해본다. 출처: The Ultimate Guide to Mobile API Security 모바일 API 보안의 문제점 모바일 API보안에 OAuth2 도입하기 액세스
throughkim.kr
https://akaisun.tistory.com/73
okhttp3를 이용하여 재인증하기(refresh token)
지난시간에는 retrofit2와 okhttp3의 해더를 이용해 인증하는 방법에 대해서 알아보았습니다. https://akaisun.tistory.com/72 retrofit2를 사용하여 Authorization 인증하기 앱에서 서버와 통신할 때 사용자의 인..
akaisun.tistory.com
'안드로이드' 카테고리의 다른 글
[Android/안드로이드] 네이버 로그인 서비스 구현하기 (0) | 2022.03.03 |
---|---|
[안드로이드/Retrofit2] No type arguments expected for class Call (0) | 2022.02.06 |
[Android] Navigation(네비게이션) 사용법 (0) | 2022.01.31 |
[UMC] 8주차 - 사용자 인증 방식(oAuth/Cookie/JWT) (0) | 2022.01.05 |
[UMC] 7주차 - RoomDB (0) | 2022.01.05 |