Compartir a través de


UserNamePasswordServiceCredential.CacheLogonTokens Propiedad

Definición

Obtiene o establece un valor que indica si los tokens de inicio de sesión están almacenados en memoria caché.

public:
 property bool CacheLogonTokens { bool get(); void set(bool value); };
public bool CacheLogonTokens { get; set; }
member this.CacheLogonTokens : bool with get, set
Public Property CacheLogonTokens As Boolean

Valor de propiedad

Boolean

true si los tokens de inicio de sesión están almacenados en memoria caché; de lo contrario, false. De manera predeterminada, es false.

Ejemplos

El siguiente ejemplo obtiene el valor de esta propiedad.

// Create a service host.
Uri httpUri = new Uri("http://localhost/Calculator");
ServiceHost sh = new ServiceHost(typeof(Calculator), httpUri);

// Create a binding that uses a username/password credential.
WSHttpBinding b = new WSHttpBinding(SecurityMode.Message);
b.Security.Message.ClientCredentialType = MessageCredentialType.UserName;

// Add an endpoint.
sh.AddServiceEndpoint(typeof(ICalculator), b, "UserNamePasswordCalculator");

// Get a reference to the UserNamePasswordServiceCredential object.
UserNamePasswordServiceCredential unpCredential =
    sh.Credentials.UserNameAuthentication;
// Print out values.
Console.WriteLine("IncludeWindowsGroup: {0}",
    unpCredential.IncludeWindowsGroups);
Console.WriteLine("UserNamePasswordValidationMode: {0}",
    unpCredential.UserNamePasswordValidationMode);
Console.WriteLine("CachedLogonTokenLifetime.Minutes: {0}",
    unpCredential.CachedLogonTokenLifetime.Minutes );
Console.WriteLine("CacheLogonTokens: {0}",
    unpCredential.CacheLogonTokens );
Console.WriteLine("MaxCachedLogonTokens: {0}",
    unpCredential.MaxCachedLogonTokens );

Console.ReadLine();
' Create a service host.
Dim httpUri As New Uri("http://localhost/Calculator")
Dim sh As New ServiceHost(GetType(Calculator), httpUri)

' Create a binding that uses a username/password credential.
Dim b As New WSHttpBinding(SecurityMode.Message)
b.Security.Message.ClientCredentialType = MessageCredentialType.UserName

' Add an endpoint.
sh.AddServiceEndpoint(GetType(ICalculator), b, "UserNamePasswordCalculator")

' Get a reference to the UserNamePasswordServiceCredential object.
Dim unpCredential As UserNamePasswordServiceCredential = sh.Credentials.UserNameAuthentication
' Print out values.
Console.WriteLine("IncludeWindowsGroup: {0}", unpCredential.IncludeWindowsGroups)
Console.WriteLine("UserNamePasswordValidationMode: {0}", unpCredential.UserNamePasswordValidationMode)
Console.WriteLine("CachedLogonTokenLifetime.Minutes: {0}", unpCredential.CachedLogonTokenLifetime.Minutes)
Console.WriteLine("CacheLogonTokens: {0}", unpCredential.CacheLogonTokens)
Console.WriteLine("MaxCachedLogonTokens: {0}", unpCredential.MaxCachedLogonTokens)

Console.ReadLine()

Comentarios

De forma predeterminada, la seguridad de WCF pide al subsistema de seguridad Windows que cree un token de inicio de sesión para cada token de seguridad de nombre de usuario o contraseña entrante si el nombre de usuario se asigna a una cuenta de Windows. Este comportamiento se puede cambiar modificando la propiedad UserNamePasswordValidationMode.

Para el modo Windows, el servicio utiliza la función LogonUser de Win32 para la autenticación mediante el nombre de usuario/contraseña. Si CacheLogonTokens está establecido en true, el token de Windows resultante está almacenado en memoria caché y se reutiliza para el mismo par de nombre de usuario/contraseña. El caché es válido durante CachedLogonTokenLifetime. El número máximo de cachés se limita a MaxCachedLogonTokens.

Se aplica a