Для правильной работы аутентификации Windows в приложении DevForce Silverlight требуется ряд различных элементов.
Что именно они собой представляют? (Я собираюсь ответить на свой вопрос здесь, теперь, когда он у меня работает.)
Для правильной работы аутентификации Windows в приложении DevForce Silverlight требуется ряд различных элементов.
Что именно они собой представляют? (Я собираюсь ответить на свой вопрос здесь, теперь, когда он у меня работает.)
В web.config необходимо все следующее:
<system.web>
<authentication mode="Windows" />
<httpRuntime targetFramework="4.5" />
<authorization>
<deny users="?"/>
</authorization>
</system.web>
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
</system.serviceModel>
Далее этот класс требуется на сервере:
public class ServiceEvents : IdeaBlade.EntityModel.Server.ServiceHostEvents
{
public override void OnEndpointCreated(System.ServiceModel.Description.ServiceEndpoint endpoint)
{
base.OnEndpointCreated(endpoint);
if (endpoint.Binding is CustomBinding)
{
var binding = endpoint.Binding as CustomBinding;
var elements = binding.CreateBindingElements();
var tbe = elements.Find<TransportBindingElement>();
var httpbe = tbe as HttpTransportBindingElement;
httpbe.AuthenticationScheme = System.Net.AuthenticationSchemes.Negotiate;
endpoint.Binding = new CustomBinding(elements);
}
}
}
И, наконец, в Visual Studio:
Теперь в пользовательском IEntityLoginManager вы можете использовать следующее, чтобы получить имя пользователя домена:
var userName = HttpContext.Current.User.Identity.Name;
Затем вы можете использовать userName для поиска ролей/разрешений для пользователя.
И, наконец, функция проверки подлинности Windows должна быть включена в IIS. Это включается/выключается из Панели управления/Программы и компоненты/Включение или отключение компонентов Windows/Всемирные веб-службы/Безопасность/Аутентификация Windows.
Если какой-либо из вышеперечисленных шагов отсутствует, userName будет нулевым.