2013-08-19 4 views
2

В контексте федеративной безопасности WCF/Web Services/WS-Trust, каковы общепринятые способы аутентификации приложения, а не пользователя? Из того, что я собираю, кажется, что аутентификация сертификата будет способом, IE генерирует сертификат специально для приложения. Я здесь, на правильном пути? Существуют ли другие альтернативы?Как проверить подлинность приложения, а не пользователя?

+0

Не могли бы вы пояснить, от чего вы пытаетесь защитить? – Aron

+0

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

ответ

3

Что вы пытаетесь решить, это решение общей проблемы управления цифровыми правами, которая на данный момент является нерешенной проблемой.

Существует множество опций для удаленной аттестации, которые включают в себя попытку скрыть тайны (традиционные секретные ключи или полусекретные поведенческие характеристики).

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

  • Включите &officialclient=yes в запросе
  • Включить в запросе
  • Хранить секрет с приложением и использованием &appkey=<some big random key> простой вызов/ответ: отправьте случайное nonce в приложение и приложение возвращается HMAC(secret,nonce))

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

Более надежный проспект может преследовать лицензионные/правовые варианты. Известным примером будет Twitter, который помешает вам сбить любого старого клиента через их API licence terms and conditions - если вы создали своего собственного (популярного) клиента, который притворился, что API-интерфейс Twitter является официальным клиентом Twitter, предполагается, что их юристы придут -knocking.

+0

Фантастический ответ ... Что касается пули 3, вы имеете в виду, что если я использую SHA, я просто добавляю nonce к секретному значению перед вычислением хэша? –

+1

HMAC - это построенная на основе хэша конструкция, она очень популярна, поэтому библиотека, предлагающая вам SHA-1, скорее всего, также предложит HMAC-SHA-1. В моем примере ключевой ввод в HMAC - это секретный ключ вашего приложения, а данные, которые будут mac'ed, являются nonce. – Michael

3

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