0

Моя цель - выполнить функцию единого входа из моего приложения WPF с встроенным браузером. Для этого необходимо выполнить единый вход, чтобы пользователю не нужно было снова вводить эти учетные данные, чтобы проверять отчеты из браузера wpf. Мне нужно создать локальную среду для тестирования этой функции с моей стороны, так как я разрабатываю продукт, то есть SQL-отчет, который имеет проверку подлинности и запись в отчет из моего приложения. Я просмотрел почти все в сети относительно этой реализации, и образец, предоставленный Microsoft для проверки подлинности форм, не работает. Я также нашел определенное условие, что образец не будет работать на процессорах на базе процессоров Itanium и т. Д., И я работаю над ssrs 2012. Войдите в систему с захватом DOM сайта для отчетности и определением логина не будет хорошей идеей, поскольку это для вход в систему и учетные записи не будут одинаковыми. Я думаю о реализации с Httpwebrequest и Response, но до сих пор неясно, как реализовать. Некоторые из них, пожалуйста, предоставьте мне четкое и рабочее решение для моей реализации. Заранее спасибо.Управление веб-браузером с одним знаком в службах отчетности

ответ

0

Кто-то, пожалуйста, предоставьте мне четкое и рабочее решение для моей реализации .

Я бы не стал рассчитывать на это, особенно если вы запрашиваете решение для исходного кода.

Единый вход предполагает, что у вас все еще есть сервер аутентификации, что-то вроде Google OAuth. Из вашего вопроса мне не совсем понятно, если это то, что вы ищете. Если вам просто нужно предоставить пользовательские учетные данные для управления WebBrowser, то это still possible, но это решение предназначено для WinForms version из WebBrowser. Код WPF version запечатан в настройках, поэтому вам может быть повезло с WinForms WebBrowser в вашем проекте WPF, используя WindowsFormsHost.

+0

Спасибо за ваш ответ, я проверил ссылки, которые вы предоставили, но метод LogonUser, который мы реализуем с помощью advapi.dll, проверяет аутентификацию Windows. Я ищу, чтобы перейти на веб-сайт, передав учетные данные пользователя. Благодарю. – Darey

0

Я, наконец, нашел способ реализации единого входа для служб отчетности. Стандартный способ реализации единого входа для проверки подлинности форм - это использование выборочного примера расширения безопасности. Конфигурация немного сложна, но как только конфигурация выполняется, нужно сделать один знак, получив токен аутентификации, вызвав метод Logonuser() в службе отчетов. Приведенный ниже код передает учетные данные и возвращает токен аутентификации.

Настройка форм аутентификации можно найти здесь подробно http://www.codeproject.com/Articles/675943/SSRS-2012-Forms-Authentication

Код ниже помогает мне достичь единого входа.

[DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)] 
static extern bool InternetSetCookie(string lpszUrlName, string lpszCookieName, string lpszCookieData); 
private void GetAuthToken(string username, string password) 
{ 
// Step1: Add reference to report service either by directly referencing the reportinservice.asmx service of by converting wsdl to class file. 

ReportServerProxy2010 rsProxy = new ReportServerProxy2010(); 
//Step2: Assign the report server service eg:"http://<servername>/ReportServer/ReportService2010.asmx"; 

       rsProxy.Url = string.Format(ReportServerUrl, ReportServer); 
try 
       { 
       rsProxy.LogonUser(username,password, null); 
       Cookie authCookie = rsProxy.AuthCookie; 
if (authCookie != null) 
       { 
//Internet Set Cookie is a com method which sets the obtained auth token to internet explorer 

        InternetSetCookie(Url, null, authCookie.ToString()); 
       } 
       } 
catch (Exception ex) 
       { 
       } 
      } 
//When navigating now, the auth token is accepted and report manager page is displayed directly without asking for login credentials. 
WebBrowserControl.Navigate(new Uri("");} 
Смежные вопросы