RADIUS Component
Properties Methods Events Config Settings Errors
The RADIUS component provides an easy way to authenticate users.
Syntax
TipaRADIUS
Remarks
The RADIUS component implements support for Remote Authentication Dial In User Service (RADIUS).
Authentication
The component can be used to authenticate users with a RADIUS server. To begin set the following properties:
- RemoteHost
- RemotePort (optional)
- User
- Password
- SharedSecret
The AuthMechanism property may be set to specify the authentication mechanism used.
Property List
The following is the full list of the properties of the component with short descriptions. Click on the links for further details.
AttrCount | The number of records in the Attr arrays. |
AttrType | The type of the attribute. |
AttrName | A text description of the attribute type. |
AttrValue | The attribute value. |
AuthMechanism | The authentication mechanism to be used when connecting to the RADIUS server. |
EAPAnonymousIdentity | The identity to use when using PEAP or EAP-TLS. |
LocalHost | The name of the local host or user-assigned IP interface through which connections are initiated or accepted. |
LocalPort | The UDP port in the local host where UDP binds. |
Password | The user's password. |
RemoteHost | The address of the remote host. Domain names are resolved to IP addresses. |
RemotePort | The port for the RADIUS server (default is 1812). |
SharedSecret | The RADIUS shared secret. |
SSLCertEncoded | This is the certificate (PEM/base64 encoded). |
SSLCertStore | This is the name of the certificate store for the client certificate. |
SSLCertStorePassword | If the type of certificate store requires a password, this property is used to specify the password needed to open the certificate store. |
SSLCertStoreType | This is the type of certificate store for this certificate. |
SSLCertSubject | This is the subject of the certificate used for client authentication. |
Timeout | A timeout for the component. |
User | The name of the user to authenticate. |
Method List
The following is the full list of the methods of the component with short descriptions. Click on the links for further details.
Authenticate | Authenticates the user. |
Config | Sets or retrieves a configuration setting. |
DoEvents | Processes events from the internal message queue. |
Interrupt | Interrupt the current method. |
Reset | Resets the component properties to their default values. |
Event List
The following is the full list of the events fired by the component with short descriptions. Click on the links for further details.
Attribute | Fires for each attribute that is received. |
Error | Information about errors during data delivery. |
Log | Fires with log information during processing. |
SSLServerAuthentication | Fired after the server presents its certificate to the client. |
SSLStatus | Shows the progress of the secure connection. |
Config Settings
The following is a list of config settings for the component with short descriptions. Click on the links for further details.
SendMessageAuthenticator | Whether to send the Message-Authenticator attribute. |
CaptureIPPacketInfo | Used to capture the packet information. |
DelayHostResolution | Whether the hostname is resolved when RemoteHost is set. |
DestinationAddress | Used to get the destination address from the packet information. |
DontFragment | Used to set the Don't Fragment flag of outgoing packets. |
LocalHost | The name of the local host through which connections are initiated or accepted. |
LocalPort | The port in the local host where the component binds. |
MaxPacketSize | The maximum length of the packets that can be received. |
QOSDSCPValue | Used to specify an arbitrary QOS/DSCP setting (optional). |
QOSTrafficType | Used to specify QOS/DSCP settings (optional). |
ShareLocalPort | If set to True, allows more than one instance of the component to be active on the same local port. |
UseConnection | Determines whether to use a connected socket. |
UseIPv6 | Whether or not to use IPv6. |
AbsoluteTimeout | Determines whether timeouts are inactivity timeouts or absolute timeouts. |
FirewallData | Used to send extra data to the firewall. |
InBufferSize | The size in bytes of the incoming queue of the socket. |
OutBufferSize | The size in bytes of the outgoing queue of the socket. |
BuildInfo | Information about the product's build. |
CodePage | The system code page used for Unicode to Multibyte translations. |
LicenseInfo | Information about the current license. |
MaskSensitive | Whether sensitive data is masked in log messages. |
UseFIPSCompliantAPI | Tells the component whether or not to use FIPS certified APIs. |
UseInternalSecurityAPI | Tells the component whether or not to use the system security libraries or an internal implementation. |
AttrCount Property (RADIUS Component)
The number of records in the Attr arrays.
Syntax
__property int AttrCount = { read=FAttrCount, write=FSetAttrCount };
Default Value
0
Remarks
This property controls the size of the following arrays:
The array indices start at 0 and end at AttrCount - 1.
This property is not available at design time.
Data Type
Integer
AttrType Property (RADIUS Component)
The type of the attribute.
Syntax
__property int AttrType[int AttrIndex] = { read=FAttrType, write=FSetAttrType };
Default Value
0
Remarks
The type of the attribute.
This property identifies the type of the attribute. Common values are:
AttributeType | Meaning |
1 | User-Name |
2 | User-Password |
3 | CHAP-Password |
4 | NAS-IP-Address |
5 | NAS-Port |
6 | Service-Type |
7 | Framed-Protocol |
8 | Framed-IP-Address |
9 | Framed-IP-Netmask |
10 | Framed-Routing |
11 | Filter-Id |
12 | Framed-MTU |
13 | Framed-Compression |
14 | Login-IP-Host |
15 | Login-Service |
16 | Login-TCP-Port |
17 | (unassigned) |
18 | Reply-Message |
19 | Callback-Number |
20 | Callback-Id |
21 | (unassigned) |
22 | Framed-Route |
23 | Framed-IPX-Network |
24 | State |
25 | Class |
26 | Vendor-Specific |
27 | Session-Timeout |
28 | Idle-Timeout |
29 | Termination-Action |
30 | Called-Station-Id |
31 | Calling-Station-Id |
32 | NAS-Identifier |
33 | Proxy-State |
34 | Login-LAT-Service |
35 | Login-LAT-Node |
36 | Login-LAT-Group |
37 | Framed-AppleTalk-Link |
38 | Framed-AppleTalk-Network |
39 | Framed-AppleTalk-Zone |
40-59 | Reserved for accounting |
60 | CHAP-Challenge |
61 | NAS-Port-Type |
62 | Port-Limit |
63 | Login-LAT-Port |
The AttrIndex parameter specifies the index of the item in the array. The size of the array is controlled by the AttrCount property.
This property is not available at design time.
Data Type
Integer
AttrName Property (RADIUS Component)
A text description of the attribute type.
Syntax
__property String AttrName[int AttrIndex] = { read=FAttrName };
Default Value
""
Remarks
A text description of the attribute type.
This property holds a text description of the AttributeType.
The AttrIndex parameter specifies the index of the item in the array. The size of the array is controlled by the AttrCount property.
This property is read-only and not available at design time.
Data Type
String
AttrValue Property (RADIUS Component)
The attribute value.
Syntax
__property String AttrValue[int AttrIndex] = { read=FAttrValue, write=FSetAttrValue }; __property DynamicArray<Byte> AttrValueB[int AttrIndex] = { read=FAttrValueB, write=FSetAttrValueB };
Default Value
""
Remarks
The attribute value.
The AttrIndex parameter specifies the index of the item in the array. The size of the array is controlled by the AttrCount property.
This property is not available at design time.
Data Type
Byte Array
AuthMechanism Property (RADIUS Component)
The authentication mechanism to be used when connecting to the RADIUS server.
Syntax
__property TipaRADIUSAuthMechanisms AuthMechanism = { read=FAuthMechanism, write=FSetAuthMechanism };
enum TipaRADIUSAuthMechanisms { ramMSCHAPv2=0, ramPAP=1, ramPEAPv0=2, ramEAPTLS=3 };
Default Value
ramMSCHAPv2
Remarks
This property defines the authentication mechanism used when connecting to the RADIUS server. Possible values are:
0 (ramMSCHAPv2 - default) | Microsoft Challenge Authentication Protocol v2 |
1 (ramPAP) | Password Authentication Protocol |
2 (ramPEAPv0) | Protected Extensible Authentication Protocol with MSCHAPv2 inner authentication |
3 (ramEAPTLS) | Extensible Authentication Protocol with TLS |
When set to ramEAPTLS the SSLCert* properties must be set to the client certificate used to authenticate to the server.
Data Type
Integer
EAPAnonymousIdentity Property (RADIUS Component)
The identity to use when using PEAP or EAP-TLS.
Syntax
__property String EAPAnonymousIdentity = { read=FEAPAnonymousIdentity, write=FSetEAPAnonymousIdentity };
Default Value
"anonymous"
Remarks
This property specifies the initital identity to use when establishing a secure connection using PEAP. When AuthMechanism is set to amPEAPv0 or emEAPTLS the connection begins in plaintext. This property specifies the user name (if any) that is sent in the initial plaintext request. This allows the true identity of the user to be hidden.
If set, the value will be sent in the plaintext connection request. If not set (empty string) the User will be sent. Authentication servers may make use of a value that includes the domain to which the user will authenticate, such as anonymous@example.com. In that case the user's identity is still hidden, however the authentication server will have knowledge of the domain for the user which it may make use of.
Once a secure connection is established the user's true identity is sent to the authentication server over the TLS encrypted connection. This property specifies only the identity sent in the initial plaintext request.
The default value is anonymous.
This setting is only applicable when AuthMechanism is set to amPEAPv0 or amEAPTLS.
Data Type
String
LocalHost Property (RADIUS Component)
The name of the local host or user-assigned IP interface through which connections are initiated or accepted.
Syntax
__property String LocalHost = { read=FLocalHost, write=FSetLocalHost };
Default Value
""
Remarks
The LocalHost property contains the name of the local host as obtained by the gethostname() system call, or if the user has assigned an IP address, the value of that address.
In multi-homed hosts (machines with more than one IP interface) setting LocalHost to the value of an interface will make the component initiate connections (or accept in the case of server components) only through that interface.
If the component is connected, the LocalHost property shows the IP address of the interface through which the connection is made in internet dotted format (aaa.bbb.ccc.ddd). In most cases, this is the address of the local host, except for multi-homed hosts (machines with more than one IP interface).
NOTE: LocalHost is not persistent. You must always set it in code, and never in the property window.
Data Type
String
LocalPort Property (RADIUS Component)
The UDP port in the local host where UDP binds.
Syntax
__property int LocalPort = { read=FLocalPort, write=FSetLocalPort };
Default Value
0
Remarks
The LocalPort property must be set before UDP is activated (Active is set to True). It instructs the component to bind to a specific port (or communication endpoint) in the local machine.
Setting it to 0 (default) enables the TCP/IP stack to choose a port at random. The chosen port will be shown by the LocalPort property after the connection is established.
LocalPort cannot be changed once the component is Active. Any attempt to set the LocalPort property when the component is Active will generate an error.
The LocalPort property is useful when trying to connect to services that require a trusted port in the client side.
Data Type
Integer
Password Property (RADIUS Component)
The user's password.
Syntax
__property String Password = { read=FPassword, write=FSetPassword };
Default Value
""
Remarks
This property specifies the password for the User. This must be set before calling Authenticate.
Data Type
String
RemoteHost Property (RADIUS Component)
The address of the remote host. Domain names are resolved to IP addresses.
Syntax
__property String RemoteHost = { read=FRemoteHost, write=FSetRemoteHost };
Default Value
""
Remarks
The RemoteHost property specifies the IP address (IP number in dotted internet format) or Domain Name of the remote host.
If RemoteHost is set to 255.255.255.255, the component broadcasts data on the local subnet.
If the RemoteHost property is set to a Domain Name, a DNS request is initiated and upon successful termination of the request, the RemoteHost property is set to the corresponding address. If the search is not successful, an error is returned.
If UseConnection is set to True, the RemoteHost must be set before the component is activated (Active is set to True).
Data Type
String
RemotePort Property (RADIUS Component)
The port for the RADIUS server (default is 1812).
Syntax
__property int RemotePort = { read=FRemotePort, write=FSetRemotePort };
Default Value
1812
Remarks
The RemotePort is the UDP port to which requests will be made. The default value is 1812. Port 1645 is also commonly used.
Data Type
Integer
SharedSecret Property (RADIUS Component)
The RADIUS shared secret.
Syntax
__property String SharedSecret = { read=FSharedSecret, write=FSetSharedSecret }; __property DynamicArray<Byte> SharedSecretB = { read=FSharedSecretB, write=FSetSharedSecretB };
Default Value
""
Remarks
This property holds the shared secret to use when communicating with the RADIUS server.
Data Type
Byte Array
SSLCertEncoded Property (RADIUS Component)
This is the certificate (PEM/base64 encoded).
Syntax
__property String SSLCertEncoded = { read=FSSLCertEncoded, write=FSetSSLCertEncoded }; __property DynamicArray<Byte> SSLCertEncodedB = { read=FSSLCertEncodedB, write=FSetSSLCertEncodedB };
Default Value
""
Remarks
This is the certificate (PEM/Base64 encoded). This property is used to assign a specific certificate. The SSLCertStore and SSLCertSubject properties also may be used to specify a certificate.
When SSLCertEncoded is set, a search is initiated in the current SSLCertStore for the private key of the certificate. If the key is found, SSLCertSubject is updated to reflect the full subject of the selected certificate; otherwise, SSLCertSubject is set to an empty string.
This property is not available at design time.
Data Type
Byte Array
SSLCertStore Property (RADIUS Component)
This is the name of the certificate store for the client certificate.
Syntax
__property String SSLCertStore = { read=FSSLCertStore, write=FSetSSLCertStore }; __property DynamicArray<Byte> SSLCertStoreB = { read=FSSLCertStoreB, write=FSetSSLCertStoreB };
Default Value
"MY"
Remarks
This is the name of the certificate store for the client certificate.
The SSLCertStoreType property denotes the type of the certificate store specified by SSLCertStore. If the store is password protected, specify the password in SSLCertStorePassword.
SSLCertStore is used in conjunction with the SSLCertSubject property to specify client certificates. If SSLCertStore has a value, and SSLCertSubject or SSLCertEncoded is set, a search for a certificate is initiated. Please see the SSLCertSubject property for details.
Designations of certificate stores are platform dependent.
The following designations are the most common User and Machine certificate stores in Windows:
MY | A certificate store holding personal certificates with their associated private keys. |
CA | Certifying authority certificates. |
ROOT | Root certificates. |
When the certificate store type is PFXFile, this property must be set to the name of the file. When the type is PFXBlob, the property must be set to the binary contents of a PFX file (i.e., PKCS#12 certificate store).
Data Type
Byte Array
SSLCertStorePassword Property (RADIUS Component)
If the type of certificate store requires a password, this property is used to specify the password needed to open the certificate store.
Syntax
__property String SSLCertStorePassword = { read=FSSLCertStorePassword, write=FSetSSLCertStorePassword };
Default Value
""
Remarks
If the type of certificate store requires a password, this property is used to specify the password needed to open the certificate store.
Data Type
String
SSLCertStoreType Property (RADIUS Component)
This is the type of certificate store for this certificate.
Syntax
__property TipaRADIUSSSLCertStoreTypes SSLCertStoreType = { read=FSSLCertStoreType, write=FSetSSLCertStoreType };
enum TipaRADIUSSSLCertStoreTypes { cstUser=0, cstMachine=1, cstPFXFile=2, cstPFXBlob=3, cstJKSFile=4, cstJKSBlob=5, cstPEMKeyFile=6, cstPEMKeyBlob=7, cstPublicKeyFile=8, cstPublicKeyBlob=9, cstSSHPublicKeyBlob=10, cstP7BFile=11, cstP7BBlob=12, cstSSHPublicKeyFile=13, cstPPKFile=14, cstPPKBlob=15, cstXMLFile=16, cstXMLBlob=17, cstJWKFile=18, cstJWKBlob=19, cstSecurityKey=20, cstBCFKSFile=21, cstBCFKSBlob=22, cstPKCS11=23, cstAuto=99 };
Default Value
cstUser
Remarks
This is the type of certificate store for this certificate.
The component supports both public and private keys in a variety of formats. When the cstAuto value is used, the component will automatically determine the type. This property can take one of the following values:
0 (cstUser - default) | For Windows, this specifies that the certificate store is a certificate store owned by the current user.
Note: This store type is not available in Java. |
1 (cstMachine) | For Windows, this specifies that the certificate store is a machine store.
Note: This store type is not available in Java. |
2 (cstPFXFile) | The certificate store is the name of a PFX (PKCS#12) file containing certificates. |
3 (cstPFXBlob) | The certificate store is a string (binary or Base64-encoded) representing a certificate store in PFX (PKCS#12) format. |
4 (cstJKSFile) | The certificate store is the name of a Java Key Store (JKS) file containing certificates.
Note: This store type is only available in Java. |
5 (cstJKSBlob) | The certificate store is a string (binary or Base64-encoded) representing a certificate store in Java Key Store (JKS) format.
Note: this store type is only available in Java. |
6 (cstPEMKeyFile) | The certificate store is the name of a PEM-encoded file that contains a private key and an optional certificate. |
7 (cstPEMKeyBlob) | The certificate store is a string (binary or Base64-encoded) that contains a private key and an optional certificate. |
8 (cstPublicKeyFile) | The certificate store is the name of a file that contains a PEM- or DER-encoded public key certificate. |
9 (cstPublicKeyBlob) | The certificate store is a string (binary or Base64-encoded) that contains a PEM- or DER-encoded public key certificate. |
10 (cstSSHPublicKeyBlob) | The certificate store is a string (binary or Base64-encoded) that contains an SSH-style public key. |
11 (cstP7BFile) | The certificate store is the name of a PKCS#7 file containing certificates. |
12 (cstP7BBlob) | The certificate store is a string (binary) representing a certificate store in PKCS#7 format. |
13 (cstSSHPublicKeyFile) | The certificate store is the name of a file that contains an SSH-style public key. |
14 (cstPPKFile) | The certificate store is the name of a file that contains a PPK (PuTTY Private Key). |
15 (cstPPKBlob) | The certificate store is a string (binary) that contains a PPK (PuTTY Private Key). |
16 (cstXMLFile) | The certificate store is the name of a file that contains a certificate in XML format. |
17 (cstXMLBlob) | The certificate store is a string that contains a certificate in XML format. |
18 (cstJWKFile) | The certificate store is the name of a file that contains a JWK (JSON Web Key). |
19 (cstJWKBlob) | The certificate store is a string that contains a JWK (JSON Web Key). |
21 (cstBCFKSFile) | The certificate store is the name of a file that contains a BCFKS (Bouncy Castle FIPS Key Store).
Note: This store type is only available in Java and .NET. |
22 (cstBCFKSBlob) | The certificate store is a string (binary or Base64-encoded) representing a certificate store in BCFKS (Bouncy Castle FIPS Key Store) format.
Note: This store type is only available in Java and .NET. |
23 (cstPKCS11) | The certificate is present on a physical security key accessible via a PKCS#11 interface.
To use a security key, the necessary data must first be collected using the CertMgr component. The ListStoreCertificates method may be called after setting CertStoreType to cstPKCS11, CertStorePassword to the PIN, and CertStore to the full path of the PKCS#11 DLL. The certificate information returned in the CertList event's CertEncoded parameter may be saved for later use. When using a certificate, pass the previously saved security key information as the SSLCertStore and set SSLCertStorePassword to the PIN. Code Example. SSH Authentication with Security Key:
|
99 (cstAuto) | The store type is automatically detected from the input data. This setting may be used with both public and private keys and can detect any of the supported formats automatically. |
Data Type
Integer
SSLCertSubject Property (RADIUS Component)
This is the subject of the certificate used for client authentication.
Syntax
__property String SSLCertSubject = { read=FSSLCertSubject, write=FSetSSLCertSubject };
Default Value
""
Remarks
This is the subject of the certificate used for client authentication.
This property must be set after all other certificate properties are set. When this property is set, a search is performed in the current certificate store to locate a certificate with a matching subject.
If a matching certificate is found, the property is set to the full subject of the matching certificate.
If an exact match is not found, the store is searched for subjects containing the value of the property.
If a match is still not found, the property is set to an empty string, and no certificate is selected.
The special value "*" picks a random certificate in the certificate store.
The certificate subject is a comma-separated list of distinguished name fields and values. For instance, "CN=www.server.com, OU=test, C=US, E=support@nsoftware.com". Common fields and their meanings are as follows:
Field | Meaning |
CN | Common Name. This is commonly a hostname like www.server.com. |
O | Organization |
OU | Organizational Unit |
L | Locality |
S | State |
C | Country |
E | Email Address |
If a field value contains a comma, it must be quoted.
Data Type
String
Timeout Property (RADIUS Component)
A timeout for the component.
Syntax
__property int Timeout = { read=FTimeout, write=FSetTimeout };
Default Value
60
Remarks
If the Timeout property is set to 0, all operations will run uninterrupted until successful completion or an error condition is encountered.
If Timeout is set to a positive value, the component will wait for the operation to complete before returning control.
The component will use DoEvents to enter an efficient wait loop during any potential waiting period, making sure that all system events are processed immediately as they arrive. This ensures that the host application does not "freeze" and remains responsive.
If Timeout expires, and the operation is not yet complete, the component raises an exception.
Please note that by default, all timeouts are inactivity timeouts, i.e. the timeout period is extended by Timeout seconds when any amount of data is successfully sent or received.
The default value for the Timeout property is 60 seconds.
Data Type
Integer
User Property (RADIUS Component)
The name of the user to authenticate.
Syntax
__property String User = { read=FUser, write=FSetUser };
Default Value
""
Remarks
This property holds the name of the user to authenticate.
Data Type
String
Authenticate Method (RADIUS Component)
Authenticates the user.
Syntax
void __fastcall Authenticate();
Remarks
This method authenticates the user with the RADIUS server.
If authentication is successful this method returns without error. If authentication fails this method will throw an exception.
This following properties are applicable when calling this method:
- User (required)
- Password (required)
- SharedSecret (required)
- RemoteHost (required)
- RemotePort
- Timeout
Config Method (RADIUS Component)
Sets or retrieves a configuration setting.
Syntax
String __fastcall Config(String ConfigurationString);
Remarks
Config is a generic method available in every component. It is used to set and retrieve configuration settings for the component.
These settings are similar in functionality to properties, but they are rarely used. In order to avoid "polluting" the property namespace of the component, access to these internal properties is provided through the Config method.
To set a configuration setting named PROPERTY, you must call Config("PROPERTY=VALUE"), where VALUE is the value of the setting expressed as a string. For boolean values, use the strings "True", "False", "0", "1", "Yes", or "No" (case does not matter).
To read (query) the value of a configuration setting, you must call Config("PROPERTY"). The value will be returned as a string.
DoEvents Method (RADIUS Component)
Processes events from the internal message queue.
Syntax
void __fastcall DoEvents();
Remarks
When DoEvents is called, the component processes any available events. If no events are available, it waits for a preset period of time, and then returns.
Interrupt Method (RADIUS Component)
Interrupt the current method.
Syntax
void __fastcall Interrupt();
Remarks
If there is no method in progress, Interrupt simply returns, doing nothing.
Reset Method (RADIUS Component)
Resets the component properties to their default values.
Syntax
void __fastcall Reset();
Remarks
This method resets the properties to their default values.
Attribute Event (RADIUS Component)
Fires for each attribute that is received.
Syntax
typedef struct { int AttributeType; String Name; String Value; DynamicArray<Byte> ValueB; } TipaRADIUSAttributeEventParams; typedef void __fastcall (__closure *TipaRADIUSAttributeEvent)(System::TObject* Sender, TipaRADIUSAttributeEventParams *e); __property TipaRADIUSAttributeEvent OnAttribute = { read=FOnAttribute, write=FOnAttribute };
Remarks
This event fires once for each attribute that is received. This will fire when calling Authenticate.
AttributeType is the attribute type. Common values are:
AttributeType | Meaning |
1 | User-Name |
2 | User-Password |
3 | CHAP-Password |
4 | NAS-IP-Address |
5 | NAS-Port |
6 | Service-Type |
7 | Framed-Protocol |
8 | Framed-IP-Address |
9 | Framed-IP-Netmask |
10 | Framed-Routing |
11 | Filter-Id |
12 | Framed-MTU |
13 | Framed-Compression |
14 | Login-IP-Host |
15 | Login-Service |
16 | Login-TCP-Port |
17 | (unassigned) |
18 | Reply-Message |
19 | Callback-Number |
20 | Callback-Id |
21 | (unassigned) |
22 | Framed-Route |
23 | Framed-IPX-Network |
24 | State |
25 | Class |
26 | Vendor-Specific |
27 | Session-Timeout |
28 | Idle-Timeout |
29 | Termination-Action |
30 | Called-Station-Id |
31 | Calling-Station-Id |
32 | NAS-Identifier |
33 | Proxy-State |
34 | Login-LAT-Service |
35 | Login-LAT-Node |
36 | Login-LAT-Group |
37 | Framed-AppleTalk-Link |
38 | Framed-AppleTalk-Network |
39 | Framed-AppleTalk-Zone |
40-59 | Reserved for accounting |
60 | CHAP-Challenge |
61 | NAS-Port-Type |
62 | Port-Limit |
63 | Login-LAT-Port |
Name is the text description of the attribute.
Value is the value of the attribute.
Error Event (RADIUS Component)
Information about errors during data delivery.
Syntax
typedef struct { int ErrorCode; String Description; } TipaRADIUSErrorEventParams; typedef void __fastcall (__closure *TipaRADIUSErrorEvent)(System::TObject* Sender, TipaRADIUSErrorEventParams *e); __property TipaRADIUSErrorEvent OnError = { read=FOnError, write=FOnError };
Remarks
The Error event is fired in case of exceptional conditions during message processing. Normally the component raises an exception.
The ErrorCode parameter contains an error code, and the Description parameter contains a textual description of the error. For a list of valid error codes and their descriptions, please refer to the Error Codes section.
Log Event (RADIUS Component)
Fires with log information during processing.
Syntax
typedef struct { int LogLevel; String Message; String LogType; } TipaRADIUSLogEventParams; typedef void __fastcall (__closure *TipaRADIUSLogEvent)(System::TObject* Sender, TipaRADIUSLogEventParams *e); __property TipaRADIUSLogEvent OnLog = { read=FOnLog, write=FOnLog };
Remarks
This event fires during processing with log information. The level of detail that is logged is controlled via the LogLevel.
LogLevel indicates the level of message. Possible values are:
0 (None) | No events are logged. |
1 (Info - default) | Informational events are logged. |
2 (Verbose) | Detailed data is logged. |
3 (Debug) | Debug data is logged. |
LogMessage is the log entry.
LogType indicates the type of log. Possible values are:
- "REQUEST"
- "RESPONSE"
SSLServerAuthentication Event (RADIUS Component)
Fired after the server presents its certificate to the client.
Syntax
typedef struct { String CertEncoded; DynamicArray<Byte> CertEncodedB; String CertSubject; String CertIssuer; String Status; bool Accept; } TipaRADIUSSSLServerAuthenticationEventParams; typedef void __fastcall (__closure *TipaRADIUSSSLServerAuthenticationEvent)(System::TObject* Sender, TipaRADIUSSSLServerAuthenticationEventParams *e); __property TipaRADIUSSSLServerAuthenticationEvent OnSSLServerAuthentication = { read=FOnSSLServerAuthentication, write=FOnSSLServerAuthentication };
Remarks
During this event, the client can decide whether or not to continue with the connection process. The Accept parameter is a recommendation on whether to continue or close the connection. This is just a suggestion: application software must use its own logic to determine whether or not to continue.
When Accept is False, Status shows why the verification failed (otherwise, Status contains the string OK). If it is decided to continue, you can override and accept the certificate by setting the Accept parameter to True.
SSLStatus Event (RADIUS Component)
Shows the progress of the secure connection.
Syntax
typedef struct { String Message; } TipaRADIUSSSLStatusEventParams; typedef void __fastcall (__closure *TipaRADIUSSSLStatusEvent)(System::TObject* Sender, TipaRADIUSSSLStatusEventParams *e); __property TipaRADIUSSSLStatusEvent OnSSLStatus = { read=FOnSSLStatus, write=FOnSSLStatus };
Remarks
The event is fired for informational and logging purposes only. This event tracks the progress of the connection.
Config Settings (RADIUS Component)
The component accepts one or more of the following configuration settings. Configuration settings are similar in functionality to properties, but they are rarely used. In order to avoid "polluting" the property namespace of the component, access to these internal properties is provided through the Config method.RADIUS Config Settings
This setting specifies whether the Message-Authenticator attribute is sent. The default value is true. In most cases there is no reason to set this to false. When true, authentication can succeed whether the RADIUS server requires the Message-Authenticator attribute or not.
UDP Config Settings
If this is set to true, the component will capture the IP packet information.
The default value for this setting is False.
Note: This setting is only available in Windows.
This setting specifies whether a hostname is resolved immediately when RemoteHost is set. If true the component will resolve the hostname and the IP address will be present in the RemoteHost property. If false, the hostname is not resolved until needed by the component when a method to connect or send data is called. If desired, ResolveRemoteHost may called to manually resolve the value in RemoteHost at any time.
The default value is false.
If CaptureIPPacketInfo is set to true, then this will be populated with the packet's destination address when a packet is received. This information will be accessible in the DataIn event.
Note: This setting is only available in Windows.
When set to True, packets sent by the component will have the Don't Fragment flag set. The default value is False.
The LocalHost setting contains the name of the local host as obtained by the gethostname() system call, or if the user has assigned an IP address, the value of that address.
In multi-homed hosts (machines with more than one IP interface) setting LocalHost to the value of an interface will make the component initiate connections (or accept in the case of server components) only through that interface.
If the component is connected, the LocalHost setting shows the IP address of the interface through which the connection is made in internet dotted format (aaa.bbb.ccc.ddd). In most cases, this is the address of the local host, except for multi-homed hosts (machines with more than one IP interface).
This must be set before a connection is attempted. It instructs the component to bind to a specific port (or communication endpoint) in the local machine.
Setting this to 0 (default) enables the system to choose a port at random. The chosen port will be shown by LocalPort after the connection is established.
LocalPort cannot be changed once a connection is made. Any attempt to set this when a connection is active will generate an error.
This; setting is useful when trying to connect to services that require a trusted port in the client side. An example is the remote shell (rsh) service in UNIX systems.
This setting specifies the maximum size of the datagrams that the component will accept without truncation.
UseConnection must be True to use this setting. This option allows you to specify an arbitrary DSCP value between 0 and 63. The default is 0. When set to the default value the component will not set a DSCP value.
Note: This setting uses the qWAVE API is only available on Windows 7, Windows Server 2008 R2, and later.
UseConnection must be True to use this setting. You may specify either the text or integer values: BestEffort (0), Background (1), ExcellentEffort (2), AudioVideo (3), Voice (4), and Control (5).
Note: This setting uses the qWAVE API which is only available on Windows Vista and Windows Server 2008 or above.
Note: QOSTrafficType must be set before setting Active to true.
This option must be set before the component is activated through the Active property or it will have no effect.
The default value for this setting is False.
UseConnection specifies whether the component should use a connected socket or not. The connection is defined as an association in between the local address/port and the remote address/port. As such, this is not a connection in the traditional TCP sense. What it means is only that the component will send and receive data only to and from the specified destination.
The default value for this setting is False.
By default, the component expects an IPv4 address for local and remote host properties, and will create an IPv4 socket. To use IPv6 instead, set this to True.
Socket Config Settings
If AbsoluteTimeout is set to True, any method which does not complete within Timeout seconds will be aborted. By default, AbsoluteTimeout is False, and the timeout is an inactivity timeout.
Note: This option is not valid for UDP ports.
When the firewall is a tunneling proxy, use this property to send custom (additional) headers to the firewall (e.g. headers for custom authentication schemes).
This is the size of an internal queue in the TCP/IP stack. You can increase or decrease its size depending on the amount of data that you will be receiving. Increasing the value of the InBufferSize setting can provide significant improvements in performance in some cases.
Some TCP/IP implementations do not support variable buffer sizes. If that is the case, when the component is activated the InBufferSize reverts to its defined size. The same happens if you attempt to make it too large or too small.
This is the size of an internal queue in the TCP/IP stack. You can increase or decrease its size depending on the amount of data that you will be sending. Increasing the value of the OutBufferSize setting can provide significant improvements in performance in some cases.
Some TCP/IP implementations do not support variable buffer sizes. If that is the case, when the component is activated the OutBufferSize reverts to its defined size. The same happens if you attempt to make it too large or too small.
Base Config Settings
When queried, this setting will return a string containing information about the product's build.
The default code page is Unicode UTF-8 (65001).
The following is a list of valid code page identifiers:
Identifier | Name |
037 | IBM EBCDIC - U.S./Canada |
437 | OEM - United States |
500 | IBM EBCDIC - International |
708 | Arabic - ASMO 708 |
709 | Arabic - ASMO 449+, BCON V4 |
710 | Arabic - Transparent Arabic |
720 | Arabic - Transparent ASMO |
737 | OEM - Greek (formerly 437G) |
775 | OEM - Baltic |
850 | OEM - Multilingual Latin I |
852 | OEM - Latin II |
855 | OEM - Cyrillic (primarily Russian) |
857 | OEM - Turkish |
858 | OEM - Multilingual Latin I + Euro symbol |
860 | OEM - Portuguese |
861 | OEM - Icelandic |
862 | OEM - Hebrew |
863 | OEM - Canadian-French |
864 | OEM - Arabic |
865 | OEM - Nordic |
866 | OEM - Russian |
869 | OEM - Modern Greek |
870 | IBM EBCDIC - Multilingual/ROECE (Latin-2) |
874 | ANSI/OEM - Thai (same as 28605, ISO 8859-15) |
875 | IBM EBCDIC - Modern Greek |
932 | ANSI/OEM - Japanese, Shift-JIS |
936 | ANSI/OEM - Simplified Chinese (PRC, Singapore) |
949 | ANSI/OEM - Korean (Unified Hangul Code) |
950 | ANSI/OEM - Traditional Chinese (Taiwan; Hong Kong SAR, PRC) |
1026 | IBM EBCDIC - Turkish (Latin-5) |
1047 | IBM EBCDIC - Latin 1/Open System |
1140 | IBM EBCDIC - U.S./Canada (037 + Euro symbol) |
1141 | IBM EBCDIC - Germany (20273 + Euro symbol) |
1142 | IBM EBCDIC - Denmark/Norway (20277 + Euro symbol) |
1143 | IBM EBCDIC - Finland/Sweden (20278 + Euro symbol) |
1144 | IBM EBCDIC - Italy (20280 + Euro symbol) |
1145 | IBM EBCDIC - Latin America/Spain (20284 + Euro symbol) |
1146 | IBM EBCDIC - United Kingdom (20285 + Euro symbol) |
1147 | IBM EBCDIC - France (20297 + Euro symbol) |
1148 | IBM EBCDIC - International (500 + Euro symbol) |
1149 | IBM EBCDIC - Icelandic (20871 + Euro symbol) |
1200 | Unicode UCS-2 Little-Endian (BMP of ISO 10646) |
1201 | Unicode UCS-2 Big-Endian |
1250 | ANSI - Central European |
1251 | ANSI - Cyrillic |
1252 | ANSI - Latin I |
1253 | ANSI - Greek |
1254 | ANSI - Turkish |
1255 | ANSI - Hebrew |
1256 | ANSI - Arabic |
1257 | ANSI - Baltic |
1258 | ANSI/OEM - Vietnamese |
1361 | Korean (Johab) |
10000 | MAC - Roman |
10001 | MAC - Japanese |
10002 | MAC - Traditional Chinese (Big5) |
10003 | MAC - Korean |
10004 | MAC - Arabic |
10005 | MAC - Hebrew |
10006 | MAC - Greek I |
10007 | MAC - Cyrillic |
10008 | MAC - Simplified Chinese (GB 2312) |
10010 | MAC - Romania |
10017 | MAC - Ukraine |
10021 | MAC - Thai |
10029 | MAC - Latin II |
10079 | MAC - Icelandic |
10081 | MAC - Turkish |
10082 | MAC - Croatia |
12000 | Unicode UCS-4 Little-Endian |
12001 | Unicode UCS-4 Big-Endian |
20000 | CNS - Taiwan |
20001 | TCA - Taiwan |
20002 | Eten - Taiwan |
20003 | IBM5550 - Taiwan |
20004 | TeleText - Taiwan |
20005 | Wang - Taiwan |
20105 | IA5 IRV International Alphabet No. 5 (7-bit) |
20106 | IA5 German (7-bit) |
20107 | IA5 Swedish (7-bit) |
20108 | IA5 Norwegian (7-bit) |
20127 | US-ASCII (7-bit) |
20261 | T.61 |
20269 | ISO 6937 Non-Spacing Accent |
20273 | IBM EBCDIC - Germany |
20277 | IBM EBCDIC - Denmark/Norway |
20278 | IBM EBCDIC - Finland/Sweden |
20280 | IBM EBCDIC - Italy |
20284 | IBM EBCDIC - Latin America/Spain |
20285 | IBM EBCDIC - United Kingdom |
20290 | IBM EBCDIC - Japanese Katakana Extended |
20297 | IBM EBCDIC - France |
20420 | IBM EBCDIC - Arabic |
20423 | IBM EBCDIC - Greek |
20424 | IBM EBCDIC - Hebrew |
20833 | IBM EBCDIC - Korean Extended |
20838 | IBM EBCDIC - Thai |
20866 | Russian - KOI8-R |
20871 | IBM EBCDIC - Icelandic |
20880 | IBM EBCDIC - Cyrillic (Russian) |
20905 | IBM EBCDIC - Turkish |
20924 | IBM EBCDIC - Latin-1/Open System (1047 + Euro symbol) |
20932 | JIS X 0208-1990 & 0121-1990 |
20936 | Simplified Chinese (GB2312) |
21025 | IBM EBCDIC - Cyrillic (Serbian, Bulgarian) |
21027 | Extended Alpha Lowercase |
21866 | Ukrainian (KOI8-U) |
28591 | ISO 8859-1 Latin I |
28592 | ISO 8859-2 Central Europe |
28593 | ISO 8859-3 Latin 3 |
28594 | ISO 8859-4 Baltic |
28595 | ISO 8859-5 Cyrillic |
28596 | ISO 8859-6 Arabic |
28597 | ISO 8859-7 Greek |
28598 | ISO 8859-8 Hebrew |
28599 | ISO 8859-9 Latin 5 |
28605 | ISO 8859-15 Latin 9 |
29001 | Europa 3 |
38598 | ISO 8859-8 Hebrew |
50220 | ISO 2022 Japanese with no halfwidth Katakana |
50221 | ISO 2022 Japanese with halfwidth Katakana |
50222 | ISO 2022 Japanese JIS X 0201-1989 |
50225 | ISO 2022 Korean |
50227 | ISO 2022 Simplified Chinese |
50229 | ISO 2022 Traditional Chinese |
50930 | Japanese (Katakana) Extended |
50931 | US/Canada and Japanese |
50933 | Korean Extended and Korean |
50935 | Simplified Chinese Extended and Simplified Chinese |
50936 | Simplified Chinese |
50937 | US/Canada and Traditional Chinese |
50939 | Japanese (Latin) Extended and Japanese |
51932 | EUC - Japanese |
51936 | EUC - Simplified Chinese |
51949 | EUC - Korean |
51950 | EUC - Traditional Chinese |
52936 | HZ-GB2312 Simplified Chinese |
54936 | Windows XP: GB18030 Simplified Chinese (4 Byte) |
57002 | ISCII Devanagari |
57003 | ISCII Bengali |
57004 | ISCII Tamil |
57005 | ISCII Telugu |
57006 | ISCII Assamese |
57007 | ISCII Oriya |
57008 | ISCII Kannada |
57009 | ISCII Malayalam |
57010 | ISCII Gujarati |
57011 | ISCII Punjabi |
65000 | Unicode UTF-7 |
65001 | Unicode UTF-8 |
Identifier | Name |
1 | ASCII |
2 | NEXTSTEP |
3 | JapaneseEUC |
4 | UTF8 |
5 | ISOLatin1 |
6 | Symbol |
7 | NonLossyASCII |
8 | ShiftJIS |
9 | ISOLatin2 |
10 | Unicode |
11 | WindowsCP1251 |
12 | WindowsCP1252 |
13 | WindowsCP1253 |
14 | WindowsCP1254 |
15 | WindowsCP1250 |
21 | ISO2022JP |
30 | MacOSRoman |
10 | UTF16String |
0x90000100 | UTF16BigEndian |
0x94000100 | UTF16LittleEndian |
0x8c000100 | UTF32String |
0x98000100 | UTF32BigEndian |
0x9c000100 | UTF32LittleEndian |
65536 | Proprietary |
When queried, this setting will return a string containing information about the license this instance of a component is using. It will return the following information:
- Product: The product the license is for.
- Product Key: The key the license was generated from.
- License Source: Where the license was found (e.g., RuntimeLicense, License File).
- License Type: The type of license installed (e.g., Royalty Free, Single Server).
- Last Valid Build: The last valid build number for which the license will work.
In certain circumstances it may be beneficial to mask sensitive data, like passwords, in log messages. Set this to true to mask sensitive data. The default is true.
This setting only works on these components: AS3Receiver, AS3Sender, Atom, Client(3DS), FTP, FTPServer, IMAP, OFTPClient, SSHClient, SCP, Server(3DS), Sexec, SFTP, SFTPServer, SSHServer, TCPClient, TCPServer.
When set to true, the component will utilize the underlying operating system's certified APIs. Java editions, regardless of OS, utilize Bouncy Castle FIPS, while all the other Windows editions make use of Microsoft security libraries.
FIPS mode can be enabled by setting the UseFIPSCompliantAPI configuration setting to true. This is a static setting which applies to all instances of all components of the toolkit within the process. It is recommended to enable or disable this setting once before the component has been used to establish a connection. Enabling FIPS while an instance of the component is active and connected may result in unexpected behavior.
For more details please see the FIPS 140-2 Compliance article.
Note: This setting is only applicable on Windows.
Note: Enabling FIPS-compliance requires a special license; please contact sales@nsoftware.com for details.
When set to false, the component will use the system security libraries by default to perform cryptographic functions where applicable.
Setting this configuration setting to true tells the component to use the internal implementation instead of using the system security libraries.
This setting is set to false by default on all platforms.
Trappable Errors (RADIUS Component)
RADIUS Errors
900 Busy performing other action. | |
901 Received invalid response. | |
902 Received rejected response. | |
903 Received challenge response. |
UDP Errors
104 UDP is already Active. | |
106 You cannot change the LocalPort while the component is Active. | |
107 You cannot change the LocalHost at this time. A connection is in progress. | |
109 The component must be Active for this operation. | |
112 Cannot change MaxPacketSize while the component is Active. | |
113 Cannot change ShareLocalPort option while the component is Active. | |
114 Cannot change RemoteHost when UseConnection is set and the component Active. | |
115 Cannot change RemotePort when UseConnection is set and the component is Active. | |
116 RemotePort can't be zero when UseConnection is set. Please specify a valid service port number. | |
117 Cannot change UseConnection while the component is Active. | |
118 Message can't be longer than MaxPacketSize. | |
119 Message too short. | |
434 Unable to convert string to selected CodePage |
TCP/IP Errors
10004 [10004] Interrupted system call. | |
10009 [10009] Bad file number. | |
10013 [10013] Access denied. | |
10014 [10014] Bad address. | |
10022 [10022] Invalid argument. | |
10024 [10024] Too many open files. | |
10035 [10035] Operation would block. | |
10036 [10036] Operation now in progress. | |
10037 [10037] Operation already in progress. | |
10038 [10038] Socket operation on non-socket. | |
10039 [10039] Destination address required. | |
10040 [10040] Message too long. | |
10041 [10041] Protocol wrong type for socket. | |
10042 [10042] Bad protocol option. | |
10043 [10043] Protocol not supported. | |
10044 [10044] Socket type not supported. | |
10045 [10045] Operation not supported on socket. | |
10046 [10046] Protocol family not supported. | |
10047 [10047] Address family not supported by protocol family. | |
10048 [10048] Address already in use. | |
10049 [10049] Can't assign requested address. | |
10050 [10050] Network is down. | |
10051 [10051] Network is unreachable. | |
10052 [10052] Net dropped connection or reset. | |
10053 [10053] Software caused connection abort. | |
10054 [10054] Connection reset by peer. | |
10055 [10055] No buffer space available. | |
10056 [10056] Socket is already connected. | |
10057 [10057] Socket is not connected. | |
10058 [10058] Can't send after socket shutdown. | |
10059 [10059] Too many references, can't splice. | |
10060 [10060] Connection timed out. | |
10061 [10061] Connection refused. | |
10062 [10062] Too many levels of symbolic links. | |
10063 [10063] File name too long. | |
10064 [10064] Host is down. | |
10065 [10065] No route to host. | |
10066 [10066] Directory not empty | |
10067 [10067] Too many processes. | |
10068 [10068] Too many users. | |
10069 [10069] Disc Quota Exceeded. | |
10070 [10070] Stale NFS file handle. | |
10071 [10071] Too many levels of remote in path. | |
10091 [10091] Network subsystem is unavailable. | |
10092 [10092] WINSOCK DLL Version out of range. | |
10093 [10093] Winsock not loaded yet. | |
11001 [11001] Host not found. | |
11002 [11002] Non-authoritative 'Host not found' (try again or check DNS setup). | |
11003 [11003] Non-recoverable errors: FORMERR, REFUSED, NOTIMP. | |
11004 [11004] Valid name, no data record (check DNS setup). |