Вопрос о системе авторизации мобильного телефона - PullRequest
1 голос
/ 10 июня 2011

Мне трудно прибить / решить проблему.

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

Проблема в том, что только пользователь, который хочет выполнить действие, будет иметь iphone (во многих случаях) и, следовательно, возможность получать авторизацию с нашего сервера. Вторая сторона не имеет доступа к интернет-соединению и не сможет напрямую подтвердить, что запрос первого пользователя был авторизован.

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

Пока что все идеи, которые я выдвинул, могут быть подорваны умным хакером, который просто дублирует то, что вторая сторона ожидает увидеть в качестве подтвержденного запроса. Такие вещи, как ... предоставление каждой второй стороне уникального кода, который необходимо было ввести в мобильное приложение первой стороны, чтобы получить подтверждение. Но умный пользователь может просто создать взломанное приложение, которое имитирует действия реального приложения. Очевидно, это было бы проблемой, потому что, если вторая сторона считает, что действие было санкционировано, когда оно фактически не было (из-за взлома), они потеряли бы деньги / время / и т.д. ...

Вот диаграмма, которая может прояснить мой вопрос: Diagram

Любые идеи будут с благодарностью.

*** Редактировать: Я хотел добавить - у Стороны 2 нет доступа к мобильному устройству / компьютеру в некоторых случаях, поэтому мне нужно выяснить какое-то оборудование, которое можно было бы дешево развернуть, но также выполнять роль проверка.

1 Ответ

1 голос
/ 10 июня 2011

Если я правильно понимаю вашу проблему;у вас есть доверенный сервер, который может авторизовать действие для Стороны 1. То есть сервер может решить, следует ли разрешить Стороне 1 выполнять какое-либо действие.Вы можете назвать это сервисом авторизации.Затем Сторона 1 должна доказать, что она была уполномочена выполнить это действие для Стороны 2. Сторона 2 не может напрямую связаться со службой авторизации для проверки этой претензии.

Естественное решение для этого - позволить серверу авторизации выдатьПретензия в отношении авторизации с цифровой подписью для Стороны 1. Эта претензия может представлять собой, например, XML, который описывает, какие разрешения имеет Сторона 1.Требование должно быть подписано цифровой подписью с закрытым ключом, который знает только сервер авторизации.Сторона 1 получает эту претензию с сервера и отправляет претензию Стороне 2. Сторона 2 проверяет цифровую подпись, используя открытый ключ сервера авторизации.Если цифровая подпись верна, то Сторона 2 знает, что утверждение является действительным, и какие виды авторизации Сторона 1 получила от сервера авторизации.

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

Вам понадобится какой-то видустройства на Стороне 2, способного подтвердить подписанную претензию.Без этого я не думаю, что этот сценарий можно решить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...