Возможно ли использовать OpenID с WCF и без браузера? - PullRequest
9 голосов
/ 09 мая 2009

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

Ответы [ 3 ]

10 голосов
/ 09 мая 2009

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

Однако есть хороший способ пойти и по-прежнему использовать WCF и OpenID. Добавьте OAuth к смеси. В библиотеке DotNetOpenAuth есть пример, показывающий, как клиент WCF может получить авторизацию для вызова службы WCF через OAuth, где на стороне службы пользователь использует OpenID для входа в систему как часть процесса авторизации.

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

  1. Приложение открывает браузер, в котором пользователь видит веб-сайт службы WCF (поставщик услуг OAuth)
  2. Пользователь входит в систему со своим OpenID (хотя пользователь уже может войти в систему, и в этом случае он может пропустить этот шаг)
  3. OAuth SP спрашивает пользователя «хотите ли вы разрешить этому [wcf app] доступу к этому сайту?»
  4. Пользователь говорит «да» и закрывает браузер.
  5. Приложение WCF теперь имеет доступ, благодаря протоколу OAuth, к службе WCF.

Это работает, потому что за кулисами, когда пользователь говорит «да» службе через веб-браузер, приложению WCF присваиваются специальные машинно-ориентированные учетные данные, которые он использует при каждом вызове службы WCF аналогичным образом. имя пользователя / пароль будут.

Проверьте библиотеку DotNetOpenAuth. В нем есть образец и все, что вам нужно, чтобы это заработало.

1 голос
/ 10 мая 2009
1 голос
/ 09 мая 2009

После прочтения спецификации OpenID Authentication 2.0 я, кажется, пришел к ответу:

Хотя ничто в протоколе не требует JavaScript или современных браузеров , схема аутентификации прекрасно работает с настройками в стиле "AJAX". Это означает, что конечный пользователь может подтвердить свою личность проверяющей стороне, не покидая свою текущую веб-страницу.

Аутентификация OpenID использует только стандартные HTTP (S) запросы и ответы, поэтому не требует каких-либо специальных возможностей User-Agent или другого клиентского программного обеспечения . OpenID не связан с использованием файлов cookie или каким-либо другим специальным механизмом управления сеансами проверяющей стороны или поставщика OpenID. Расширения для User-Agent могут упростить взаимодействие с конечным пользователем, хотя для использования протокола не требуется.

Теперь мне просто нужно найти умный способ заставить его работать с проверяющей стороной на основе WCF ...

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