카테캠 프로젝트에서 카카오 로그인을 구현하던 중, 액세스 토큰과 리프레시 토큰이 있어 이 개념을 정리하고 가보려고 한다.
액세스 토큰은 사용자에 대한 정보를 담고 있어서 서비스에 접근(Access)할 수 있는 토큰이다.
새로운 액세스 토큰을 생성하는 용도의 토큰
안드로이드에서 토큰을 관리할 때 SharedPreferences, KeyStore, DataStore 3가지가 있는데 SharedPreferences 을 사용하는 방법은 암호화가 되어 있지않아 요즘 토큰을 저장하는데 잘 사용하지 않는다고 한다.
그렇지만, 연습 중이기 때문에 우리 프로젝트에서는 SharedPreferences을 사용하였다.
SharedPreferences
KeyStore
DataStore
SharedPreference 를 사용하면 다음처럼 토큰을 저장할 수 있다auth_prefs 라는 sharePref 를 가져와서 String 을 넣는다! ACCESS_TOKEN 이라는 키에는 액세스토큰 넣고, REFRESH_TOKEN 라는 키에는 리프레시 토큰을 넣는다.
fun saveTokens(accessToken: String, refreshToken: String) {
val sharedPref = context.getSharedPreferences("auth_prefs", Context.MODE_PRIVATE)
with(sharedPref.edit()) {
putString("ACCESS_TOKEN", accessToken)
putString("REFRESH_TOKEN", refreshToken)
apply()
}
}
그리고, 가져올 땐 이런식으로 가져오는 함수를 만들 수 있을 것이다. auth_prefs SharedPref 를 가져온 후 ACCESS_TOKEN 이라는 키에 있는 String 을 가져와서 리턴하도록 하거나 REFRESH_TOKEN 라는 키에 있는 String 을 가져와서 리턴하게 할 수 있다.
fun getAccessToken(): String? {
val sharedPref = context.getSharedPreferences("auth_prefs", Context.MODE_PRIVATE)
return sharedPref.getString("ACCESS_TOKEN", null)
}
fun getRefreshToken(): String? {
val sharedPref = context.getSharedPreferences("auth_prefs", Context.MODE_PRIVATE)
return sharedPref.getString("REFRESH_TOKEN", null)
}
[Android & Kotlin] SharedPreferences + JWT Token을 이용해 서버와 통신, 로그인 구현하기 (Feat. Bearer JWT, Bearer 토큰)