NegotiateStream.RemoteIdentity Property

Definition

Gets information about the identity of the remote party sharing this authenticated stream.

public:
 virtual property System::Security::Principal::IIdentity ^ RemoteIdentity { System::Security::Principal::IIdentity ^ get(); };
public virtual System.Security.Principal.IIdentity RemoteIdentity { get; }
member this.RemoteIdentity : System.Security.Principal.IIdentity
Public Overridable ReadOnly Property RemoteIdentity As IIdentity

Property Value

An IIdentity object that describes the identity of the remote endpoint.

Exceptions

Authentication failed or has not occurred.

Examples

The following code example demonstrates displaying the value of this property.

static void EndAuthenticateCallback( IAsyncResult^ ar )
{
   
   // Get the saved data.
   ClientState^ cState = dynamic_cast<ClientState^>(ar->AsyncState);
   TcpClient^ clientRequest = cState->Client;
   NegotiateStream^ authStream = dynamic_cast<NegotiateStream^>(cState->AuthStream);
   Console::WriteLine( L"Ending authentication." );
   
   // Any exceptions that occurred during authentication are
   // thrown by the EndServerAuthenticate method.
   try
   {
      
      // This call blocks until the authentication is complete.
      authStream->EndAuthenticateAsServer( ar );
   }
   catch ( AuthenticationException^ e ) 
   {
      Console::WriteLine( e );
      Console::WriteLine( L"Authentication failed - closing connection." );
      cState->Waiter->Set();
      return;
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( e );
      Console::WriteLine( L"Closing connection." );
      cState->Waiter->Set();
      return;
   }

   
   // Display properties of the authenticated client.
   IIdentity^ id = authStream->RemoteIdentity;
   Console::WriteLine( L"{0} was authenticated using {1}.", id->Name, id->AuthenticationType );
   cState->Waiter->Set();
}


    public static void EndAuthenticateCallback (IAsyncResult ar)
    {
        // Get the saved data.
        ClientState cState = (ClientState) ar.AsyncState;
        TcpClient clientRequest = cState.Client;
        NegotiateStream authStream = (NegotiateStream) cState.AuthenticatedStream;
        Console.WriteLine("Ending authentication.");
        // Any exceptions that occurred during authentication are
        // thrown by the EndAuthenticateAsServer method.
        try 
        {
            // This call blocks until the authentication is complete.
            authStream.EndAuthenticateAsServer(ar);
        }
        catch (AuthenticationException e)
        {
            Console.WriteLine(e);
            Console.WriteLine("Authentication failed - closing connection.");
            cState.Waiter.Set();
            return;
        }
        catch (Exception e)
        {
            Console.WriteLine(e);
            Console.WriteLine("Closing connection.");
            cState.Waiter.Set();
            return;
        }
        // Display properties of the authenticated client.
        IIdentity id = authStream.RemoteIdentity;
        Console.WriteLine("{0} was authenticated using {1}.", 
            id.Name, 
            id.AuthenticationType
            );
        cState.Waiter.Set();

}

Remarks

When accessed by the client, this property returns a GenericIdentity containing the Service Principal Name (SPN) of the server and the authentication protocol used. When accessed by the server, this property returns a WindowsIdentity that describes the client. If the WindowsIdentity is not available, client information is returned to the server in a GenericIdentity.

Applies to