Единая регистрация на веб-браузере Winforms - PullRequest
3 голосов
/ 20 сентября 2011

У меня есть приложение Winforms, в котором находится элемент управления веб-браузера. В этом элементе управления вы также можете перейти к заранее определенным внешним веб-сайтам.

Мне нужно реализовать единый вход, чтобы пользователю не нужно было проходить аутентификацию на каждом из известных внешних веб-сайтов. У меня уже есть некоторые идеи, но было бы приятно услышать все ваши мнения.

Каков наилучший способ сделать это?

На самом деле, уже есть что-то для этого? (изменить: как браузеры запоминают логины / пароли)?

Приветствия

Ответы [ 2 ]

1 голос
/ 20 сентября 2011

Обычно ответственность за реализацию единого входа лежит на сайте, и клиент автоматически отвечает на сайт.Поскольку элемент управления веб-браузера использует IE, он наследует те же возможности, что и веб-браузер.Например, если сайт использует Windows Authentication , тогда элемент управления будет аутентифицироваться после вызова с сайта без вмешательства пользователя.Аналогично, элемент управления будет выполнять необходимые перенаправления, если сайт использует SAML 2.0 .

Поскольку это внешние сайты, я должен предположить, что проверка подлинности Windows не будет работать должным образом, поскольку сервер иклиент находится на разных доменах.Поэтому что-то вроде SAML звучит как наиболее безопасный вариант.

Похоже, что реализация SAML станет проблемой для вас, и вам нужно вручную заполнять и отправлять веб-формы, которые загружаются внутри элемента управления.Это возможно благодаря доступу к DOM, но быстро становится трудным в обслуживании.

Элемент управления веб-браузера предлагает свойство document , которое дает вам объект HtmlDocument который позволяет найти элементы и выполнить JavaScript на страницах.Вам необходимо использовать эти механизмы для автоматического выполнения аутентификации.Шаги могут выглядеть следующим образом:

  1. Захватить URL или какой-нибудь файл cookie, который сообщит вам, требуется ли аутентификация, путем проверки свойств элемента управления веб-браузера.Возможно, вы захотите изучить OnNavigate () .
  2. Доступ к документу и заполнение значений формы.
  3. Вызов функции отправки JavaScript для отправки формы или вставка некоторыхJavaScript для этого.Мне легче вставлять JavaScript в страницы, чем писать более сложный код на C # во многих случаях.Прототип проще в обычном браузере.
0 голосов
/ 20 сентября 2011

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

Браузеры запоминают пароли для отдельных сайтов.Я бы не назвал этот «единый вход», который представляет собой метод использования доверенных полномочий для аутентификации на нескольких разрозненных веб-сайтах, которые все полагаются на эти полномочия для проверки личности пользователя.

Поскольку вы запрашивали пакеты единого входа, которые уже делают это, вот несколько примеров:

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