Как выполнить анонимную аутентификацию между приложением VB.Net Desktop и ASP.Net Web App - PullRequest
1 голос
/ 03 декабря 2009

Я ищу способ передачи учетных данных или токена авторизации от клиента VB.Net в веб-приложение ASP.Net, которое позволяет клиенту автоматически входить на наш веб-сайт, прошедший проверку подлинности с помощью форм. Если пользователь вошел в локальное приложение, я хочу, чтобы он мог просматривать некоторые веб-страницы без необходимости входа на сайт. Учетные данные не совпадают между приложениями, но я просто хотел бы передать какой-то зашифрованный токен или ключ на веб-страницу, чтобы я знал, что они поступают из настольного приложения. Возможно ли это без ввода имени пользователя и пароля?

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

Я знаю, как войти в систему пользователя с помощью проверки подлинности с помощью форм, и все это, просто нужно найти лучший способ обеспечить это. Спасибо!

Ответы [ 6 ]

4 голосов
/ 02 января 2010

OAuth обычно используется для предоставления настольным приложениям доступа к личным данным пользователя на веб-сайте. Поскольку вы используете .NET, я предлагаю вам проверить DotNetOpenAuth , который включает примеры веб-сайтов OAuth и клиентских приложений. Он позволяет передавать этот безопасный токен, который может сообщить вашему веб-сайту, что приложение для настольных компьютеров - это приложение, которое выполняет запросы и (обычно) к данным которого осуществляется доступ.

Лучшая часть решения OAuth - ваше настольное приложение никогда не запрашивает учетные данные пользователя. В URL нет учетных данных. И если настольное приложение когда-либо скомпрометировано (возможно, из-за кражи компьютера), веб-сайт может уничтожить безопасный токен, который использовалось настольным приложением для отключения доступа, не требуя от пользователя смены пароля.

2 голосов
/ 29 декабря 2009

Возможно, вы захотите посмотреть выдачу клиентских сертификатов для этих приложений. По сути, вы генерируете сертификат, который вы устанавливаете с клиентским приложением, а затем на стороне сервера проверяете свойство ClientCertificate экземпляра HttpRequest, предоставляемого свойством Request в текущем контексте.

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

1 голос
/ 03 декабря 2009

Вы можете обмениваться учетными данными между приложениями, используя ASP.NET Client Application Services.

Вот несколько ресурсов:

Службы клиентских приложений

Службы клиентских приложений с Visual Studio 2008

0 голосов
/ 02 января 2010

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

Если вы храните зашифрованное значение в файле cookie или в виде поля в форме (запрос POST), то учетные данные больше не отображаются в URL-адресе, и поэтому их нелегко скопировать (обратите внимание, что я сказал «легко») ).

0 голосов
/ 31 декабря 2009

Я думаю, что лучше всего использовать элемент управления веб-браузера в настольном приложении. Тогда используйте WebBrowser1.Document, наиболее вероятно

WebBrowser1.Document.Cookie

получить, если пользователь подписан.

0 голосов
/ 03 декабря 2009

Ваше настольное приложение работает на компьютерах, которые находятся в том же домене, что и ваш веб-сервер (т.е. все в одной компании)? Если это так, встроенная проверка подлинности Windows является вашим самым простым решением.

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