Как передать ключ аутентификации в спокойный веб-сервис? - PullRequest
1 голос
/ 09 января 2009

Некоторые существующие веб-сервисы, которые я использую, имеют методы, которые выглядят примерно так:

List<Employee> employees = 
        employeeService.GetEmployees(accessKey, allDepartments);

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

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

http://www.business.com/<GuidHere>/Employees/

Так как это показало бы accessKey, который является несколько секретным (то есть, это обычно находится в зашифрованном файле на клиенте, который использует это), мы не можем показать GUID в URI. Как что-то подобное достигается с помощью спокойной архитектуры?

Ответы [ 4 ]

7 голосов
/ 09 января 2009

Вы можете отправить токен аутентификации, используя заголовки HTTP.

1 голос
/ 10 января 2009

Если время не является проблемой, может быть полезна реализация безопасности OAuth. OAuth использует открытый ключ, а также секретный. Беспорядок хэшируется (в большинстве случаев), и сервер будет использовать открытый ключ + его копию секрета, чтобы выполнить то же хэширование и убедиться, что его результат соответствует запросам.

Преимущество в том, что вам не нужно использовать HTTPS или POST. Методы Get * REST api должны использовать метод HTTP GET (я не уверен, что ваша цель - RESTful, просто подумал, что укажу на это). Я согласен с г-ном Паном, используйте http://www.business.com/employees. Строка запроса может содержать список идентификаторов отделов.

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

Хорошая информация об OAuth: http://www.hueniverse.com/hueniverse/

1 голос
/ 09 января 2009

Если это веб-служба RESTful Я предполагаю, что она используется машиной, так почему бы не передать ключ доступа в URL-адресе?

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

Если ключ настолько чувствителен, почему бы не симметрично зашифровать на сервере за сеанс и вместо этого передать это значение?

Просто несколько мыслей.
Кев

0 голосов
/ 09 января 2009

Как указал Трой Алфорд, мое первоначальное предложение было неверным. Вы не должны использовать POST в такой ситуации. Вы должны использовать запрос GET с информацией аутентификации в заголовках HTTP. Взгляните на базовую аутентификацию доступа , чтобы узнать, как это сделать.

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