#sharepoint-2010 #login #windows-authentication
#sharepoint-2010 #проверка подлинности #windows-проверка подлинности
Вопрос:
Есть ли способ провести простую проверку подлинности Windows для общедоступного сайта (анонимный просмотр включен для просмотра страницы входа), но вместо этого появляется диалоговое окно авторизации Windows, чтобы использовать страницу входа (aspx). Я видел нечто подобное, когда переключился на проверку подлинности в смешанном режиме. В SharePoint есть выпадающий список с «проверка подлинности Windows» или «проверка подлинности forms». Мне нужно что-то подобное, но только параметр «проверка подлинности Windows».
Я видел похожие вопросы на SO, но все они связаны с созданием пользовательской страницы входа. Идеальное решение не будет включать никаких новых страниц и никакого кодирования.
Возможно ли это?
Ответ №1:
Это можно сделать, запустив адрес страницы sharepoint в Internet Explorer и используя некоторый pinvoke api для отправки ключей или settext в поле входа.
Я использовал эту настройку для vb.net формирует заявку. Это работает на моем XP. Я еще не пробовал это в Windows 7, но я уверен, что для его работы там требуется некоторая настройка.
Для этого используется библиотека под названием WindowScraper, отсюда: http://www.programmersheaven.com/download/56171/download.aspx
В эту библиотеку встроены winapi и pinvoke. Если ваша сборка этого не разрешает (возможно, потому, что вы используете VS 2010), говоря, что у нее нет строгого имени, затем используйте SharpDevelop и перестройте решение после добавления собственного сертификата.
Затем поместите dll в каталог вашего приложения и добавьте ссылку.
Затем добавьте импорт:
Imports WindowScrape
Imports WindowScrape.Constants
Imports WindowScrape.Types
Наконец, код (поместите все это в модуль или класс):
Адрес портала частной собственности в виде строки = «http://myportal@somewhere.com » Частное свойство logintitle в виде строки = «Подключиться к myportal@somewhere.com «
Открытый подпортал ()
If My.Computer.Info.OSFullName = "Microsoft Windows XP Professional" then
LoginToPortalXP()
Else
msgbox("Someday, we will be able to log you in automatically" amp; vbCr amp; "But it isn't ready yet.")
End If
End Sub
Private Function IsWindowReady(Optional ByVal timeout As integer = 10000)
Dim isready As Boolean = false
Dim timer As Integer = 1000
Do Until Not loginBox is nothing or timer = timeout
Thread.Sleep(1000)
loginbox = HwndObject.GetWindowByTitle(logintitle)
timer = timer 1000
loop
If Not loginbox is nothing then isready = true
Return isready
End Function
Sub LoginToPortalXP()
Try
Dim TheBrowser As Object = CreateObject("InternetExplorer.Application")
TheBrowser.Visible = True
TheBrowser.Navigate(PortalAddress)
If Not IsWindowReady then debug.print("failed") : Exit sub
Dim sys As HwndObject = loginbox.GetChildren(1) 'SysCredential
sys.GetChildren(1).Text = "myUserName" 'username box
Thread.Sleep(500)
sys.GetChildren(4).Text = "myPassword" 'password box
Thread.Sleep(500)
loginbox.GetChildren(2).Click() 'push the okay button
Catch ex As Exception
msgbox("ERROR AutoLogging into Portal: " amp; vbcr amp; amp; ex.Message)
Finally
End Try
End Sub
Я добавил таймер на всякий случай, если это займет больше времени. Конечно, вы можете изменить время ожидания.
Комментарии:
1. Привет, @BGM, спасибо за ответ. Однако я надеялся на что-то менее «хакерское», в котором использовалось больше встроенных функций. Возможно, ответа, который я ищу, на самом деле не существует. Несмотря на это, мне очень понравился креатив и подход, который вы выбрали, и повысили ответ. Но не думаю, что я пока могу дать окончательный ответ. Еще раз спасибо.
2. @mateuscb Ну, я хотел бы сказать, что я искал способы сделать это в течение нескольких лет. Единственный способ, который я нашел, — это «хакерский» способ. Я написал другой скрипт в autohotkey, который делает то же самое, но позволяет вам выбрать учетную запись для входа в систему, и он также работает в firefox. Описанный выше метод работает для dotnet и без чего-либо, кроме dotnet и api. На самом деле это работает очень хорошо. Единственным недостатком является то, что MS изменяет порядок элементов управления. Кроме того, я пробовал это только в XP и Sharepoint Services 2007; Я работаю над этим для Windows7.