Какие знаешь способы выполнения авторизованного сетевого запроса

«Какие знаешь способы выполнения авторизованного сетевого запроса» — вопрос из категории Сети, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для авторизованных запросов в Android чаще всего используются:

  1. Basic Auth – передача логина/пароля в заголовке:
val credentials = "${login}:${password}".toByteArray()
    .let { Base64.encodeToString(it, Base64.NO_WRAP) }
val authHeader = "Basic $credentials"
request.addHeader("Authorization", authHeader)
  1. OAuth токены (Bearer token):
request.addHeader("Authorization", "Bearer $accessToken")
  1. Cookie-based auth – автоматическая обработка через CookieManager:
CookieManager.getInstance().setCookie(url, "session=$sessionId")
  1. Retrofit с Interceptor для автоматической авторизации:
val client = OkHttpClient.Builder()
    .addInterceptor { chain ->
        val request = chain.request().newBuilder()
            .addHeader("Authorization", "Bearer $token")
            .build()
        chain.proceed(request)
    }
    .build()

Для безопасности рекомендуется использовать HTTPS, хранить токены в EncryptedSharedPreferences и обновлять их по истечении срока.