Zu erhalten zu versuchen windows-Benutzernamen der client mit WCF

Ich versuche, das Windows-Benutzer-name des client, der den Zugriff auf die ASP.NET Seite, die gehostet wird auf meinem Lokalen IIS. Ich bin callign einen WCF-service innerhalb der ASP.NET Seite der gibt den windows-Benutzernamen des Clients. Ich stieß auf so viele posts zu, und die meisten von Ihnen sind darauf hindeutet, dass

  1. OperationContext.Aktuelle.ServiceSecurityContext.WindowsIdentity.Name
  2. HttpContext.Aktuelle.Benutzer.Identität.Name
  3. HttpContext.Aktuelle.Benutzer.Identität.Name

funktionieren sollte. Die Probleme, die ich bin mit "1" ist immer Null zurückgeben. "2" und "3" sind die immer wiederkehrenden meinem lokalen Benutzernamen und nicht den anfragenden user-Namen. Bin ich etwas fehlt in der web.configs der beiden ASP.NET und WCF-Dienst.

IIS-Eigenschaften: Integrierte Windows-Authentifizierung Aktiviert ist.

Hier ist der code.

WCF

public string GetWindowsUser()    
{
   string temp = OperationContext.Current.ServiceSecurityContext.WindowsIdentity.Name;
   string temp1 = HttpContext.Current.User.Identity.Name;
   string temp2 = HttpContext.Current.User.Identity.Name;
   return "Temp: "+temp+" \nTemp1: "+temp1+" \nTemp2: "+temp2;
}

WEB.Config

<system.web>
    <compilation debug="false" targetFramework="4.0"/>
</system.web>
<system.serviceModel>
    <bindings>
        <basicHttpBinding>
            <binding name="BasicHttpBinding_IService1" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536" messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true">
                <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384"/>
                <security mode="None">
                    <transport clientCredentialType="None" proxyCredentialType="None" realm=""/>
                    <message clientCredentialType="UserName" algorithmSuite="Default"/>
                </security>
            </binding>
        </basicHttpBinding>
    </bindings>
    <client>
        <endpoint address="http://localhost:4772/Services.svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IService1" contract="WindowsAuthServices.IService1" name="BasicHttpBinding_IService1"/>
    </client>
</system.serviceModel>

ASP.NET Seite:

protected void Page_Load(object sender, EventArgs e)
{
    WindowsAuthServices.Service1Client client = new WindowsAuthServices.Service1Client();
    lblWelcome.Text = client.GetWindowsUser();
}

Web.Config

<system.web>
    <compilation debug="true" targetFramework="4.0"/>
</system.web>
<system.serviceModel>
    <bindings>
        <basicHttpBinding>
            <binding name="BasicHttpBinding_IService1" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536" messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true">
                <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384"/>
                <security mode="None">
                    <transport clientCredentialType="None" proxyCredentialType="None" realm=""/>
                    <message clientCredentialType="UserName" algorithmSuite="Default"/>
                </security>
            </binding>
        </basicHttpBinding>
    </bindings>
    <client>
        <endpoint address="http://localhost:4772/Services.svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IService1" contract="WindowsAuthServices.IService1" name="BasicHttpBinding_IService1"/>
    </client>
</system.serviceModel>
  • Stoppen Sie und sagen Sie, was Sie tun werden?
  • Unser Unternehmen will seine Website zu öffnen, nur diejenigen, die sich mit Unternehmens-Geräte(laptops). So wollen Sie die sharepoint-Website, um die Windows-Authentifizierung verwenden und nicht Aufforderung den Benutzernamen und das Passwort. Wenn der windows-Benutzername entspricht, mit der man in die Liste der zugelassenen Benutzer es öffnen sollte oder sonst Umleitung auf andere Seite Authentifizierung. erste 1. Teil getan hat, ein problem gewesen.
InformationsquelleAutor Santosh | 2011-08-02
Schreibe einen Kommentar