Я использую Silverlight, .NET 4 (с VB), RIA Services и разрабатываю под VS 2010.
Я пытаюсь разработать приложение, которое позволяет использовать единый вход (единый вход в систему, то есть автоматическую аутентификацию приложения через имя пользователя Windows и Active Directory) и использовать проверку подлинности с помощью форм (для входа в базу данных при сбое единого входа), и именно здесь У меня проблемы.
То, что я пытался сделать, это:
при запуске приложения получить имя пользователя Windows посредством вызова сервера со службами RIA (эквивалент веб-службы), который затем возвращает имя, найденное в HTTP-запросе (HttpContext.Current.Request.LogonUserIdentity.Name
). Почему такой дорогой звонок? Поскольку имя пользователя Windows просто не доступно на стороне клиента, как показывают другие темы переполнения стека ...
, затем попробуйте зарегистрировать пользователя, найденного в Active Directory: эта часть в порядке.
Часть 1 работает на локальном компьютере (у меня действительно есть что-то вроде «DOMAIN \ USER», но это потому, что веб-сервер dev работает на моем компьютере), но когда приложение развернуто на удаленном сервере, оно больше не работает (я затем «SERVICE NT \ NETWORK», которую я не могу использовать).
Вы знаете, как я мог бы избавиться от этой большой проблемы? Вот мои первые треки:
- удалось получить имя пользователя на стороне клиента (но из того, что я мог прочитать, это было бы чудом; даже с использованием javascript на странице ASP.NET по умолчанию я не смог)
- использовать механизм аутентификации NTLM .NET
- настроить IIS или используемый сервер (Windows Server 2008) так, чтобы на стороне сервера я получал хорошего «ДОМЕНА \ ПОЛЬЗОВАТЕЛЯ» (может быть, через настройки доверия ...?)
- использовать проверку подлинности Windows, но как я могу тогда проверять пользователей по БД?
Спасибо за вашу помощь, это сводит меня с ума ... Более того, это тоже становится насущным: - (