如何配置DevForce以在SL App中使用Windows身份验证

时间:2014-06-12 16:31:43

标签: devforce

为了让Windows身份验证在DevForce Silverlight应用程序中正常运行,需要许多不同的元素。

他们究竟是什么? (我现在要回答我自己的问题,现在我已经开始工作了。)

1 个答案:

答案 0 :(得分:2)

在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中:

  1. 选择Web项目。
  2. 打开“属性窗口”。
  3. 将匿名身份验证设为“已禁用”
  4. 将Windows Auth设置为“已启用”
  5. 现在,在自定义IEntityLoginManager中,您可以使用以下命令获取域用户名:

    var userName = HttpContext.Current.User.Identity.Name;
    

    然后,您可以使用userName查找用户的角色/权限。

    最后,必须在IIS中启用Windows身份验证功能。打开/关闭控制面板/程序和功能/打开或关闭Windows功能/万维网服务/安全/ Windows身份验证。

    如果缺少上述任何步骤,则userName将为null。