This is documentation for Caché & Ensemble.

For information on converting to InterSystems IRIS, see the InterSystems IRIS Adoption Guide and the InterSystems IRIS In-Place Conversion Guide, both available on the WRC Distributions page (login required).

Home > Class Reference > %SYS namespace > %SYSTEM.Security.Users


abstract class %SYSTEM.Security.Users

Method Inventory


classmethod GetTelnetSSLSetting() as %Integer
Fetch Windows Telnet service SSL security setting. Only applicable to instances on Windows platform. See also the SetTelnetSSLSetting method.
  • Return value = 0: Disabled
  • Return value = 1: Enabled
  • Return value = 2: Required
classmethod ImpersonateUser() as %Integer
Impersonates the user logged on by the LogonUser() method by calling the Windows ImpersonateLoggedOnUser() API with the security token saved by LogonUser(). ImpersonateUser() and RevertToSelf do not affect the Cache user context contained in $USERNAME. Returns 0 on success, -1 if no security token has been saved, or the value returned by GetLastError() on failure.
classmethod LogoffUser() as %Integer
Closes the handle to the security token previously created by LogonUser() after reverting the process user context to the original user context. Return value is 0.
classmethod LogonUser(UserName As %String, Domain As %String, Password As %String) as %Integer
Calls the Windows LogonUser() API and saves the security token for the current process. The user context is unaffected until the ImpersonateUser() method is called. Return value is 0 on success or the error value retrieved from GetLastError() on failure.
This method is only available on Windows platforms. It cannot be called from a local Cache Terminal process which displays TRM:pid (InstanceName) in the title bar because this process is already impersonating the logged in Windows user. An attempt to call LogonUser() from a local terminal process will result in a error.
classmethod RevertToSelf() as %Integer
Reverts the process user context to the original logon context. Returns 0.
classmethod SSLGetCipher() as %String
Returns the name of the SSL/TLS ciphersuite currently in use over the principal device, if an SSL/TLS connection is currently established.
classmethod SSLGetCipherList(Direction As %Integer, Protocols As %Integer, CipherList As %String) as %String
Returns a colon-delimited list of the names of all supported ciphersuites that are consistent with the input parameters.

0 = client
1 = server

Protocols enabled, bitwise-or of:
1 = SSLv2
2 = SSLv3
4 = TLSv1.0
8 = TLSv1.1
16 = TLSv1.2

CipherList, a colon-delimited string constraining the return values, as specified in the OpenSSL Cipher man page
classmethod SSLGetLastError() as %String
Returns a description of the SSL/TLS error encountered, if any, during the most recent SSL/TLS operation over the principal device.
classmethod SSLGetPeerCertificate() as %String
Returns the X.509 certificate used to verify the peer for the SSL/TLS session running over the current principal TCP device, in binary DER format. The certificate can be used as input to $System.Encryption.X509GetField() and the RSA* functions. To save the certificate to a file in PEM format:

Do file.Write("-----BEGIN CERTIFICATE-----"_$c(13,10))
Do file.Write($System.Encryption.Base64Encode(certificate))
Do file.Write($c(13,10)_"-----END CERTIFICATE-----"_$c(13,10))
classmethod SSLGetPeerName(Entry As %String) as %String
Returns a string representation of the X.500 distinguished name contained in the X.509 certificate used to verify the peer for the SSL/TLS session running over the principal device. Called with no arguments it returns the entire name on one line. Called with an optional argument specifying a component name entry it retuns just that entry, if present. Legal values for the entry argument, and their legal short abreviations, are:


Also supports the IA5 string components of the X.509 v3 subjectAltName extension. Additional legal values for the entry argument are:

classmethod SSLGetProtocol() as %String
Returns the name of the protocol currently in use over the principal device, if an SSL/TLS connection is currently established.
classmethod SSLPeekClientHello(Timeout As %Integer) as %Integer
If the principal device is a TCP device, peek into the TCP receive buffer.
Returns 1 if it contains an SSLv3 or TLSv1 Client Hello message, or an SSLv2 Client Hello message requesting SSLv3 or later. Otherwise returns 0. Parameter:

Timeout, time to wait for data, in seconds
classmethod SetTelnetSSLSetting(Setting As %Integer) as %Integer
Set the SSL requirement (Disabled/Enabled/Required) for inbound connections on the Caché %Service_Telnet service. The default value is 1 (Enabled) if a %TELNET/SSL configuration exists is enabled. The default value is 0 (Disabled) of no %TELNET/SSL configuration exists or is enabled. This method can be called from SYSTEM^%ZSTART to establish the setting for an instance at startup. This setting is only applicable on the Windows platform. Valid inputs are:
  • Setting = 0: Disabled
  • Setting = 1: Enabled
  • Setting = 2: Required

Returns previous setting.