Я пытаюсь реализовать аутентификацию для API с частным & открытый ключ.
Я хочу предоставить закрытый ключ, хэшировать некоторые данные и отправить хеш в заголовке, а затем снова перефразировать те же данные на сервере для сравнения.
У меня проблемы с этим, какие данные мне нужно хэшировать, URI запроса, тип контента и, возможно, сам контент, но что, когда запрос GET и контента нет.
Будет ли хеширование каких-либо данных с помощью закрытого ключа достаточно безопасным или мне нужно сделать что-то особенное?
Как указано в комментарии, вам не нужны пары открытых / закрытых ключей. То, что вы хотите, это подтверждение личности. Клиент сообщит вам свое имя пользователя / идентификатор (они будут требовать удостоверение личности), и вам потребуются дополнительные доказательства того, что это действительно они. Для этого они отправляют секрет что только они должны знать. Это простой токен.
Вы хотите избежать отправки этого токена по проводам туда-сюда. Помните, что это секрет и должен оставаться как можно более секретным. Вместо этого то, что вы просите клиента отправить, является косвенным доказательством; ты просишь их знак запрос.
Подписание запроса означает, что они просто хэшировать содержимое запроса с помощью алгоритма MAC, их секретный токен является ключом к хешу.
Других решений пока нет …