2012-05-18 2 views
0

Я создаю приложение, которое будет предоставлять услуги другим приложениям (давайте притвориться, как оно решает дифференциальные уравнения). Таким образом, моя служба DifEq будет работать все время, и клиентское приложение может отправлять запросы на решение DifEqs в любой момент.Проверка клиентов при использовании межпроцессного взаимодействия

Это было бы тривиально с использованием розеток или труб.

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

Традиционные разъемы здесь сломаны, насколько я знаю.

В идеале, я хотел бы иметь возможность просмотреть некоторую информацию о приложении, которое делает запрос от меня, и (либо через некоторые метаданные в этом приложении, путем связи с моим веб-сайтом, либо через некоторые другой, неподтвержденный метод) определяют приемлемое приложение DifEq. Кроме того, этот идеальный метод не будет подделать без компрометации на уровне root/admin базовой ОС. Если приложение линейного уравнения также является корневым комплектом, я соглашусь быть сломанным. :)

Мне нужно сделать это на Windows, OS X и Linux (и, возможно, на Android); но я понимаю, что это может быть не одно и то же решение на всех платформах. Итак, как бы вы это сделали (укажите, на какой платформе вы сосредоточены, если это необходимо)? Я сделал много серверных разработок, но было слишком много лет с тех пор, как я сделал клиентскую разработку за пределами браузера, и мир сегодня совсем другой, чем тогда.

+0

Не думаю, что я понял. Мне нравится: 1. Принять любое соединение 2. Запросы процесса 3. Если кто-то дает вам плохую просьбу, отключите их. 4. Рассмотрим черный список и прекратите принимать соединения от них для таймаута? –

+0

В реальном приложении у меня нет способа узнать, является ли запрос «хорошим» или «плохим». Я надеюсь, что смогу пометить данные таким образом, чтобы я знал, что это произошло от «Клиента А» по ​​сравнению с «Клиентом Б», но мне нехорошо сделать это, если для Клиента Б легко подражать Клиенту А. Даже предполагая, что я могу различать запросы, как узнать, какие клиенты делают плохие запросы (при условии, что соединения не являются постоянными)? Помните, что все это на одной машине, поэтому (если это возможно, что является растяжкой, я понимаю), это должно было быть операцией уровня ОС для ее выполнения. –

ответ

0

Я думаю, что ваш вопрос немного запутан, когда дело доходит до разговора о DifEQ vs LinearEQ.

Это звучит так, как будто вы просто ищете обычный способ проверить, разрешено ли клиентам подключаться. Есть много, чтобы почитать эту тему. Общими методами было бы использование сертификатов SSL для проверки личности клиентов. Вы также можете туннелировать через SSH или использовать OAUTH и т. Д. И т. Д.

Вам нужно будет сделать еще несколько операций по поиску в Интернете, чтобы узнать, какая аутентификация соответствует вашему сценарию. Вы упоминаете «не подделывать». Я думаю, что люди обычно заканчивают компиляцию - в сертификат частного ключа в свое приложение. Это остановит всех, кроме очень преданных и опытных хакеров.