Хотя OpenID может заявлять о своей независимости от cookie-файлов и тому подобное, потому что спецификация фактически не предписывает, как эти вещи используются, в действительности я никогда не видел хорошего решения OpenID для чего-либо, кроме входа на веб-сайт, который действительно его основной вариант использования.
Однако есть хороший способ пойти и по-прежнему использовать WCF и OpenID. Добавьте OAuth к смеси. В библиотеке DotNetOpenAuth есть пример, показывающий, как клиент WCF может получить авторизацию для вызова службы WCF через OAuth, где на стороне службы пользователь использует OpenID для входа в систему как часть процесса авторизации.
Таким образом, в основном, если ваше приложение WCF должно "войти", чтобы вызвать службу WCF, как часть одноразовой настройки:
- Приложение открывает браузер, в котором пользователь видит веб-сайт службы WCF (поставщик услуг OAuth)
- Пользователь входит в систему со своим OpenID (хотя пользователь уже может войти в систему, и в этом случае он может пропустить этот шаг)
- OAuth SP спрашивает пользователя «хотите ли вы разрешить этому [wcf app] доступу к этому сайту?»
- Пользователь говорит «да» и закрывает браузер.
- Приложение WCF теперь имеет доступ, благодаря протоколу OAuth, к службе WCF.
Это работает, потому что за кулисами, когда пользователь говорит «да» службе через веб-браузер, приложению WCF присваиваются специальные машинно-ориентированные учетные данные, которые он использует при каждом вызове службы WCF аналогичным образом. имя пользователя / пароль будут.
Проверьте библиотеку DotNetOpenAuth. В нем есть образец и все, что вам нужно, чтобы это заработало.