2015-08-09 2 views
8

Предположим, я хочу настроить схему аутентификации бедного человека для простой сетевой службы.Использование ключей ssh ​​для аутентификации в других приложениях?

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

Для целей моего применения это значительно упростит процесс аутентификации, поскольку все мои пользователи находятся в локальной сети, и все они используют Unix. В любое время, когда я нахожусь на новом пользователе, я могу просто попросить их открыть открытый ключ ssh.

Есть ли простой способ повторного использования механизма, связанного с аутентификацией открытого ключа ssh в приложении, отличном от ssh? Это вопрос, который должен быть языковым агностиком.

ответ

2

Если у вас есть список пользователей, которые могут использовать ваше приложение, и вам не нужно будет видеть, кто что сделал.

Вы можете настроить сервер так, чтобы он прослушивал только на локальном хосте (127,1), а не 0.0.0.0, а также обеспечить ограниченный SSHd, переадресацию порта, необходимого для подключения к приложению

~/.ssh/authorized_keys предоставит список авторизованные ключи, которые можно использовать.

ssh -I private_key_file <hostname> -L 3000:localhost:3000 

Для базовой настройки и помочь с настройкой SSHd, проверить этот ответ: https://askubuntu.com/questions/48129/how-to-create-a-restricted-ssh-user-for-port-forwarding

Примечание: Имейте в виду, что если вы не заблокировать его, любой пользователь будет иметь полный доступ к оболочке на вашем ящике, где размещена машина.

1

Предполагая, что вы говорите о веб-приложении. То, что вы действительно ищете, - это сертификаты клиента X.509 (1.3.6.1.5.5.7.3.2). Это позволит вам идентифицировать пользователя по отдельности для вашего приложения.

Они сталкиваются с теми же проблемами, с которыми обычно сталкиваются при рассмотрении распределения ключей. Что обычно считается трудной проблемой.

Если вы хотите спуститься по этой дороге, вот что вам нужно сделать.

  • Генерация корневого сертификата (один раз)
  • Настройка веб-сервера с соответствующими модулями для разбора сертификат (Nginx/Apache)
  • Сформировать сертификат для каждого пользователя (OpenSSL)
  • Скачать cerificiate от централизованного сервер. (Возможно, использовать их SSH ключ паба здесь)
  • Установите x509 сертификат локально (OS Dependent)

На стороне сервера, вам нужно будет обрабатывать сертификат как часть веб-сервер (Nginx или апач должны иметь модули для этого), а затем передать имя в ваше приложение как поле заголовка, которое затем можно обрабатывать внутренне.

Это гораздо лучшее решение для обеспечения безопасности, чем имена пользователей и пароли, однако оно сложное из-за проблемы с распространением ключей. Большинство людей не беспокоиться, так как в большинстве приложений достаточно просто интегрировать логины с LDAP или радиусом.

2

Грязный взломать с головы: можете ли вы обернуть приложение так, чтобы оно создало реальный туннель SSH из локального хоста на ваш сервер и использовало это для?

Смежные вопросы