Какой самый лучший / самый безопасный способ хранения учетных данных для последующих вызовов API с использованием Basi c Auth, который я не могу контролировать?
К счастью, мы, очевидно, только используем basi c auth для нашего этапа бета-тестирования, но я прожил достаточно долго, чтобы знать, что иногда сведения о безопасности теряются в продуктах, а пользователи бета-версий повторно используют пароли, поэтому хотим сделайте его максимально безопасным на всякий случай, несмотря на то, что это временная вещь.
В настоящее время я использую хранилище сеансов для хранения учетных данных в форме base64. Это действительно лучшее, что можно сделать?
Обратите внимание, что для того, чтобы избавиться от уродливого запроса на вход в браузер, заголовок WWW-Authenticate
был удален из ответа сервера. Это означает, что браузер больше не «магически» кэширует информацию об аутентификации для последующих вызовов, поэтому мне нужно как-то сделать это вручную.
Это то, что я сейчас использую. Хотя это технически работает, есть ли способы уменьшить риски безопасности?
const baseUrl = getServerBaseUrl()
const authenticationService = {
authenticate: (username, password) => {
const token = btoa(`${username}:${password}`)
sessionStorage.setItem('credentials', token)
return axios.get(baseUrl, {
headers: {
Authorization: `Basic ${token}`,
},
})
},
checkAuthentication: () => {
return axios.get(baseUrl, {
headers: {
Authorization: `Basic ${sessionStorage.getItem('credentials')}`,
},
})
},
}