2015-07-20 1 views
0

Я пытаюсь ограничить пользователей, позволяя им вводить/отключать часы только тогда, когда они используют компьютер компании или на месте. Есть ли способ сделать это. Я бы использовал IP или имя хоста, но у нас есть динамический IP-адрес, и имя хоста генерируется из IP-адреса, поэтому в этом случае не будет полезно, так как мы находимся за шлюзом/брандмауэром ISP.В Rails, как вы можете ограничить пользователей конкретными местоположениями или компьютерами?

+0

Это не ответ, который вы хотите, но большинство провайдеров предоставляют статические IP-адреса по требованию, с небольшой вероятностью. –

ответ

0

Одним из способов сделать это было бы предоставление сертификата клиента SSL (TLS) на каждом компьютере, который вы хотите разрешить доступ, а затем ваш HTTP-сервер запрашивает действительный сертификат, прежде чем разрешить пользователю подключаться к вашему Rails-приложению. С Nginx, например, конфигурация может выглядеть немного так:

server { 
    listen  443; 
    ssl on; 
    server_name example.com; 

    ssl_certificate  /etc/nginx/certs/server.crt; 
    ssl_certificate_key /etc/nginx/certs/server.key; 
    ssl_client_certificate /etc/nginx/certs/ca.crt; 
    ssl_verify_client optional; 

    # $ssl_client_verify now contains the result of the certificate check, 
    # so you could just do something like this somewhere in your config: 

    if($ssl_client_verify != SUCCESS) { 
     return 403; 
    } 

    # ... 
} 

Файл server.crt регулярный сертификат SSL вы получите от SSL Cert магазина. Файл ca.crt (Certificate Authority) - это тот, который вы создаете самостоятельно. Затем вы создадите знак нескольких клиентских сертификатов с сертификатом CA и сообщите nginx только о сертификатах, подписанных вашим центром сертификации. Here's a helpful article that shows you how.

Этот подход потребует от вас создания и безопасного хранения сертификата ЦС, создания (в идеале) одного сертификата на компьютер, который вы хотите разрешить, и добавления сертификата клиента на каждую машину, которая нуждается в доступе, так что это довольно немного Работа. Вы также должны быть уверены, что ваши пользователи не могут просто экспортировать сертификат клиента и установить его на своем домашнем ПК.

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