Как выполнить аутентификацию на сервисе WCF 4 RESTful? - PullRequest
3 голосов
/ 27 мая 2011

В настоящее время я проектирую и разрабатываю сервис WCF 4 RESTful, который будет использоваться мобильными устройствами.Я специально выбрал REST, потому что он предположительно облегчен, а вывод JSON упрощает синтаксический анализ для мобильных клиентов.

Служба заботится о мобильных устройствах как часть всего приложения.Но это требует, чтобы пользователи входили в систему перед использованием сервиса.Обычная HTTP-аутентификация не подходит: она небезопасна, и атака «человек посередине» может легко перехватить учетные записи пользователей.Здесь можно использовать SSL, но я понятия не имею, насколько легко SSL работает на RESTful-сервисе WCF и насколько просто его реализовать на мобильных устройствах.

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

Может кто-нибудь пролить свет на это?Потому что я в замешательстве.В сети много информации о том, как реализовать сервисы WCF (RESTful), но в тот момент, когда вам нужно обеспечить его защиту, объем информации значительно падает ... Статьи приветствуются.

1 Ответ

2 голосов
/ 27 мая 2011

Использование SSL очень просто в WCF и должно поддерживаться каждой мобильной платформой. Вы должны определенно пройти базовую авторизацию с SSL, чтобы максимально упростить свою жизнь. IMHO.

Все, что вам нужно сделать для включения HTTPS в вашей службе WCF:

<webHttpBinding>
    <binding name="MyBinding">
        <security mode="TransportCredentialOnly">
           <transport clientCredentialType="Basic" />
        </security>
    </binding>
</webHttpBinding>

Это будет означать, что «разрешить доступ к этому сервису только через безопасный транспорт и ожидать передачи базовых учетных данных».

Теперь единственный вопрос: где вы размещаете свой сервис WCF? Если хостинг в IIS, вам просто нужно настроить сертификат службы с ним, и все готово.

Другой вариант - использовать SSL заранее с устройством F5 или чем-то в этом роде. Затем вам придется проделать немного больше работы, потому что по умолчанию WCF не позволит вам передавать учетные данные по незащищенному транспорту. Затем вам нужно настроить собственную привязку и установить AllowInsecureTransport = true на TransportSecurityBindingElement. В основном это будет означать «поверь мне, я делаю правильные вещи» в WCF и позволять службе правильно инициализироваться, даже если учетные данные будут проходить через незащищенную привязку.

...