Ошибка установки Ubuntu SDK в Ubuntu 13.10

Обновление:

Я добавил эту ссылку к своему другому ответу , как использовать аутентификацию JWT для ASP.NET Web API здесь для всех, кто интересуется JWT.


Нам удалось применить аутентификацию HMAC для защиты веб-API, и все заработало нормально. HMAC-аутентификация использует секретный ключ для каждого потребителя, который, как пользователь, так и сервер, знают, что hmac хэширует сообщение, следует использовать HMAC256. В большинстве случаев хешированный пароль потребителя используется в качестве секретного ключа.

Сообщение обычно строится из данных в запросе HTTP или даже из настроенных данных, которые добавляются в заголовок HTTP, сообщение может включать в себя:

  1. Метка времени: время отправки запроса (UTC или GMT)
  2. HTTP-глагол: GET, POST, PUT, DELETE.
  3. отправлять данные и строку запроса,
  4. URL

Под капотом аутентификация HMAC будет:

Потребитель отправляет HTTP-запрос на веб-сервер после того, как построение подписи (вывод хеша hmac), шаблон HTTP-запроса:

User-Agent: {agent}   
Host: {host}   
Timestamp: {timestamp}
Authentication: {username}:{signature}

Пример для запроса GET:

GET /webapi.hmac/api/values

User-Agent: Fiddler    
Host: localhost    
Timestamp: Thursday, August 02, 2012 3:30:32 PM 
Authentication: cuongle:LohrhqqoDy6PhLrHAXi7dUVACyJZilQtlDzNbLqzXlw=

Сообщение хешу для получения подписи:

GET\n
Thursday, August 02, 2012 3:30:32 PM\n
/webapi.hmac/api/values\n

Пример запроса POST со строкой запроса (подпись ниже неверна, просто пример)

POST /webapi.hmac/api/values?key2=value2

User-Agent: Fiddler    
Host: localhost    
Content-Type: application/x-www-form-urlencoded
Timestamp: Thursday, August 02, 2012 3:30:32 PM 
Authentication: cuongle:LohrhqqoDy6PhLrHAXi7dUVACyJZilQtlDzNbLqzXlw=

key1=value1&key3=value3

Сообщение в хеш для получения подписи

GET\n
Thursday, August 02, 2012 3:30:32 PM\n
/webapi.hmac/api/values\n
key1=value1&key2=value2&key3=value3

Пожалуйста обратите внимание, что данные формы и строка запроса должны располагаться по порядку, поэтому код на сервере получает строку запроса и данные формы для построения правильного сообщения.

Когда на сервер поступает HTTP-запрос, для анализа запроса реализуется фильтр действий аутентификации: HTTP-глагол, временная метка, uri, данные формы и строка запроса, а затем на их основе создается подпись (используется хэш hmac) с секретным ключом (хешированным паролем) на сервере.

Секретный ключ получен из базы данных с именем пользователя по запросу.

Затем серверный код сравнивает подпись по запросу с созданной подписью; если равно, аутентификация пройдена, в противном случае она не удалась.

Код для создания подписи:

private static string ComputeHash(string hashedPassword, string message)
{
    var key = Encoding.UTF8.GetBytes(hashedPassword.ToUpper());
    string hashString;

    using (var hmac = new HMACSHA256(key))
    {
        var hash = hmac.ComputeHash(Encoding.UTF8.GetBytes(message));
        hashString = Convert.ToBase64String(hash);
    }

    return hashString;
}

Итак, как предотвратить атаку воспроизведения?

Добавить ограничение для отметки времени, что-то вроде:

servertime - X minutes|seconds  <= timestamp <= servertime + X minutes|seconds 

(время сервера: время поступления запроса на сервер)

И, кешировать подпись запроса в памяти (используйте MemoryCache, следует ограничить время). Если следующий запрос приходит с той же подписью, что и предыдущий, он будет отклонен.

Демонстрационный код приведен здесь: https://github.com/cuongle/Hmac.WebApi

1
задан 07.05.2020, 06:11

1 ответ

Была обнаружена серьезная ошибка. Удалите предыдущий PPA и:

sudo add-apt-repository ppa: ubuntu-sdk-team / ppa & amp; & amp; sudo apt-get update & amp; & amp; sudo apt-get dist-upgrade & amp; & amp; sudo apt-get установить ubuntu-sdk

0
ответ дан 07.05.2020, 06:11

Теги

Похожие вопросы