SAML Class

Properties   Methods   Events   Config Settings   Errors  

The SAML class is used to obtain security tokens and assertions.

Syntax

SAML

Remarks

The SAML class provides an easy-to-use interface to obtain security tokens and assertions. The class can also be used to parse assertions and inspect the claims within.

The component has built in support for working with Microsoft SharePoint Online and Microsoft Dynamics CRM Online. This support means only a minimum of information needs to be supplied to the component.

Microsoft SharePoint Online and Dynamics CRM Online

To begin working with SharePoint Online or Dynamics CRM Online first set the AuthMode to the appropriate value. The class will automatically populate several properties to known values. Set the User, Password, ApplicationURN properties and call GetSecurityToken. For instance:

component.AuthMode = SAMLAuthModes.amDynamicsCRM; //dynamic crm component.User = "user@mycrm.onmicrosoft.com"; component.Password = "password"; component.ApplicationURN = "urn:crmapac:dynamics.com"; component.GetSecurityToken(); After calling GetSecurityToken the SecurityTokenXML property will be populated.

ADFS and Others

When working with ADFS or another Security Token Service (STS) the GetAssertion method may be used to obtain an assertion. To begin set AuthMode to either amADFS or amCustom. Then set LocalSTS, User, Password, and ApplicationURN. For instance:

component.AuthMode = SAMLAuthModes.amADFS; component.User = "administrator"; component.Password = "admin"; component.LocalSTS = "https://adfs.contoso.com"; component.ApplicationURN = "https://fsweb.contoso.com/ClaimsAwareWebAppWithManagedSTS/"; component.GetAssertion(); If the assertion is signed the class will use the certificate specified in SignerCert to verify the signature. If SignerCert is not set the class will attempt to parse the certificate present in the assertion to perform verification.

After the assertion is parsed and the signature is verified (if present) the following properties will be populated:

Parsing an Assertion

The class may also be used to parse an existing assertion without contacting a STS. To parse an existing assertion call ParseAssertion with the assertion XML. If the assertion is signed the class will use the certificate specified in SignerCert to verify the signature. If SignerCert is not set the class will attempt to parse the certificate present in the assertion to perform verification.

After the assertion is parsed and the signature is verified (if present) the following properties will be populated:

Property List


The following is the full list of the properties of the class with short descriptions. Click on the links for further details.

ApplicationURNThe application's Uniform Resource Name (URN).
AssertionIdThe assertion id.
AssertionIssueInstantThe time in UTC that the assertion was issued.
AssertionIssuerThe assertion issuer.
AssertionNotBeforeThe date on which the assertion becomes valid.
AssertionNotOnOrAfterThe time at which the assertion expires.
AssertionSubjectThe subject of the assertion.
AssertionVersionThe version of the assertion.
AssertionXMLThe assertion XML.
AuthModeThe authentication mode.
CertEncodedThis is the certificate (PEM/base64 encoded).
CertStoreThis is the name of the certificate store for the client certificate.
CertStorePasswordIf the type of certificate store requires a password, this property is used to specify the password needed to open the certificate store.
CertStoreTypeThis is the type of certificate store for this certificate.
CertSubjectThis is the subject of the certificate used for client authentication.
ClaimCountThe number of records in the Claim arrays.
ClaimIssuerNameThe name of the issuer.
ClaimOriginalIssuerThe name of the original issuer.
ClaimPropertyCountThe number of properties in the claim.
ClaimPropertyIndexSelects a property.
ClaimPropertyNameThe name of the property.
ClaimPropertyValueThe value of the property.
ClaimTypeNameThe type name of the claim.
ClaimValueThe value of the claim.
ClaimValueTypeThe type of value.
FederationSTSThe URL of the federation Security Token Service (STS).
FederationURNThe federation Uniform Resource Name (URN).
LocalSTSThe local Security Token Service (STS).
PasswordThe user's password.
ProxyAuthSchemeThis property is used to tell the class which type of authorization to perform when connecting to the proxy.
ProxyAutoDetectThis property tells the class whether or not to automatically detect and use proxy system settings, if available.
ProxyPasswordThis property contains a password if authentication is to be used for the proxy.
ProxyPortThis property contains the Transmission Control Protocol (TCP) port for the proxy Server (default 80).
ProxyServerIf a proxy Server is given, then the HTTP request is sent to the proxy instead of the server otherwise specified.
ProxySSLThis property determines when to use a Secure Sockets Layer (SSL) for the connection to the proxy.
ProxyUserThis property contains a user name, if authentication is to be used for the proxy.
SecurityTokenXMLThe security token XML.
SignerCertEncodedThis is the certificate (PEM/base64 encoded).
SignerCertStoreThis is the name of the certificate store for the client certificate.
SignerCertStorePasswordIf the type of certificate store requires a password, this property is used to specify the password needed to open the certificate store.
SignerCertStoreTypeThis is the type of certificate store for this certificate.
SignerCertSubjectThis is the subject of the certificate used for client authentication.
SSLAcceptServerCertEncodedThis is the certificate (PEM/base64 encoded).
SSLCertEncodedThis is the certificate (PEM/base64 encoded).
SSLCertStoreThis is the name of the certificate store for the client certificate.
SSLCertStorePasswordIf the type of certificate store requires a password, this property is used to specify the password needed to open the certificate store.
SSLCertStoreTypeThis is the type of certificate store for this certificate.
SSLCertSubjectThis is the subject of the certificate used for client authentication.
SSLProviderThis specifies the SSL/TLS implementation to use.
SSLServerCertEncodedThis is the certificate (PEM/base64 encoded).
UserThe username.
AttrCountThe number of records in the Attr arrays.
AttrNameThe Name provides the local name (without prefix) of the attribute.
AttrNamespaceAttribute namespace.
AttrPrefixAttribute prefix (if any).
AttrValueAttribute value.
XChildCountThe number of records in the XChild arrays.
XChildNameThe Name property provides the local name (without prefix) of the element.
XChildNamespaceNamespace of the element.
XChildPrefixPrefix of the element (if any).
XChildXTextThe inner text of the element.
XElementThe name of the current element.
XNamespaceThe namespace of the current element.
XParentThe parent of the current element.
XPathProvides a way to point to a specific element in the document.
XPrefixThe prefix of the current element.
XSubTreeA snapshot of the current element in the document.
XTextThe text of the current element.

Method List


The following is the full list of the methods of the class with short descriptions. Click on the links for further details.

ConfigSets or retrieves a configuration setting.
GetAssertionGets the assertion.
GetSecurityTokenGets the security token.
ParseAssertionParses the specified assertion.

Event List


The following is the full list of the events fired by the class with short descriptions. Click on the links for further details.

CharactersFired for plain text segments of the input stream.
CommentFired when a comment section is encountered.
EndElementFired when an end-element tag is encountered.
ErrorInformation about errors during data delivery.
PIFired when a processing instruction section is encountered.
SSLServerAuthenticationFired after the server presents its certificate to the client.
SSLStatusShows the progress of the secure connection.
StartElementFired when a begin-element tag is encountered in the document.

Config Settings


The following is a list of config settings for the class with short descriptions. Click on the links for further details.

AssertionAudienceCountSpecifies the number of Audience elements found in the assertion.
AssertionAudienceValue[i]Contains the audience value at the specified index.
AssertionXPathThe XPath to the assertion.
AssertionXPathThe XPath to the assertion.
DecryptAssertionWhether to decrypt the assertion.
EncryptedAssertionXPathThe XPath to the encrypted assertion.
RawRequestReturns the raw HTTP request.
RawResponseReturns the raw HTTP response.
UserRealmThe URL of a web service to determine the LocalSTS (if any).
BuildInfoInformation about the product's build.
CodePageThe system code page used for Unicode to Multibyte translations.
LicenseInfoInformation about the current license.
MaskSensitiveWhether sensitive data is masked in log messages.
ProcessIdleEventsWhether the class uses its internal event loop to process events when the main thread is idle.
SelectWaitMillisThe length of time in milliseconds the class will wait when DoEvents is called if there are no events to process.
UseFIPSCompliantAPITells the class whether or not to use FIPS certified APIs.
UseInternalSecurityAPITells the class whether or not to use the system security libraries or an internal implementation.

ApplicationURN Property (SAML Class)

The application's Uniform Resource Name (URN).

Syntax

ANSI (Cross Platform)
char* GetApplicationURN();
int SetApplicationURN(const char* lpszApplicationURN); Unicode (Windows) LPWSTR GetApplicationURN();
INT SetApplicationURN(LPCWSTR lpszApplicationURN);
char* ipworksauth_saml_getapplicationurn(void* lpObj);
int ipworksauth_saml_setapplicationurn(void* lpObj, const char* lpszApplicationURN);
QString GetApplicationURN();
int SetApplicationURN(QString qsApplicationURN);

Default Value

""

Remarks

This property specifies the application's Uniform Resource Name (URN). This must be set before calling GetAssertion or GetSecurityToken.

When AuthMode is set to amDynamicsCRM the value specified here depends on the location of the account. Valid values are:

Dynamics CRM Location URN
North America urn:crmna:dynamics.com
EMEA urn:crmemea:dynamics.com
APAC urn:crmapac:dynamics.com

When AuthMode is set to camSharePointOnline this value is typically the URL to your site. For instance: "https://mycrm.sharepoint.com".

This property is not available at design time.

Data Type

String

AssertionId Property (SAML Class)

The assertion id.

Syntax

ANSI (Cross Platform)
char* GetAssertionId();

Unicode (Windows)
LPWSTR GetAssertionId();
char* ipworksauth_saml_getassertionid(void* lpObj);
QString GetAssertionId();

Default Value

""

Remarks

This property hold the id of the assertion.

This property is read-only and not available at design time.

Data Type

String

AssertionIssueInstant Property (SAML Class)

The time in UTC that the assertion was issued.

Syntax

ANSI (Cross Platform)
char* GetAssertionIssueInstant();

Unicode (Windows)
LPWSTR GetAssertionIssueInstant();
char* ipworksauth_saml_getassertionissueinstant(void* lpObj);
QString GetAssertionIssueInstant();

Default Value

""

Remarks

This property holds the time that the assertion was issued.

This is in the standard xsd:dateTime format "YYYY-MM-DDThh:mm:ss". The date is specified in UTC.

This property is read-only and not available at design time.

Data Type

String

AssertionIssuer Property (SAML Class)

The assertion issuer.

Syntax

ANSI (Cross Platform)
char* GetAssertionIssuer();

Unicode (Windows)
LPWSTR GetAssertionIssuer();
char* ipworksauth_saml_getassertionissuer(void* lpObj);
QString GetAssertionIssuer();

Default Value

""

Remarks

This property holds the issuer of the assertion.

This property is read-only and not available at design time.

Data Type

String

AssertionNotBefore Property (SAML Class)

The date on which the assertion becomes valid.

Syntax

ANSI (Cross Platform)
char* GetAssertionNotBefore();

Unicode (Windows)
LPWSTR GetAssertionNotBefore();
char* ipworksauth_saml_getassertionnotbefore(void* lpObj);
QString GetAssertionNotBefore();

Default Value

""

Remarks

This property specifies the earliest time instant at which the assertion is valid.

This is in the standard xsd:dateTime format "YYYY-MM-DDThh:mm:ss". The date is specified in UTC.

This property is read-only and not available at design time.

Data Type

String

AssertionNotOnOrAfter Property (SAML Class)

The time at which the assertion expires.

Syntax

ANSI (Cross Platform)
char* GetAssertionNotOnOrAfter();

Unicode (Windows)
LPWSTR GetAssertionNotOnOrAfter();
char* ipworksauth_saml_getassertionnotonorafter(void* lpObj);
QString GetAssertionNotOnOrAfter();

Default Value

""

Remarks

This property specifies the time instant at which the assertion has expired.

This is in the standard xsd:dateTime format "YYYY-MM-DDThh:mm:ss". The date is specified in UTC.

This property is read-only and not available at design time.

Data Type

String

AssertionSubject Property (SAML Class)

The subject of the assertion.

Syntax

ANSI (Cross Platform)
char* GetAssertionSubject();

Unicode (Windows)
LPWSTR GetAssertionSubject();
char* ipworksauth_saml_getassertionsubject(void* lpObj);
QString GetAssertionSubject();

Default Value

""

Remarks

This property holds the subject of the assertion.

This property is read-only and not available at design time.

Data Type

String

AssertionVersion Property (SAML Class)

The version of the assertion.

Syntax

ANSI (Cross Platform)
int GetAssertionVersion();
int SetAssertionVersion(int iAssertionVersion); Unicode (Windows) INT GetAssertionVersion();
INT SetAssertionVersion(INT iAssertionVersion);

Possible Values

SV_SAMLV_11(0), 
SV_SAMLV_20(1)
int ipworksauth_saml_getassertionversion(void* lpObj);
int ipworksauth_saml_setassertionversion(void* lpObj, int iAssertionVersion);
int GetAssertionVersion();
int SetAssertionVersion(int iAssertionVersion);

Default Value

0

Remarks

This property specifies the version of the assertion. This may be set before calling GetAssertion. This will be populated after calling ParseAssertion. Possible values are:

0 (svSAMLv11 - default) SAML version 1.1
1 (svSAMLv20) SAML version 2.0

This property is not available at design time.

Data Type

Integer

AssertionXML Property (SAML Class)

The assertion XML.

Syntax

ANSI (Cross Platform)
char* GetAssertionXML();

Unicode (Windows)
LPWSTR GetAssertionXML();
char* ipworksauth_saml_getassertionxml(void* lpObj);
QString GetAssertionXML();

Default Value

""

Remarks

This property holds the returned assertion. This is populated after calling GetAssertion.

This property is read-only and not available at design time.

Data Type

String

AuthMode Property (SAML Class)

The authentication mode.

Syntax

ANSI (Cross Platform)
int GetAuthMode();
int SetAuthMode(int iAuthMode); Unicode (Windows) INT GetAuthMode();
INT SetAuthMode(INT iAuthMode);

Possible Values

CAM_SHARE_POINT_ONLINE(0), 
CAM_DYNAMICS_CRM(1),
CAM_ADFS(2),
CAM_CUSTOM(3)
int ipworksauth_saml_getauthmode(void* lpObj);
int ipworksauth_saml_setauthmode(void* lpObj, int iAuthMode);
int GetAuthMode();
int SetAuthMode(int iAuthMode);

Default Value

0

Remarks

This property specifies the authentication mode. Possible values are:

0 (camSharePointOnline - default) Microsoft SharePoint Online
1 (camDynamicsCRM) Microsoft Dynamics CRM
2 (camADFS) Active Directory Federation Services
3 (camCustom) Custom

When this property is set the component is initialized based on common settings for the selected mode.

Setting this property to 2 (camADFS) or 3 (camCustom) will clear the values in FederationURN, and FederationSTS. There is no functional difference between 2 (camADFS) and 3 (camCustom), they operate identically.

Setting this property to 0 (camSharePointOnline) or 1 (camDynamicsCRM) will populate FederationURN, and FederationSTS with known valid values for FederationURN, and FederationSTS.

The table below shows which properties are set depending on the value of this property.

AuthModeFederationURNFederationSTSUserRealm
camSharePointOnlineurn:federation:MicrosoftOnline"https://login.microsoftonline.com/RST2.srf""https://login.microsoftonline.com/GetUserRealm.srf"
camDynamicsCRMurn:federation:MicrosoftOnline"https://login.microsoftonline.com/RST2.srf""https://login.microsoftonline.com/GetUserRealm.srf"
camADFS""""""
camCustom""""""

The value 3 (camCustom) may be used with any STS as long as WS-TRUST is supported.

This property is not available at design time.

Data Type

Integer

CertEncoded Property (SAML Class)

This is the certificate (PEM/base64 encoded).

Syntax

ANSI (Cross Platform)
int GetCertEncoded(char* &lpCertEncoded, int &lenCertEncoded);
int SetCertEncoded(const char* lpCertEncoded, int lenCertEncoded); Unicode (Windows) INT GetCertEncoded(LPSTR &lpCertEncoded, INT &lenCertEncoded);
INT SetCertEncoded(LPCSTR lpCertEncoded, INT lenCertEncoded);
int ipworksauth_saml_getcertencoded(void* lpObj, char** lpCertEncoded, int* lenCertEncoded);
int ipworksauth_saml_setcertencoded(void* lpObj, const char* lpCertEncoded, int lenCertEncoded);
QByteArray GetCertEncoded();
int SetCertEncoded(QByteArray qbaCertEncoded);

Default Value

""

Remarks

This is the certificate (PEM/base64 encoded). This property is used to assign a specific certificate. The CertStore and CertSubject properties also may be used to specify a certificate.

When CertEncoded is set, a search is initiated in the current CertStore for the private key of the certificate. If the key is found, CertSubject is updated to reflect the full subject of the selected certificate; otherwise, CertSubject is set to an empty string.

This property is not available at design time.

Data Type

Binary String

CertStore Property (SAML Class)

This is the name of the certificate store for the client certificate.

Syntax

ANSI (Cross Platform)
int GetCertStore(char* &lpCertStore, int &lenCertStore);
int SetCertStore(const char* lpCertStore, int lenCertStore); Unicode (Windows) INT GetCertStore(LPSTR &lpCertStore, INT &lenCertStore);
INT SetCertStore(LPCSTR lpCertStore, INT lenCertStore);
int ipworksauth_saml_getcertstore(void* lpObj, char** lpCertStore, int* lenCertStore);
int ipworksauth_saml_setcertstore(void* lpObj, const char* lpCertStore, int lenCertStore);
QByteArray GetCertStore();
int SetCertStore(QByteArray qbaCertStore);

Default Value

"MY"

Remarks

This is the name of the certificate store for the client certificate.

The CertStoreType property denotes the type of the certificate store specified by CertStore. If the store is password protected, specify the password in CertStorePassword.

CertStore is used in conjunction with the CertSubject property to specify client certificates. If CertStore has a value, and CertSubject or CertEncoded is set, a search for a certificate is initiated. Please see the CertSubject property for details.

Designations of certificate stores are platform-dependent.

The following are designations of the most common User and Machine certificate stores in Windows:

MYA certificate store holding personal certificates with their associated private keys.
CACertifying authority certificates.
ROOTRoot 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. PKCS12 certificate store).

This property is not available at design time.

Data Type

Binary String

CertStorePassword Property (SAML Class)

If the type of certificate store requires a password, this property is used to specify the password needed to open the certificate store.

Syntax

ANSI (Cross Platform)
char* GetCertStorePassword();
int SetCertStorePassword(const char* lpszCertStorePassword); Unicode (Windows) LPWSTR GetCertStorePassword();
INT SetCertStorePassword(LPCWSTR lpszCertStorePassword);
char* ipworksauth_saml_getcertstorepassword(void* lpObj);
int ipworksauth_saml_setcertstorepassword(void* lpObj, const char* lpszCertStorePassword);
QString GetCertStorePassword();
int SetCertStorePassword(QString qsCertStorePassword);

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.

This property is not available at design time.

Data Type

String

CertStoreType Property (SAML Class)

This is the type of certificate store for this certificate.

Syntax

ANSI (Cross Platform)
int GetCertStoreType();
int SetCertStoreType(int iCertStoreType); Unicode (Windows) INT GetCertStoreType();
INT SetCertStoreType(INT iCertStoreType);

Possible Values

CST_USER(0), 
CST_MACHINE(1),
CST_PFXFILE(2),
CST_PFXBLOB(3),
CST_JKSFILE(4),
CST_JKSBLOB(5),
CST_PEMKEY_FILE(6),
CST_PEMKEY_BLOB(7),
CST_PUBLIC_KEY_FILE(8),
CST_PUBLIC_KEY_BLOB(9),
CST_SSHPUBLIC_KEY_BLOB(10),
CST_P7BFILE(11),
CST_P7BBLOB(12),
CST_SSHPUBLIC_KEY_FILE(13),
CST_PPKFILE(14),
CST_PPKBLOB(15),
CST_XMLFILE(16),
CST_XMLBLOB(17),
CST_JWKFILE(18),
CST_JWKBLOB(19),
CST_SECURITY_KEY(20),
CST_BCFKSFILE(21),
CST_BCFKSBLOB(22),
CST_PKCS11(23),
CST_AUTO(99)
int ipworksauth_saml_getcertstoretype(void* lpObj);
int ipworksauth_saml_setcertstoretype(void* lpObj, int iCertStoreType);
int GetCertStoreType();
int SetCertStoreType(int iCertStoreType);

Default Value

0

Remarks

This is the type of certificate store for this certificate.

The class supports both public and private keys in a variety of formats. When the cstAuto value is used the class 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 (PKCS12) file containing certificates.
3 (cstPFXBlob)The certificate store is a string (binary or base64-encoded) representing a certificate store in PFX (PKCS12) 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 PKCS7 file containing certificates.
12 (cstP7BBlob)The certificate store is a string (binary) representing a certificate store in PKCS7 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 PKCS11 interface.

To use a security key the necessary data must first be collected using the CertMgr class. The ListStoreCertificates method may be called after setting CertStoreType to cstPKCS11, CertStorePassword to the PIN, and CertStore to the full path of the PKCS11 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 CertStore and set CertStorePassword to the PIN.

Code Example: SSH Authentication with Security Key certmgr.CertStoreType = CertStoreTypes.cstPKCS11; certmgr.OnCertList += (s, e) => { secKeyBlob = e.CertEncoded; }; certmgr.CertStore = @"C:\Program Files\OpenSC Project\OpenSC\pkcs11\opensc-pkcs11.dll"; certmgr.CertStorePassword = "123456"; //PIN certmgr.ListStoreCertificates(); sftp.SSHCert = new Certificate(CertStoreTypes.cstPKCS11, secKeyBlob, "123456", "*"); sftp.SSHUser = "test"; sftp.SSHLogon("myhost", 22);

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.

This property is not available at design time.

Data Type

Integer

CertSubject Property (SAML Class)

This is the subject of the certificate used for client authentication.

Syntax

ANSI (Cross Platform)
char* GetCertSubject();
int SetCertSubject(const char* lpszCertSubject); Unicode (Windows) LPWSTR GetCertSubject();
INT SetCertSubject(LPCWSTR lpszCertSubject);
char* ipworksauth_saml_getcertsubject(void* lpObj);
int ipworksauth_saml_setcertsubject(void* lpObj, const char* lpszCertSubject);
QString GetCertSubject();
int SetCertSubject(QString qsCertSubject);

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 displayed below.

FieldMeaning
CNCommon Name. This is commonly a host name like www.server.com.
OOrganization
OUOrganizational Unit
LLocality
SState
CCountry
EEmail Address

If a field value contains a comma it must be quoted.

This property is not available at design time.

Data Type

String

ClaimCount Property (SAML Class)

The number of records in the Claim arrays.

Syntax

ANSI (Cross Platform)
int GetClaimCount();

Unicode (Windows)
INT GetClaimCount();
int ipworksauth_saml_getclaimcount(void* lpObj);
int GetClaimCount();

Default Value

0

Remarks

This property controls the size of the following arrays:

The array indices start at 0 and end at ClaimCount - 1.

This property is read-only and not available at design time.

Data Type

Integer

ClaimIssuerName Property (SAML Class)

The name of the issuer.

Syntax

ANSI (Cross Platform)
char* GetClaimIssuerName(int iClaimIndex);

Unicode (Windows)
LPWSTR GetClaimIssuerName(INT iClaimIndex);
char* ipworksauth_saml_getclaimissuername(void* lpObj, int claimindex);
QString GetClaimIssuerName(int iClaimIndex);

Default Value

""

Remarks

The name of the issuer. This may be a URL like "http://adfs.contoso.com/adfs/services/trust".

The ClaimIndex parameter specifies the index of the item in the array. The size of the array is controlled by the ClaimCount property.

This property is read-only and not available at design time.

Data Type

String

ClaimOriginalIssuer Property (SAML Class)

The name of the original issuer.

Syntax

ANSI (Cross Platform)
char* GetClaimOriginalIssuer(int iClaimIndex);

Unicode (Windows)
LPWSTR GetClaimOriginalIssuer(INT iClaimIndex);
char* ipworksauth_saml_getclaimoriginalissuer(void* lpObj, int claimindex);
QString GetClaimOriginalIssuer(int iClaimIndex);

Default Value

""

Remarks

The name of the original issuer. This may be a URL like "http://adfs.contoso.com/adfs/services/trust".

The ClaimIndex parameter specifies the index of the item in the array. The size of the array is controlled by the ClaimCount property.

This property is read-only and not available at design time.

Data Type

String

ClaimPropertyCount Property (SAML Class)

The number of properties in the claim.

Syntax

ANSI (Cross Platform)
int GetClaimPropertyCount(int iClaimIndex);

Unicode (Windows)
INT GetClaimPropertyCount(INT iClaimIndex);
int ipworksauth_saml_getclaimpropertycount(void* lpObj, int claimindex);
int GetClaimPropertyCount(int iClaimIndex);

Default Value

0

Remarks

The number of properties in the claim.

The ClaimIndex parameter specifies the index of the item in the array. The size of the array is controlled by the ClaimCount property.

This property is read-only and not available at design time.

Data Type

Integer

ClaimPropertyIndex Property (SAML Class)

Selects a property.

Syntax

ANSI (Cross Platform)
int GetClaimPropertyIndex(int iClaimIndex);
int SetClaimPropertyIndex(int iClaimIndex, int iClaimPropertyIndex); Unicode (Windows) INT GetClaimPropertyIndex(INT iClaimIndex);
INT SetClaimPropertyIndex(INT iClaimIndex, INT iClaimPropertyIndex);
int ipworksauth_saml_getclaimpropertyindex(void* lpObj, int claimindex);
int ipworksauth_saml_setclaimpropertyindex(void* lpObj, int claimindex, int iClaimPropertyIndex);
int GetClaimPropertyIndex(int iClaimIndex);
int SetClaimPropertyIndex(int iClaimIndex, int iClaimPropertyIndex);

Default Value

0

Remarks

Selects a property. This is valid from 0 to ClaimPropertyCount. To inspect a property, first set this property and then inspect ClaimPropertyName and ClaimPropertyValue. For instance: for(int i=0;i<component.Claims[0].PropertyCount;i++) { component.Claims[0].PropertyIndex = i; Console.WriteLine(component.Claims[0].PropertyName + ": " + component.Claims[0].PropertyValue); }

The ClaimIndex parameter specifies the index of the item in the array. The size of the array is controlled by the ClaimCount property.

This property is not available at design time.

Data Type

Integer

ClaimPropertyName Property (SAML Class)

The name of the property.

Syntax

ANSI (Cross Platform)
char* GetClaimPropertyName(int iClaimIndex);

Unicode (Windows)
LPWSTR GetClaimPropertyName(INT iClaimIndex);
char* ipworksauth_saml_getclaimpropertyname(void* lpObj, int claimindex);
QString GetClaimPropertyName(int iClaimIndex);

Default Value

""

Remarks

The name of the property.

The ClaimIndex parameter specifies the index of the item in the array. The size of the array is controlled by the ClaimCount property.

This property is read-only and not available at design time.

Data Type

String

ClaimPropertyValue Property (SAML Class)

The value of the property.

Syntax

ANSI (Cross Platform)
char* GetClaimPropertyValue(int iClaimIndex);

Unicode (Windows)
LPWSTR GetClaimPropertyValue(INT iClaimIndex);
char* ipworksauth_saml_getclaimpropertyvalue(void* lpObj, int claimindex);
QString GetClaimPropertyValue(int iClaimIndex);

Default Value

""

Remarks

The value of the property.

The ClaimIndex parameter specifies the index of the item in the array. The size of the array is controlled by the ClaimCount property.

This property is read-only and not available at design time.

Data Type

String

ClaimTypeName Property (SAML Class)

The type name of the claim.

Syntax

ANSI (Cross Platform)
char* GetClaimTypeName(int iClaimIndex);

Unicode (Windows)
LPWSTR GetClaimTypeName(INT iClaimIndex);
char* ipworksauth_saml_getclaimtypename(void* lpObj, int claimindex);
QString GetClaimTypeName(int iClaimIndex);

Default Value

""

Remarks

The type name of the claim. This may be a value like "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier".

The ClaimIndex parameter specifies the index of the item in the array. The size of the array is controlled by the ClaimCount property.

This property is read-only and not available at design time.

Data Type

String

ClaimValue Property (SAML Class)

The value of the claim.

Syntax

ANSI (Cross Platform)
char* GetClaimValue(int iClaimIndex);

Unicode (Windows)
LPWSTR GetClaimValue(INT iClaimIndex);
char* ipworksauth_saml_getclaimvalue(void* lpObj, int claimindex);
QString GetClaimValue(int iClaimIndex);

Default Value

""

Remarks

The value of the claim.

The ClaimIndex parameter specifies the index of the item in the array. The size of the array is controlled by the ClaimCount property.

This property is read-only and not available at design time.

Data Type

String

ClaimValueType Property (SAML Class)

The type of value.

Syntax

ANSI (Cross Platform)
char* GetClaimValueType(int iClaimIndex);

Unicode (Windows)
LPWSTR GetClaimValueType(INT iClaimIndex);
char* ipworksauth_saml_getclaimvaluetype(void* lpObj, int claimindex);
QString GetClaimValueType(int iClaimIndex);

Default Value

""

Remarks

The type of value. This may be a value like "http://www.w3.org/2001/XMLSchema#string".

The ClaimIndex parameter specifies the index of the item in the array. The size of the array is controlled by the ClaimCount property.

This property is read-only and not available at design time.

Data Type

String

FederationSTS Property (SAML Class)

The URL of the federation Security Token Service (STS).

Syntax

ANSI (Cross Platform)
char* GetFederationSTS();
int SetFederationSTS(const char* lpszFederationSTS); Unicode (Windows) LPWSTR GetFederationSTS();
INT SetFederationSTS(LPCWSTR lpszFederationSTS);
char* ipworksauth_saml_getfederationsts(void* lpObj);
int ipworksauth_saml_setfederationsts(void* lpObj, const char* lpszFederationSTS);
QString GetFederationSTS();
int SetFederationSTS(QString qsFederationSTS);

Default Value

""

Remarks

This property specifies the URL of the federation Security Token Service (STS). When AuthMode is set to 0 (camSharePointOnline) or 1 (camDynamicsCRM) this property is automatically populated.

This property is not available at design time.

Data Type

String

FederationURN Property (SAML Class)

The federation Uniform Resource Name (URN).

Syntax

ANSI (Cross Platform)
char* GetFederationURN();
int SetFederationURN(const char* lpszFederationURN); Unicode (Windows) LPWSTR GetFederationURN();
INT SetFederationURN(LPCWSTR lpszFederationURN);
char* ipworksauth_saml_getfederationurn(void* lpObj);
int ipworksauth_saml_setfederationurn(void* lpObj, const char* lpszFederationURN);
QString GetFederationURN();
int SetFederationURN(QString qsFederationURN);

Default Value

""

Remarks

This property specifies the federation Uniform Resource Name (URN). This property is automatically populated when AuthMode is set to 0 (camSharePointOnline) or 1 (camDynamicsCRM).

This property is not available at design time.

Data Type

String

LocalSTS Property (SAML Class)

The local Security Token Service (STS).

Syntax

ANSI (Cross Platform)
char* GetLocalSTS();
int SetLocalSTS(const char* lpszLocalSTS); Unicode (Windows) LPWSTR GetLocalSTS();
INT SetLocalSTS(LPCWSTR lpszLocalSTS);
char* ipworksauth_saml_getlocalsts(void* lpObj);
int ipworksauth_saml_setlocalsts(void* lpObj, const char* lpszLocalSTS);
QString GetLocalSTS();
int SetLocalSTS(QString qsLocalSTS);

Default Value

""

Remarks

This property specifies the URL of the local Security Token Service(STS).

When AuthMode is set to 0 (camSharePointOnline) or 1 (camDynamicsCRM) if this is not specified, then the class will attempt to determine this value automatically by querying the UserRealm.

When AuthMode is set to 2 (camADFS) or 3 (camCustom) this property is required.

This property is not available at design time.

Data Type

String

Password Property (SAML Class)

The user's password.

Syntax

ANSI (Cross Platform)
char* GetPassword();
int SetPassword(const char* lpszPassword); Unicode (Windows) LPWSTR GetPassword();
INT SetPassword(LPCWSTR lpszPassword);
char* ipworksauth_saml_getpassword(void* lpObj);
int ipworksauth_saml_setpassword(void* lpObj, const char* lpszPassword);
QString GetPassword();
int SetPassword(QString qsPassword);

Default Value

""

Remarks

This property specifies the user's password. This must be set before calling GetAssertion or GetSecurityToken.

This property is not available at design time.

Data Type

String

ProxyAuthScheme Property (SAML Class)

This property is used to tell the class which type of authorization to perform when connecting to the proxy.

Syntax

ANSI (Cross Platform)
int GetProxyAuthScheme();
int SetProxyAuthScheme(int iProxyAuthScheme); Unicode (Windows) INT GetProxyAuthScheme();
INT SetProxyAuthScheme(INT iProxyAuthScheme);

Possible Values

AUTH_BASIC(0), 
AUTH_DIGEST(1),
AUTH_PROPRIETARY(2),
AUTH_NONE(3),
AUTH_NTLM(4),
AUTH_NEGOTIATE(5)
int ipworksauth_saml_getproxyauthscheme(void* lpObj);
int ipworksauth_saml_setproxyauthscheme(void* lpObj, int iProxyAuthScheme);
int GetProxyAuthScheme();
int SetProxyAuthScheme(int iProxyAuthScheme);

Default Value

0

Remarks

This property is used to tell the class which type of authorization to perform when connecting to the proxy. This is used only when the ProxyUser and ProxyPassword properties are set.

ProxyAuthScheme should be set to authNone (3) when no authentication is expected.

By default, ProxyAuthScheme is authBasic (0), and if the ProxyUser and ProxyPassword properties are set, the component will attempt basic authentication.

If ProxyAuthScheme is set to authDigest (1), digest authentication will be attempted instead.

If ProxyAuthScheme is set to authProprietary (2), then the authorization token will not be generated by the class. Look at the configuration file for the class being used to find more information about manually setting this token.

If ProxyAuthScheme is set to authNtlm (4), NTLM authentication will be used.

For security reasons, setting this property will clear the values of ProxyUser and ProxyPassword.

Data Type

Integer

ProxyAutoDetect Property (SAML Class)

This property tells the class whether or not to automatically detect and use proxy system settings, if available.

Syntax

ANSI (Cross Platform)
int GetProxyAutoDetect();
int SetProxyAutoDetect(int bProxyAutoDetect); Unicode (Windows) BOOL GetProxyAutoDetect();
INT SetProxyAutoDetect(BOOL bProxyAutoDetect);
int ipworksauth_saml_getproxyautodetect(void* lpObj);
int ipworksauth_saml_setproxyautodetect(void* lpObj, int bProxyAutoDetect);
bool GetProxyAutoDetect();
int SetProxyAutoDetect(bool bProxyAutoDetect);

Default Value

FALSE

Remarks

This property tells the class whether or not to automatically detect and use proxy system settings, if available. The default value is false.

Data Type

Boolean

ProxyPassword Property (SAML Class)

This property contains a password if authentication is to be used for the proxy.

Syntax

ANSI (Cross Platform)
char* GetProxyPassword();
int SetProxyPassword(const char* lpszProxyPassword); Unicode (Windows) LPWSTR GetProxyPassword();
INT SetProxyPassword(LPCWSTR lpszProxyPassword);
char* ipworksauth_saml_getproxypassword(void* lpObj);
int ipworksauth_saml_setproxypassword(void* lpObj, const char* lpszProxyPassword);
QString GetProxyPassword();
int SetProxyPassword(QString qsProxyPassword);

Default Value

""

Remarks

This property contains a password if authentication is to be used for the proxy.

If ProxyAuthScheme is set to Basic Authentication, the ProxyUser and ProxyPassword are Base64 encoded and the proxy authentication token will be generated in the form Basic [encoded-user-password].

If ProxyAuthScheme is set to Digest Authentication, the ProxyUser and ProxyPassword properties are used to respond to the Digest Authentication challenge from the server.

If ProxyAuthScheme is set to NTLM Authentication, the ProxyUser and ProxyPassword properties are used to authenticate through NTLM negotiation.

Data Type

String

ProxyPort Property (SAML Class)

This property contains the Transmission Control Protocol (TCP) port for the proxy Server (default 80).

Syntax

ANSI (Cross Platform)
int GetProxyPort();
int SetProxyPort(int iProxyPort); Unicode (Windows) INT GetProxyPort();
INT SetProxyPort(INT iProxyPort);
int ipworksauth_saml_getproxyport(void* lpObj);
int ipworksauth_saml_setproxyport(void* lpObj, int iProxyPort);
int GetProxyPort();
int SetProxyPort(int iProxyPort);

Default Value

80

Remarks

This property contains the Transmission Control Protocol (TCP) port for the proxy ProxyServer (default 80). See the description of the ProxyServer property for details.

Data Type

Integer

ProxyServer Property (SAML Class)

If a proxy Server is given, then the HTTP request is sent to the proxy instead of the server otherwise specified.

Syntax

ANSI (Cross Platform)
char* GetProxyServer();
int SetProxyServer(const char* lpszProxyServer); Unicode (Windows) LPWSTR GetProxyServer();
INT SetProxyServer(LPCWSTR lpszProxyServer);
char* ipworksauth_saml_getproxyserver(void* lpObj);
int ipworksauth_saml_setproxyserver(void* lpObj, const char* lpszProxyServer);
QString GetProxyServer();
int SetProxyServer(QString qsProxyServer);

Default Value

""

Remarks

If a proxy ProxyServer is given, then the HTTP request is sent to the proxy instead of the server otherwise specified.

If the ProxyServer property is set to a domain name, a DNS request is initiated. Upon successful termination of the request, the ProxyServer property is set to the corresponding address. If the search is not successful, an error is returned.

Data Type

String

ProxySSL Property (SAML Class)

This property determines when to use a Secure Sockets Layer (SSL) for the connection to the proxy.

Syntax

ANSI (Cross Platform)
int GetProxySSL();
int SetProxySSL(int iProxySSL); Unicode (Windows) INT GetProxySSL();
INT SetProxySSL(INT iProxySSL);

Possible Values

PS_AUTOMATIC(0), 
PS_ALWAYS(1),
PS_NEVER(2),
PS_TUNNEL(3)
int ipworksauth_saml_getproxyssl(void* lpObj);
int ipworksauth_saml_setproxyssl(void* lpObj, int iProxySSL);
int GetProxySSL();
int SetProxySSL(int iProxySSL);

Default Value

0

Remarks

This property determines when to use a Secure Sockets Layer (SSL) for the connection to the proxy. The applicable values are as follows:

psAutomatic (0)Default setting. If the URL is an https URL, the class will use the psTunnel option. If the URL is an http URL, the class will use the psNever option.
psAlways (1)The connection is always SSL enabled.
psNever (2)The connection is not SSL enabled.
psTunnel (3)The connection is made through a tunneling (HTTP) proxy.

Data Type

Integer

ProxyUser Property (SAML Class)

This property contains a user name, if authentication is to be used for the proxy.

Syntax

ANSI (Cross Platform)
char* GetProxyUser();
int SetProxyUser(const char* lpszProxyUser); Unicode (Windows) LPWSTR GetProxyUser();
INT SetProxyUser(LPCWSTR lpszProxyUser);
char* ipworksauth_saml_getproxyuser(void* lpObj);
int ipworksauth_saml_setproxyuser(void* lpObj, const char* lpszProxyUser);
QString GetProxyUser();
int SetProxyUser(QString qsProxyUser);

Default Value

""

Remarks

This property contains a user name, if authentication is to be used for the proxy.

If ProxyAuthScheme is set to Basic Authentication, the ProxyUser and ProxyPassword are Base64 encoded and the proxy authentication token will be generated in the form Basic [encoded-user-password].

If ProxyAuthScheme is set to Digest Authentication, the ProxyUser and ProxyPassword properties are used to respond to the Digest Authentication challenge from the server.

If ProxyAuthScheme is set to NTLM Authentication, the ProxyUser and ProxyPassword properties are used to authenticate through NTLM negotiation.

Data Type

String

SecurityTokenXML Property (SAML Class)

The security token XML.

Syntax

ANSI (Cross Platform)
char* GetSecurityTokenXML();

Unicode (Windows)
LPWSTR GetSecurityTokenXML();
char* ipworksauth_saml_getsecuritytokenxml(void* lpObj);
QString GetSecurityTokenXML();

Default Value

""

Remarks

This property holds the security token. This is populated after calling GetSecurityToken.

This property is read-only and not available at design time.

Data Type

String

SignerCertEncoded Property (SAML Class)

This is the certificate (PEM/base64 encoded).

Syntax

ANSI (Cross Platform)
int GetSignerCertEncoded(char* &lpSignerCertEncoded, int &lenSignerCertEncoded);
int SetSignerCertEncoded(const char* lpSignerCertEncoded, int lenSignerCertEncoded); Unicode (Windows) INT GetSignerCertEncoded(LPSTR &lpSignerCertEncoded, INT &lenSignerCertEncoded);
INT SetSignerCertEncoded(LPCSTR lpSignerCertEncoded, INT lenSignerCertEncoded);
int ipworksauth_saml_getsignercertencoded(void* lpObj, char** lpSignerCertEncoded, int* lenSignerCertEncoded);
int ipworksauth_saml_setsignercertencoded(void* lpObj, const char* lpSignerCertEncoded, int lenSignerCertEncoded);
QByteArray GetSignerCertEncoded();
int SetSignerCertEncoded(QByteArray qbaSignerCertEncoded);

Default Value

""

Remarks

This is the certificate (PEM/base64 encoded). This property is used to assign a specific certificate. The SignerCertStore and SignerCertSubject properties also may be used to specify a certificate.

When SignerCertEncoded is set, a search is initiated in the current SignerCertStore for the private key of the certificate. If the key is found, SignerCertSubject is updated to reflect the full subject of the selected certificate; otherwise, SignerCertSubject is set to an empty string.

This property is not available at design time.

Data Type

Binary String

SignerCertStore Property (SAML Class)

This is the name of the certificate store for the client certificate.

Syntax

ANSI (Cross Platform)
int GetSignerCertStore(char* &lpSignerCertStore, int &lenSignerCertStore);
int SetSignerCertStore(const char* lpSignerCertStore, int lenSignerCertStore); Unicode (Windows) INT GetSignerCertStore(LPSTR &lpSignerCertStore, INT &lenSignerCertStore);
INT SetSignerCertStore(LPCSTR lpSignerCertStore, INT lenSignerCertStore);
int ipworksauth_saml_getsignercertstore(void* lpObj, char** lpSignerCertStore, int* lenSignerCertStore);
int ipworksauth_saml_setsignercertstore(void* lpObj, const char* lpSignerCertStore, int lenSignerCertStore);
QByteArray GetSignerCertStore();
int SetSignerCertStore(QByteArray qbaSignerCertStore);

Default Value

"MY"

Remarks

This is the name of the certificate store for the client certificate.

The SignerCertStoreType property denotes the type of the certificate store specified by SignerCertStore. If the store is password protected, specify the password in SignerCertStorePassword.

SignerCertStore is used in conjunction with the SignerCertSubject property to specify client certificates. If SignerCertStore has a value, and SignerCertSubject or SignerCertEncoded is set, a search for a certificate is initiated. Please see the SignerCertSubject property for details.

Designations of certificate stores are platform-dependent.

The following are designations of the most common User and Machine certificate stores in Windows:

MYA certificate store holding personal certificates with their associated private keys.
CACertifying authority certificates.
ROOTRoot 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. PKCS12 certificate store).

This property is not available at design time.

Data Type

Binary String

SignerCertStorePassword Property (SAML Class)

If the type of certificate store requires a password, this property is used to specify the password needed to open the certificate store.

Syntax

ANSI (Cross Platform)
char* GetSignerCertStorePassword();
int SetSignerCertStorePassword(const char* lpszSignerCertStorePassword); Unicode (Windows) LPWSTR GetSignerCertStorePassword();
INT SetSignerCertStorePassword(LPCWSTR lpszSignerCertStorePassword);
char* ipworksauth_saml_getsignercertstorepassword(void* lpObj);
int ipworksauth_saml_setsignercertstorepassword(void* lpObj, const char* lpszSignerCertStorePassword);
QString GetSignerCertStorePassword();
int SetSignerCertStorePassword(QString qsSignerCertStorePassword);

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.

This property is not available at design time.

Data Type

String

SignerCertStoreType Property (SAML Class)

This is the type of certificate store for this certificate.

Syntax

ANSI (Cross Platform)
int GetSignerCertStoreType();
int SetSignerCertStoreType(int iSignerCertStoreType); Unicode (Windows) INT GetSignerCertStoreType();
INT SetSignerCertStoreType(INT iSignerCertStoreType);

Possible Values

CST_USER(0), 
CST_MACHINE(1),
CST_PFXFILE(2),
CST_PFXBLOB(3),
CST_JKSFILE(4),
CST_JKSBLOB(5),
CST_PEMKEY_FILE(6),
CST_PEMKEY_BLOB(7),
CST_PUBLIC_KEY_FILE(8),
CST_PUBLIC_KEY_BLOB(9),
CST_SSHPUBLIC_KEY_BLOB(10),
CST_P7BFILE(11),
CST_P7BBLOB(12),
CST_SSHPUBLIC_KEY_FILE(13),
CST_PPKFILE(14),
CST_PPKBLOB(15),
CST_XMLFILE(16),
CST_XMLBLOB(17),
CST_JWKFILE(18),
CST_JWKBLOB(19),
CST_SECURITY_KEY(20),
CST_BCFKSFILE(21),
CST_BCFKSBLOB(22),
CST_PKCS11(23),
CST_AUTO(99)
int ipworksauth_saml_getsignercertstoretype(void* lpObj);
int ipworksauth_saml_setsignercertstoretype(void* lpObj, int iSignerCertStoreType);
int GetSignerCertStoreType();
int SetSignerCertStoreType(int iSignerCertStoreType);

Default Value

0

Remarks

This is the type of certificate store for this certificate.

The class supports both public and private keys in a variety of formats. When the cstAuto value is used the class 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 (PKCS12) file containing certificates.
3 (cstPFXBlob)The certificate store is a string (binary or base64-encoded) representing a certificate store in PFX (PKCS12) 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 PKCS7 file containing certificates.
12 (cstP7BBlob)The certificate store is a string (binary) representing a certificate store in PKCS7 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 PKCS11 interface.

To use a security key the necessary data must first be collected using the CertMgr class. The ListStoreCertificates method may be called after setting CertStoreType to cstPKCS11, CertStorePassword to the PIN, and CertStore to the full path of the PKCS11 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 SignerCertStore and set SignerCertStorePassword to the PIN.

Code Example: SSH Authentication with Security Key certmgr.CertStoreType = CertStoreTypes.cstPKCS11; certmgr.OnCertList += (s, e) => { secKeyBlob = e.CertEncoded; }; certmgr.CertStore = @"C:\Program Files\OpenSC Project\OpenSC\pkcs11\opensc-pkcs11.dll"; certmgr.CertStorePassword = "123456"; //PIN certmgr.ListStoreCertificates(); sftp.SSHCert = new Certificate(CertStoreTypes.cstPKCS11, secKeyBlob, "123456", "*"); sftp.SSHUser = "test"; sftp.SSHLogon("myhost", 22);

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.

This property is not available at design time.

Data Type

Integer

SignerCertSubject Property (SAML Class)

This is the subject of the certificate used for client authentication.

Syntax

ANSI (Cross Platform)
char* GetSignerCertSubject();
int SetSignerCertSubject(const char* lpszSignerCertSubject); Unicode (Windows) LPWSTR GetSignerCertSubject();
INT SetSignerCertSubject(LPCWSTR lpszSignerCertSubject);
char* ipworksauth_saml_getsignercertsubject(void* lpObj);
int ipworksauth_saml_setsignercertsubject(void* lpObj, const char* lpszSignerCertSubject);
QString GetSignerCertSubject();
int SetSignerCertSubject(QString qsSignerCertSubject);

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 displayed below.

FieldMeaning
CNCommon Name. This is commonly a host name like www.server.com.
OOrganization
OUOrganizational Unit
LLocality
SState
CCountry
EEmail Address

If a field value contains a comma it must be quoted.

This property is not available at design time.

Data Type

String

SSLAcceptServerCertEncoded Property (SAML Class)

This is the certificate (PEM/base64 encoded).

Syntax

ANSI (Cross Platform)
int GetSSLAcceptServerCertEncoded(char* &lpSSLAcceptServerCertEncoded, int &lenSSLAcceptServerCertEncoded);
int SetSSLAcceptServerCertEncoded(const char* lpSSLAcceptServerCertEncoded, int lenSSLAcceptServerCertEncoded); Unicode (Windows) INT GetSSLAcceptServerCertEncoded(LPSTR &lpSSLAcceptServerCertEncoded, INT &lenSSLAcceptServerCertEncoded);
INT SetSSLAcceptServerCertEncoded(LPCSTR lpSSLAcceptServerCertEncoded, INT lenSSLAcceptServerCertEncoded);
int ipworksauth_saml_getsslacceptservercertencoded(void* lpObj, char** lpSSLAcceptServerCertEncoded, int* lenSSLAcceptServerCertEncoded);
int ipworksauth_saml_setsslacceptservercertencoded(void* lpObj, const char* lpSSLAcceptServerCertEncoded, int lenSSLAcceptServerCertEncoded);
QByteArray GetSSLAcceptServerCertEncoded();
int SetSSLAcceptServerCertEncoded(QByteArray qbaSSLAcceptServerCertEncoded);

Default Value

""

Remarks

This is the certificate (PEM/base64 encoded). This property is used to assign a specific certificate. The SSLAcceptServerCertStore and SSLAcceptServerCertSubject properties also may be used to specify a certificate.

When SSLAcceptServerCertEncoded is set, a search is initiated in the current SSLAcceptServerCertStore for the private key of the certificate. If the key is found, SSLAcceptServerCertSubject is updated to reflect the full subject of the selected certificate; otherwise, SSLAcceptServerCertSubject is set to an empty string.

This property is not available at design time.

Data Type

Binary String

SSLCertEncoded Property (SAML Class)

This is the certificate (PEM/base64 encoded).

Syntax

ANSI (Cross Platform)
int GetSSLCertEncoded(char* &lpSSLCertEncoded, int &lenSSLCertEncoded);
int SetSSLCertEncoded(const char* lpSSLCertEncoded, int lenSSLCertEncoded); Unicode (Windows) INT GetSSLCertEncoded(LPSTR &lpSSLCertEncoded, INT &lenSSLCertEncoded);
INT SetSSLCertEncoded(LPCSTR lpSSLCertEncoded, INT lenSSLCertEncoded);
int ipworksauth_saml_getsslcertencoded(void* lpObj, char** lpSSLCertEncoded, int* lenSSLCertEncoded);
int ipworksauth_saml_setsslcertencoded(void* lpObj, const char* lpSSLCertEncoded, int lenSSLCertEncoded);
QByteArray GetSSLCertEncoded();
int SetSSLCertEncoded(QByteArray qbaSSLCertEncoded);

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

Binary String

SSLCertStore Property (SAML Class)

This is the name of the certificate store for the client certificate.

Syntax

ANSI (Cross Platform)
int GetSSLCertStore(char* &lpSSLCertStore, int &lenSSLCertStore);
int SetSSLCertStore(const char* lpSSLCertStore, int lenSSLCertStore); Unicode (Windows) INT GetSSLCertStore(LPSTR &lpSSLCertStore, INT &lenSSLCertStore);
INT SetSSLCertStore(LPCSTR lpSSLCertStore, INT lenSSLCertStore);
int ipworksauth_saml_getsslcertstore(void* lpObj, char** lpSSLCertStore, int* lenSSLCertStore);
int ipworksauth_saml_setsslcertstore(void* lpObj, const char* lpSSLCertStore, int lenSSLCertStore);
QByteArray GetSSLCertStore();
int SetSSLCertStore(QByteArray qbaSSLCertStore);

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 are designations of the most common User and Machine certificate stores in Windows:

MYA certificate store holding personal certificates with their associated private keys.
CACertifying authority certificates.
ROOTRoot 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. PKCS12 certificate store).

Data Type

Binary String

SSLCertStorePassword Property (SAML Class)

If the type of certificate store requires a password, this property is used to specify the password needed to open the certificate store.

Syntax

ANSI (Cross Platform)
char* GetSSLCertStorePassword();
int SetSSLCertStorePassword(const char* lpszSSLCertStorePassword); Unicode (Windows) LPWSTR GetSSLCertStorePassword();
INT SetSSLCertStorePassword(LPCWSTR lpszSSLCertStorePassword);
char* ipworksauth_saml_getsslcertstorepassword(void* lpObj);
int ipworksauth_saml_setsslcertstorepassword(void* lpObj, const char* lpszSSLCertStorePassword);
QString GetSSLCertStorePassword();
int SetSSLCertStorePassword(QString qsSSLCertStorePassword);

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 (SAML Class)

This is the type of certificate store for this certificate.

Syntax

ANSI (Cross Platform)
int GetSSLCertStoreType();
int SetSSLCertStoreType(int iSSLCertStoreType); Unicode (Windows) INT GetSSLCertStoreType();
INT SetSSLCertStoreType(INT iSSLCertStoreType);

Possible Values

CST_USER(0), 
CST_MACHINE(1),
CST_PFXFILE(2),
CST_PFXBLOB(3),
CST_JKSFILE(4),
CST_JKSBLOB(5),
CST_PEMKEY_FILE(6),
CST_PEMKEY_BLOB(7),
CST_PUBLIC_KEY_FILE(8),
CST_PUBLIC_KEY_BLOB(9),
CST_SSHPUBLIC_KEY_BLOB(10),
CST_P7BFILE(11),
CST_P7BBLOB(12),
CST_SSHPUBLIC_KEY_FILE(13),
CST_PPKFILE(14),
CST_PPKBLOB(15),
CST_XMLFILE(16),
CST_XMLBLOB(17),
CST_JWKFILE(18),
CST_JWKBLOB(19),
CST_SECURITY_KEY(20),
CST_BCFKSFILE(21),
CST_BCFKSBLOB(22),
CST_PKCS11(23),
CST_AUTO(99)
int ipworksauth_saml_getsslcertstoretype(void* lpObj);
int ipworksauth_saml_setsslcertstoretype(void* lpObj, int iSSLCertStoreType);
int GetSSLCertStoreType();
int SetSSLCertStoreType(int iSSLCertStoreType);

Default Value

0

Remarks

This is the type of certificate store for this certificate.

The class supports both public and private keys in a variety of formats. When the cstAuto value is used the class 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 (PKCS12) file containing certificates.
3 (cstPFXBlob)The certificate store is a string (binary or base64-encoded) representing a certificate store in PFX (PKCS12) 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 PKCS7 file containing certificates.
12 (cstP7BBlob)The certificate store is a string (binary) representing a certificate store in PKCS7 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 PKCS11 interface.

To use a security key the necessary data must first be collected using the CertMgr class. The ListStoreCertificates method may be called after setting CertStoreType to cstPKCS11, CertStorePassword to the PIN, and CertStore to the full path of the PKCS11 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 certmgr.CertStoreType = CertStoreTypes.cstPKCS11; certmgr.OnCertList += (s, e) => { secKeyBlob = e.CertEncoded; }; certmgr.CertStore = @"C:\Program Files\OpenSC Project\OpenSC\pkcs11\opensc-pkcs11.dll"; certmgr.CertStorePassword = "123456"; //PIN certmgr.ListStoreCertificates(); sftp.SSHCert = new Certificate(CertStoreTypes.cstPKCS11, secKeyBlob, "123456", "*"); sftp.SSHUser = "test"; sftp.SSHLogon("myhost", 22);

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 (SAML Class)

This is the subject of the certificate used for client authentication.

Syntax

ANSI (Cross Platform)
char* GetSSLCertSubject();
int SetSSLCertSubject(const char* lpszSSLCertSubject); Unicode (Windows) LPWSTR GetSSLCertSubject();
INT SetSSLCertSubject(LPCWSTR lpszSSLCertSubject);
char* ipworksauth_saml_getsslcertsubject(void* lpObj);
int ipworksauth_saml_setsslcertsubject(void* lpObj, const char* lpszSSLCertSubject);
QString GetSSLCertSubject();
int SetSSLCertSubject(QString qsSSLCertSubject);

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 displayed below.

FieldMeaning
CNCommon Name. This is commonly a host name like www.server.com.
OOrganization
OUOrganizational Unit
LLocality
SState
CCountry
EEmail Address

If a field value contains a comma it must be quoted.

Data Type

String

SSLProvider Property (SAML Class)

This specifies the SSL/TLS implementation to use.

Syntax

ANSI (Cross Platform)
int GetSSLProvider();
int SetSSLProvider(int iSSLProvider); Unicode (Windows) INT GetSSLProvider();
INT SetSSLProvider(INT iSSLProvider);

Possible Values

SSLP_AUTOMATIC(0), 
SSLP_PLATFORM(1),
SSLP_INTERNAL(2)
int ipworksauth_saml_getsslprovider(void* lpObj);
int ipworksauth_saml_setsslprovider(void* lpObj, int iSSLProvider);
int GetSSLProvider();
int SetSSLProvider(int iSSLProvider);

Default Value

0

Remarks

This property specifies the SSL/TLS implementation to use. In most cases the default value of 0 (Automatic) is recommended and should not be changed. When set to 0 (Automatic) the class will select whether to use the platform implementation or the internal implementation depending on the operating system as well as the TLS version being used.

Possible values are:

0 (sslpAutomatic - default)Automatically selects the appropriate implementation.
1 (sslpPlatform) Uses the platform/system implementation.
2 (sslpInternal) Uses the internal implementation.
Additional Notes

In most cases using the default value (Automatic) is recommended. The class will select a provider depending on the current platform.

When Automatic is selected, on Windows the class will use the platform implementation. On Linux/macOS the class will use the internal implementation. When TLS 1.3 is enabled via SSLEnabledProtocols the internal implementation is used on all platforms.

Data Type

Integer

SSLServerCertEncoded Property (SAML Class)

This is the certificate (PEM/base64 encoded).

Syntax

ANSI (Cross Platform)
int GetSSLServerCertEncoded(char* &lpSSLServerCertEncoded, int &lenSSLServerCertEncoded);

Unicode (Windows)
INT GetSSLServerCertEncoded(LPSTR &lpSSLServerCertEncoded, INT &lenSSLServerCertEncoded);
int ipworksauth_saml_getsslservercertencoded(void* lpObj, char** lpSSLServerCertEncoded, int* lenSSLServerCertEncoded);
QByteArray GetSSLServerCertEncoded();

Default Value

""

Remarks

This is the certificate (PEM/base64 encoded). This property is used to assign a specific certificate. The SSLServerCertStore and SSLServerCertSubject properties also may be used to specify a certificate.

When SSLServerCertEncoded is set, a search is initiated in the current SSLServerCertStore for the private key of the certificate. If the key is found, SSLServerCertSubject is updated to reflect the full subject of the selected certificate; otherwise, SSLServerCertSubject is set to an empty string.

This property is read-only and not available at design time.

Data Type

Binary String

User Property (SAML Class)

The username.

Syntax

ANSI (Cross Platform)
char* GetUser();
int SetUser(const char* lpszUser); Unicode (Windows) LPWSTR GetUser();
INT SetUser(LPCWSTR lpszUser);
char* ipworksauth_saml_getuser(void* lpObj);
int ipworksauth_saml_setuser(void* lpObj, const char* lpszUser);
QString GetUser();
int SetUser(QString qsUser);

Default Value

""

Remarks

This property specifies the username. This must be set before calling GetAssertion or GetSecurityToken.

This property is not available at design time.

Data Type

String

AttrCount Property (SAML Class)

The number of records in the Attr arrays.

Syntax

ANSI (Cross Platform)
int GetAttrCount();
int SetAttrCount(int iAttrCount); Unicode (Windows) INT GetAttrCount();
INT SetAttrCount(INT iAttrCount);
int ipworksauth_saml_getattrcount(void* lpObj);
int ipworksauth_saml_setattrcount(void* lpObj, int iAttrCount);
int GetAttrCount();
int SetAttrCount(int iAttrCount);

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

AttrName Property (SAML Class)

The Name provides the local name (without prefix) of the attribute.

Syntax

ANSI (Cross Platform)
char* GetAttrName(int iAttrIndex);

Unicode (Windows)
LPWSTR GetAttrName(INT iAttrIndex);
char* ipworksauth_saml_getattrname(void* lpObj, int attrindex);
QString GetAttrName(int iAttrIndex);

Default Value

""

Remarks

The AttrName provides the local name (without prefix) of the attribute.

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

AttrNamespace Property (SAML Class)

Attribute namespace.

Syntax

ANSI (Cross Platform)
char* GetAttrNamespace(int iAttrIndex);

Unicode (Windows)
LPWSTR GetAttrNamespace(INT iAttrIndex);
char* ipworksauth_saml_getattrnamespace(void* lpObj, int attrindex);
QString GetAttrNamespace(int iAttrIndex);

Default Value

""

Remarks

Attribute namespace.

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

AttrPrefix Property (SAML Class)

Attribute prefix (if any).

Syntax

ANSI (Cross Platform)
char* GetAttrPrefix(int iAttrIndex);

Unicode (Windows)
LPWSTR GetAttrPrefix(INT iAttrIndex);
char* ipworksauth_saml_getattrprefix(void* lpObj, int attrindex);
QString GetAttrPrefix(int iAttrIndex);

Default Value

""

Remarks

Attribute prefix (if any). If the attribute does not have a prefix, this property is empty.

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 (SAML Class)

Attribute value.

Syntax

ANSI (Cross Platform)
char* GetAttrValue(int iAttrIndex);

Unicode (Windows)
LPWSTR GetAttrValue(INT iAttrIndex);
char* ipworksauth_saml_getattrvalue(void* lpObj, int attrindex);
QString GetAttrValue(int iAttrIndex);

Default Value

""

Remarks

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 read-only and not available at design time.

Data Type

String

XChildCount Property (SAML Class)

The number of records in the XChild arrays.

Syntax

ANSI (Cross Platform)
int GetXChildCount();
int SetXChildCount(int iXChildCount); Unicode (Windows) INT GetXChildCount();
INT SetXChildCount(INT iXChildCount);
int ipworksauth_saml_getxchildcount(void* lpObj);
int ipworksauth_saml_setxchildcount(void* lpObj, int iXChildCount);
int GetXChildCount();
int SetXChildCount(int iXChildCount);

Default Value

0

Remarks

This property controls the size of the following arrays:

The array indices start at 0 and end at XChildCount - 1.

This property is not available at design time.

Data Type

Integer

XChildName Property (SAML Class)

The Name property provides the local name (without prefix) of the element.

Syntax

ANSI (Cross Platform)
char* GetXChildName(int iXChildIndex);

Unicode (Windows)
LPWSTR GetXChildName(INT iXChildIndex);
char* ipworksauth_saml_getxchildname(void* lpObj, int xchildindex);
QString GetXChildName(int iXChildIndex);

Default Value

""

Remarks

The XChildName property provides the local name (without prefix) of the element.

The XChildIndex parameter specifies the index of the item in the array. The size of the array is controlled by the XChildCount property.

This property is read-only and not available at design time.

Data Type

String

XChildNamespace Property (SAML Class)

Namespace of the element.

Syntax

ANSI (Cross Platform)
char* GetXChildNamespace(int iXChildIndex);

Unicode (Windows)
LPWSTR GetXChildNamespace(INT iXChildIndex);
char* ipworksauth_saml_getxchildnamespace(void* lpObj, int xchildindex);
QString GetXChildNamespace(int iXChildIndex);

Default Value

""

Remarks

Namespace of the element.

The XChildIndex parameter specifies the index of the item in the array. The size of the array is controlled by the XChildCount property.

This property is read-only and not available at design time.

Data Type

String

XChildPrefix Property (SAML Class)

Prefix of the element (if any).

Syntax

ANSI (Cross Platform)
char* GetXChildPrefix(int iXChildIndex);

Unicode (Windows)
LPWSTR GetXChildPrefix(INT iXChildIndex);
char* ipworksauth_saml_getxchildprefix(void* lpObj, int xchildindex);
QString GetXChildPrefix(int iXChildIndex);

Default Value

""

Remarks

Prefix of the element (if any). If the element does not have a prefix, this property is empty.

The XChildIndex parameter specifies the index of the item in the array. The size of the array is controlled by the XChildCount property.

This property is read-only and not available at design time.

Data Type

String

XChildXText Property (SAML Class)

The inner text of the element.

Syntax

ANSI (Cross Platform)
char* GetXChildXText(int iXChildIndex);

Unicode (Windows)
LPWSTR GetXChildXText(INT iXChildIndex);
char* ipworksauth_saml_getxchildxtext(void* lpObj, int xchildindex);
QString GetXChildXText(int iXChildIndex);

Default Value

""

Remarks

The inner text of the element.

The XChildIndex parameter specifies the index of the item in the array. The size of the array is controlled by the XChildCount property.

This property is read-only and not available at design time.

Data Type

String

XElement Property (SAML Class)

The name of the current element.

Syntax

ANSI (Cross Platform)
char* GetXElement();
int SetXElement(const char* lpszXElement); Unicode (Windows) LPWSTR GetXElement();
INT SetXElement(LPCWSTR lpszXElement);
char* ipworksauth_saml_getxelement(void* lpObj);
int ipworksauth_saml_setxelement(void* lpObj, const char* lpszXElement);
QString GetXElement();
int SetXElement(QString qsXElement);

Default Value

""

Remarks

The current element is specified via the XPath property.

Data Type

String

XNamespace Property (SAML Class)

The namespace of the current element.

Syntax

ANSI (Cross Platform)
char* GetXNamespace();
int SetXNamespace(const char* lpszXNamespace); Unicode (Windows) LPWSTR GetXNamespace();
INT SetXNamespace(LPCWSTR lpszXNamespace);
char* ipworksauth_saml_getxnamespace(void* lpObj);
int ipworksauth_saml_setxnamespace(void* lpObj, const char* lpszXNamespace);
QString GetXNamespace();
int SetXNamespace(QString qsXNamespace);

Default Value

""

Remarks

The current element is specified via the XPath property.

Data Type

String

XParent Property (SAML Class)

The parent of the current element.

Syntax

ANSI (Cross Platform)
char* GetXParent();

Unicode (Windows)
LPWSTR GetXParent();
char* ipworksauth_saml_getxparent(void* lpObj);
QString GetXParent();

Default Value

""

Remarks

The current element is specified via the XPath property.

This property is read-only.

Data Type

String

XPath Property (SAML Class)

Provides a way to point to a specific element in the document.

Syntax

ANSI (Cross Platform)
char* GetXPath();
int SetXPath(const char* lpszXPath); Unicode (Windows) LPWSTR GetXPath();
INT SetXPath(LPCWSTR lpszXPath);
char* ipworksauth_saml_getxpath(void* lpObj);
int ipworksauth_saml_setxpath(void* lpObj, const char* lpszXPath);
QString GetXPath();
int SetXPath(QString qsXPath);

Default Value

""

Remarks

XPath implements a subset of the XML XPath specification, allowing you to point to specific elements in the XML documents.

The path is a series of one or more element accessors separated by '/'. The path can be absolute (starting with '/') or relative to the current XPath location.

The following are possible values for an element accessor:

'name'A particular element name
name[i]The i-th subelement of the current element with the given name
[i]The i-th subelement of the current element
[last()]The last subelement of the current element
[last()-i]The subelement located at the last location minus i in the current element
name[@attrname="attrvalue"]The subelement containing a particular value for a given attribute (supports single AND double quotes)
..The parent of the current element
When XPath is set to a valid path, XElement points to the name of the element, with XParent, XNamespace, XPrefix, XChildName, XChildNamespace, XChildPrefix, XChildXText, and XText providing other properties of the element. The attributes of the current element are provided in the AttrName, AttrNamespace, AttrPrefix, and AttrValue properties.

BuildDOM must be set to True prior to parsing the document for the XPath functionality to be available.

Example (Setting XPath):

Document rootXML.XPath = "/"
Specific ElementXML.XPath = "/root/SubElement1/SubElement2/"
i-th ChildXML.XPath = "/root/SubElement1[i]"

Data Type

String

XPrefix Property (SAML Class)

The prefix of the current element.

Syntax

ANSI (Cross Platform)
char* GetXPrefix();
int SetXPrefix(const char* lpszXPrefix); Unicode (Windows) LPWSTR GetXPrefix();
INT SetXPrefix(LPCWSTR lpszXPrefix);
char* ipworksauth_saml_getxprefix(void* lpObj);
int ipworksauth_saml_setxprefix(void* lpObj, const char* lpszXPrefix);
QString GetXPrefix();
int SetXPrefix(QString qsXPrefix);

Default Value

""

Remarks

The current element is specified via the XPath property.

Data Type

String

XSubTree Property (SAML Class)

A snapshot of the current element in the document.

Syntax

ANSI (Cross Platform)
char* GetXSubTree();

Unicode (Windows)
LPWSTR GetXSubTree();
char* ipworksauth_saml_getxsubtree(void* lpObj);
QString GetXSubTree();

Default Value

""

Remarks

The current element is specified via the XPath property. In order for this property to work you must have the CacheContent set to true.

This property is read-only.

Data Type

String

XText Property (SAML Class)

The text of the current element.

Syntax

ANSI (Cross Platform)
char* GetXText();
int SetXText(const char* lpszXText); Unicode (Windows) LPWSTR GetXText();
INT SetXText(LPCWSTR lpszXText);
char* ipworksauth_saml_getxtext(void* lpObj);
int ipworksauth_saml_setxtext(void* lpObj, const char* lpszXText);
QString GetXText();
int SetXText(QString qsXText);

Default Value

""

Remarks

The current element is specified via the XPath property.

Data Type

String

Config Method (SAML Class)

Sets or retrieves a configuration setting.

Syntax

ANSI (Cross Platform)
char* Config(const char* lpszConfigurationString);

Unicode (Windows)
LPWSTR Config(LPCWSTR lpszConfigurationString);
char* ipworksauth_saml_config(void* lpObj, const char* lpszConfigurationString);
QString Config(const QString& qsConfigurationString);

Remarks

Config is a generic method available in every class. It is used to set and retrieve configuration settings for the class.

These settings are similar in functionality to properties, but they are rarely used. In order to avoid "polluting" the property namespace of the class, 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.

Error Handling (C++)

This method returns a String value; after it returns, call the GetLastErrorCode() method to obtain its result code; 0 indicates success, while a non-zero error code indicates that this method encountered an error during its execution. If an error occurs, the GetLastError() method can be called to retrieve the associated error message.

GetAssertion Method (SAML Class)

Gets the assertion.

Syntax

ANSI (Cross Platform)
int GetAssertion();

Unicode (Windows)
INT GetAssertion();
int ipworksauth_saml_getassertion(void* lpObj);
int GetAssertion();

Remarks

This method communicates with LocalSTS as to obtain an assertion.

When AuthMode is set to 0 (camSharePointOnline) or 1 (camDynamicsCRM) the class will automatically populate various properties to known values to reduce the number of required settings. Typically only the following properties are required:

When AuthMode is set to 2 (camADFS) or 3 (camCustom) the following properties are required:

If the assertion is signed the class will use the certificate specified in SignerCert to verify the signature. If SignerCert is not set the class will attempt to parse the certificate present in the assertion to perform verification.

After the assertion is parsed and the signature is verified (if present) the following properties will be populated:

Error Handling (C++)

This method returns a result code; 0 indicates success, while a non-zero error code indicates that this method encountered an error during its execution. If an error occurs, the GetLastError() method can be called to retrieve the associated error message. (Note: This method's result code can also be obtained by calling the GetLastErrorCode() method after it returns.)

GetSecurityToken Method (SAML Class)

Gets the security token.

Syntax

ANSI (Cross Platform)
int GetSecurityToken();

Unicode (Windows)
INT GetSecurityToken();
int ipworksauth_saml_getsecuritytoken(void* lpObj);
int GetSecurityToken();

Remarks

This method communicates with FederationSTS and LocalSTS as applicable to obtain a security token. The SecurityTokenXML property will be populated with the retrieved token.

When AuthMode is set to 0 (camSharePointOnline) or 1 (camDynamicsCRM) the class will automatically populate various properties to known values to reduce the number of required settings. Typically only the following properties are required:

When AuthMode is set to 2 (camADFS) or 3 (camCustom) the following properties are required:

Error Handling (C++)

This method returns a result code; 0 indicates success, while a non-zero error code indicates that this method encountered an error during its execution. If an error occurs, the GetLastError() method can be called to retrieve the associated error message. (Note: This method's result code can also be obtained by calling the GetLastErrorCode() method after it returns.)

ParseAssertion Method (SAML Class)

Parses the specified assertion.

Syntax

ANSI (Cross Platform)
int ParseAssertion(const char* lpszassertion);

Unicode (Windows)
INT ParseAssertion(LPCWSTR lpszassertion);
int ipworksauth_saml_parseassertion(void* lpObj, const char* lpszassertion);
int ParseAssertion(const QString& qsassertion);

Remarks

This method parses the assertion specified by the assertion parameter. If the assertion is signed the class will use the certificate specified in SignerCert to verify the signature. If SignerCert is not set the class will attempt to parse the certificate present in the assertion to perform verification.

After the assertion is parsed and the signature is verified (if present) the following properties will be populated:

Error Handling (C++)

This method returns a result code; 0 indicates success, while a non-zero error code indicates that this method encountered an error during its execution. If an error occurs, the GetLastError() method can be called to retrieve the associated error message. (Note: This method's result code can also be obtained by calling the GetLastErrorCode() method after it returns.)

Characters Event (SAML Class)

Fired for plain text segments of the input stream.

Syntax

ANSI (Cross Platform)
virtual int FireCharacters(SAMLCharactersEventParams *e);
typedef struct {
const char *Text; int reserved; } SAMLCharactersEventParams;
Unicode (Windows) virtual INT FireCharacters(SAMLCharactersEventParams *e);
typedef struct {
LPCWSTR Text; INT reserved; } SAMLCharactersEventParams;
#define EID_SAML_CHARACTERS 1

virtual INT IPWORKSAUTH_CALL FireCharacters(LPSTR &lpszText);
class SAMLCharactersEventParams {
public:
  const QString &Text();

  int EventRetVal();
  void SetEventRetVal(int iRetVal);
};
// To handle, connect one or more slots to this signal. void Characters(SAMLCharactersEventParams *e);
// Or, subclass SAML and override this emitter function. virtual int FireCharacters(SAMLCharactersEventParams *e) {...}

Remarks

The Characters event provides the plain text content of the XML document (i.e. the text inside the tags). The text is provided through the Text parameter.

The text includes white space as well as end of line characters, except for ignorable whitespace which is fired through the IgnorableWhitespace event.

Comment Event (SAML Class)

Fired when a comment section is encountered.

Syntax

ANSI (Cross Platform)
virtual int FireComment(SAMLCommentEventParams *e);
typedef struct {
const char *Text; int reserved; } SAMLCommentEventParams;
Unicode (Windows) virtual INT FireComment(SAMLCommentEventParams *e);
typedef struct {
LPCWSTR Text; INT reserved; } SAMLCommentEventParams;
#define EID_SAML_COMMENT 2

virtual INT IPWORKSAUTH_CALL FireComment(LPSTR &lpszText);
class SAMLCommentEventParams {
public:
  const QString &Text();

  int EventRetVal();
  void SetEventRetVal(int iRetVal);
};
// To handle, connect one or more slots to this signal. void Comment(SAMLCommentEventParams *e);
// Or, subclass SAML and override this emitter function. virtual int FireComment(SAMLCommentEventParams *e) {...}

Remarks

The Comment event is fired whenever a comment section (<!-- ..text... -->) is found in the document.

The full text of the comment is provided by the Text parameter.

EndElement Event (SAML Class)

Fired when an end-element tag is encountered.

Syntax

ANSI (Cross Platform)
virtual int FireEndElement(SAMLEndElementEventParams *e);
typedef struct {
const char *Namespace;
const char *Element;
const char *QName;
int IsEmpty; int reserved; } SAMLEndElementEventParams;
Unicode (Windows) virtual INT FireEndElement(SAMLEndElementEventParams *e);
typedef struct {
LPCWSTR Namespace;
LPCWSTR Element;
LPCWSTR QName;
BOOL IsEmpty; INT reserved; } SAMLEndElementEventParams;
#define EID_SAML_ENDELEMENT 3

virtual INT IPWORKSAUTH_CALL FireEndElement(LPSTR &lpszNamespace, LPSTR &lpszElement, LPSTR &lpszQName, BOOL &bIsEmpty);
class SAMLEndElementEventParams {
public:
  const QString &Namespace();

  const QString &Element();

  const QString &QName();

  bool IsEmpty();

  int EventRetVal();
  void SetEventRetVal(int iRetVal);
};
// To handle, connect one or more slots to this signal. void EndElement(SAMLEndElementEventParams *e);
// Or, subclass SAML and override this emitter function. virtual int FireEndElement(SAMLEndElementEventParams *e) {...}

Remarks

The EndElement event is fired when an end-element tag is found in the document.

The element name is provided by the Element parameter.

The IsEmpty parameter is true when the event corresponds with an empty element declaration.

Error Event (SAML Class)

Information about errors during data delivery.

Syntax

ANSI (Cross Platform)
virtual int FireError(SAMLErrorEventParams *e);
typedef struct {
int ErrorCode;
const char *Description; int reserved; } SAMLErrorEventParams;
Unicode (Windows) virtual INT FireError(SAMLErrorEventParams *e);
typedef struct {
INT ErrorCode;
LPCWSTR Description; INT reserved; } SAMLErrorEventParams;
#define EID_SAML_ERROR 4

virtual INT IPWORKSAUTH_CALL FireError(INT &iErrorCode, LPSTR &lpszDescription);
class SAMLErrorEventParams {
public:
  int ErrorCode();

  const QString &Description();

  int EventRetVal();
  void SetEventRetVal(int iRetVal);
};
// To handle, connect one or more slots to this signal. void Error(SAMLErrorEventParams *e);
// Or, subclass SAML and override this emitter function. virtual int FireError(SAMLErrorEventParams *e) {...}

Remarks

The Error event is fired in case of exceptional conditions during message processing. Normally the class fails with an error.

ErrorCode contains an error code and Description contains a textual description of the error. For a list of valid error codes and their descriptions, please refer to the Error Codes section.

PI Event (SAML Class)

Fired when a processing instruction section is encountered.

Syntax

ANSI (Cross Platform)
virtual int FirePI(SAMLPIEventParams *e);
typedef struct {
const char *Text; int reserved; } SAMLPIEventParams;
Unicode (Windows) virtual INT FirePI(SAMLPIEventParams *e);
typedef struct {
LPCWSTR Text; INT reserved; } SAMLPIEventParams;
#define EID_SAML_PI 5

virtual INT IPWORKSAUTH_CALL FirePI(LPSTR &lpszText);
class SAMLPIEventParams {
public:
  const QString &Text();

  int EventRetVal();
  void SetEventRetVal(int iRetVal);
};
// To handle, connect one or more slots to this signal. void PI(SAMLPIEventParams *e);
// Or, subclass SAML and override this emitter function. virtual int FirePI(SAMLPIEventParams *e) {...}

Remarks

The PI event is fired whenever a processing instruction section (<? ..text... ?>) is found in the document.

The full text of the processing instruction is provided by the Text parameter.

SSLServerAuthentication Event (SAML Class)

Fired after the server presents its certificate to the client.

Syntax

ANSI (Cross Platform)
virtual int FireSSLServerAuthentication(SAMLSSLServerAuthenticationEventParams *e);
typedef struct {
const char *CertEncoded; int lenCertEncoded;
const char *CertSubject;
const char *CertIssuer;
const char *Status;
int Accept; int reserved; } SAMLSSLServerAuthenticationEventParams;
Unicode (Windows) virtual INT FireSSLServerAuthentication(SAMLSSLServerAuthenticationEventParams *e);
typedef struct {
LPCSTR CertEncoded; INT lenCertEncoded;
LPCWSTR CertSubject;
LPCWSTR CertIssuer;
LPCWSTR Status;
BOOL Accept; INT reserved; } SAMLSSLServerAuthenticationEventParams;
#define EID_SAML_SSLSERVERAUTHENTICATION 6

virtual INT IPWORKSAUTH_CALL FireSSLServerAuthentication(LPSTR &lpCertEncoded, INT &lenCertEncoded, LPSTR &lpszCertSubject, LPSTR &lpszCertIssuer, LPSTR &lpszStatus, BOOL &bAccept);
class SAMLSSLServerAuthenticationEventParams {
public:
  const QByteArray &CertEncoded();

  const QString &CertSubject();

  const QString &CertIssuer();

  const QString &Status();

  bool Accept();
  void SetAccept(bool bAccept);

  int EventRetVal();
  void SetEventRetVal(int iRetVal);
};
// To handle, connect one or more slots to this signal. void SSLServerAuthentication(SAMLSSLServerAuthenticationEventParams *e);
// Or, subclass SAML and override this emitter function. virtual int FireSSLServerAuthentication(SAMLSSLServerAuthenticationEventParams *e) {...}

Remarks

This event is where the client can decide whether to continue with the connection process or not. 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 to continue or not.

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 (SAML Class)

Shows the progress of the secure connection.

Syntax

ANSI (Cross Platform)
virtual int FireSSLStatus(SAMLSSLStatusEventParams *e);
typedef struct {
const char *Message; int reserved; } SAMLSSLStatusEventParams;
Unicode (Windows) virtual INT FireSSLStatus(SAMLSSLStatusEventParams *e);
typedef struct {
LPCWSTR Message; INT reserved; } SAMLSSLStatusEventParams;
#define EID_SAML_SSLSTATUS 7

virtual INT IPWORKSAUTH_CALL FireSSLStatus(LPSTR &lpszMessage);
class SAMLSSLStatusEventParams {
public:
  const QString &Message();

  int EventRetVal();
  void SetEventRetVal(int iRetVal);
};
// To handle, connect one or more slots to this signal. void SSLStatus(SAMLSSLStatusEventParams *e);
// Or, subclass SAML and override this emitter function. virtual int FireSSLStatus(SAMLSSLStatusEventParams *e) {...}

Remarks

The event is fired for informational and logging purposes only. Used to track the progress of the connection.

StartElement Event (SAML Class)

Fired when a begin-element tag is encountered in the document.

Syntax

ANSI (Cross Platform)
virtual int FireStartElement(SAMLStartElementEventParams *e);
typedef struct {
const char *Namespace;
const char *Element;
const char *QName;
int IsEmpty; int reserved; } SAMLStartElementEventParams;
Unicode (Windows) virtual INT FireStartElement(SAMLStartElementEventParams *e);
typedef struct {
LPCWSTR Namespace;
LPCWSTR Element;
LPCWSTR QName;
BOOL IsEmpty; INT reserved; } SAMLStartElementEventParams;
#define EID_SAML_STARTELEMENT 8

virtual INT IPWORKSAUTH_CALL FireStartElement(LPSTR &lpszNamespace, LPSTR &lpszElement, LPSTR &lpszQName, BOOL &bIsEmpty);
class SAMLStartElementEventParams {
public:
  const QString &Namespace();

  const QString &Element();

  const QString &QName();

  bool IsEmpty();

  int EventRetVal();
  void SetEventRetVal(int iRetVal);
};
// To handle, connect one or more slots to this signal. void StartElement(SAMLStartElementEventParams *e);
// Or, subclass SAML and override this emitter function. virtual int FireStartElement(SAMLStartElementEventParams *e) {...}

Remarks

The StartElement event is fired when a begin-element tag is found in the document.

The element name is provided through the Element parameter. The attribute names and values (if any) are provided through the AttrName, AttrNamespace, AttrPrefix, and AttrValue properties.

The IsEmpty parameter is true when the event corresponds with an empty element declaration.

Config Settings (SAML Class)

The class 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 class, access to these internal properties is provided through the Config method.

SAML Config Settings

AssertionAudienceCount:   Specifies the number of Audience elements found in the assertion.

This configuration setting is used to access the Audience elements found in an assertion's AudienceRestriction element. The audience is useful when verifying who the assertion is intended for. This is used in conjunction with AssertionAudienceValue configuration setting. For instance, the below sample will iterate through all of the Audience elements in the assertion's AudienceRestriction element:

int audCount = int.Parse(component.Config("AssertionAudienceCount")); for(int i = 0; i < audCount; i++){ string curAudience = component.Config("AssertionAudienceValue[" + i + "]"); //... }

AssertionAudienceValue[i]:   Contains the audience value at the specified index.

This configuration setting provides the value of the Audience element at the index specified. See AssertionAudienceCount for details.

AssertionXPath:   The XPath to the assertion.

Normally when calling ParseAssertion, only the assertion itself should be passed in. In the event that the assertion is nested in other markup, set this to the XPath of the assertion to instruct the class where to find it. For encrypted assertions there is a similar EncryptedAssertionXPath configuration setting.

saml.Config("AssertionXPath=/Response/Assertion"); saml.ParseAssertion(Assertion);

The XPath to the assertion.

Normally when calling ParseAssertion, only the assertion itself should be passed in. In the event that the assertion is nested in other markup, set this to the XPath of the assertion to instruct the class where to find it. For encrypted assertions there is a similar EncryptedAssertionXPath configuration setting.

AssertionXPath:   The XPath to the assertion.

Normally when calling ParseAssertion, only the assertion itself should be passed in. In the event that the assertion is nested in other markup, set this to the XPath of the assertion to instruct the class where to find it. For encrypted assertions there is a similar EncryptedAssertionXPath configuration setting.

saml.Config("AssertionXPath=/Response/Assertion"); saml.ParseAssertion(Assertion);

The XPath to the assertion.

Normally when calling ParseAssertion, only the assertion itself should be passed in. In the event that the assertion is nested in other markup, set this to the XPath of the assertion to instruct the class where to find it. For encrypted assertions there is a similar EncryptedAssertionXPath configuration setting.

DecryptAssertion:   Whether to decrypt the assertion.

This setting specifies whether the class should decrypt the assertion. If set to True the class will use the certificate specified by Certificate to decrypt the assertion. The default value is False.

EncryptedAssertionXPath:   The XPath to the encrypted assertion.

Normally when calling ParseAssertion, only the encrypted assertion itself should be passed in. In the event that the encrypted assertion is nested in other markup, set this to the XPath of the encrypted assertion to instruct the class where to find it. For plaintext assertions there is a similar AssertionXPath configuration setting.

saml.Config("EncryptedAssertionXPath=/Response/EncryptedAssertion""); saml.ParseAssertion(Assertion);

RawRequest:   Returns the raw HTTP request.

This may be queried after calling GetAssertion or GetSecurityToken. This will return the raw HTTP request which may be useful for troubleshooting purposes. For instance: component.GetAssertion(); MyString = component.Config("RawRequest");

RawResponse:   Returns the raw HTTP response.

This may be queried after calling GetAssertion or GetSecurityToken. This will return the raw HTTP response which may be useful for troubleshooting purposes. For instance: component.GetAssertion(); MyString = component.Config("RawResponse");

UserRealm:   The URL of a web service to determine the LocalSTS (if any).

This setting specifies the URL of a web service which will be queried to determine the LocalSTS value. This is only applicable when AuthMode is set to 0 (camSharePointOnline) or 1 (camDynamicsCRM). When AuthMode is set to either 0 or 1 this setting is automatically set to "https://login.microsoftonline.com/GetUserRealm.srf". In most cases this does not need to be changed.

Base Config Settings

BuildInfo:   Information about the product's build.

When queried, this setting will return a string containing information about the product's build.

CodePage:   The system code page used for Unicode to Multibyte translations.

The default code page is Unicode UTF-8 (65001).

The following is a list of valid code page identifiers:

IdentifierName
037IBM EBCDIC - U.S./Canada
437OEM - United States
500IBM EBCDIC - International
708Arabic - ASMO 708
709Arabic - ASMO 449+, BCON V4
710Arabic - Transparent Arabic
720Arabic - Transparent ASMO
737OEM - Greek (formerly 437G)
775OEM - Baltic
850OEM - Multilingual Latin I
852OEM - Latin II
855OEM - Cyrillic (primarily Russian)
857OEM - Turkish
858OEM - Multilingual Latin I + Euro symbol
860OEM - Portuguese
861OEM - Icelandic
862OEM - Hebrew
863OEM - Canadian-French
864OEM - Arabic
865OEM - Nordic
866OEM - Russian
869OEM - Modern Greek
870IBM EBCDIC - Multilingual/ROECE (Latin-2)
874ANSI/OEM - Thai (same as 28605, ISO 8859-15)
875IBM EBCDIC - Modern Greek
932ANSI/OEM - Japanese, Shift-JIS
936ANSI/OEM - Simplified Chinese (PRC, Singapore)
949ANSI/OEM - Korean (Unified Hangul Code)
950ANSI/OEM - Traditional Chinese (Taiwan; Hong Kong SAR, PRC)
1026IBM EBCDIC - Turkish (Latin-5)
1047IBM EBCDIC - Latin 1/Open System
1140IBM EBCDIC - U.S./Canada (037 + Euro symbol)
1141IBM EBCDIC - Germany (20273 + Euro symbol)
1142IBM EBCDIC - Denmark/Norway (20277 + Euro symbol)
1143IBM EBCDIC - Finland/Sweden (20278 + Euro symbol)
1144IBM EBCDIC - Italy (20280 + Euro symbol)
1145IBM EBCDIC - Latin America/Spain (20284 + Euro symbol)
1146IBM EBCDIC - United Kingdom (20285 + Euro symbol)
1147IBM EBCDIC - France (20297 + Euro symbol)
1148IBM EBCDIC - International (500 + Euro symbol)
1149IBM EBCDIC - Icelandic (20871 + Euro symbol)
1200Unicode UCS-2 Little-Endian (BMP of ISO 10646)
1201Unicode UCS-2 Big-Endian
1250ANSI - Central European
1251ANSI - Cyrillic
1252ANSI - Latin I
1253ANSI - Greek
1254ANSI - Turkish
1255ANSI - Hebrew
1256ANSI - Arabic
1257ANSI - Baltic
1258ANSI/OEM - Vietnamese
1361Korean (Johab)
10000MAC - Roman
10001MAC - Japanese
10002MAC - Traditional Chinese (Big5)
10003MAC - Korean
10004MAC - Arabic
10005MAC - Hebrew
10006MAC - Greek I
10007MAC - Cyrillic
10008MAC - Simplified Chinese (GB 2312)
10010MAC - Romania
10017MAC - Ukraine
10021MAC - Thai
10029MAC - Latin II
10079MAC - Icelandic
10081MAC - Turkish
10082MAC - Croatia
12000Unicode UCS-4 Little-Endian
12001Unicode UCS-4 Big-Endian
20000CNS - Taiwan
20001TCA - Taiwan
20002Eten - Taiwan
20003IBM5550 - Taiwan
20004TeleText - Taiwan
20005Wang - Taiwan
20105IA5 IRV International Alphabet No. 5 (7-bit)
20106IA5 German (7-bit)
20107IA5 Swedish (7-bit)
20108IA5 Norwegian (7-bit)
20127US-ASCII (7-bit)
20261T.61
20269ISO 6937 Non-Spacing Accent
20273IBM EBCDIC - Germany
20277IBM EBCDIC - Denmark/Norway
20278IBM EBCDIC - Finland/Sweden
20280IBM EBCDIC - Italy
20284IBM EBCDIC - Latin America/Spain
20285IBM EBCDIC - United Kingdom
20290IBM EBCDIC - Japanese Katakana Extended
20297IBM EBCDIC - France
20420IBM EBCDIC - Arabic
20423IBM EBCDIC - Greek
20424IBM EBCDIC - Hebrew
20833IBM EBCDIC - Korean Extended
20838IBM EBCDIC - Thai
20866Russian - KOI8-R
20871IBM EBCDIC - Icelandic
20880IBM EBCDIC - Cyrillic (Russian)
20905IBM EBCDIC - Turkish
20924IBM EBCDIC - Latin-1/Open System (1047 + Euro symbol)
20932JIS X 0208-1990 & 0121-1990
20936Simplified Chinese (GB2312)
21025IBM EBCDIC - Cyrillic (Serbian, Bulgarian)
21027Extended Alpha Lowercase
21866Ukrainian (KOI8-U)
28591ISO 8859-1 Latin I
28592ISO 8859-2 Central Europe
28593ISO 8859-3 Latin 3
28594ISO 8859-4 Baltic
28595ISO 8859-5 Cyrillic
28596ISO 8859-6 Arabic
28597ISO 8859-7 Greek
28598ISO 8859-8 Hebrew
28599ISO 8859-9 Latin 5
28605ISO 8859-15 Latin 9
29001Europa 3
38598ISO 8859-8 Hebrew
50220ISO 2022 Japanese with no halfwidth Katakana
50221ISO 2022 Japanese with halfwidth Katakana
50222ISO 2022 Japanese JIS X 0201-1989
50225ISO 2022 Korean
50227ISO 2022 Simplified Chinese
50229ISO 2022 Traditional Chinese
50930Japanese (Katakana) Extended
50931US/Canada and Japanese
50933Korean Extended and Korean
50935Simplified Chinese Extended and Simplified Chinese
50936Simplified Chinese
50937US/Canada and Traditional Chinese
50939Japanese (Latin) Extended and Japanese
51932EUC - Japanese
51936EUC - Simplified Chinese
51949EUC - Korean
51950EUC - Traditional Chinese
52936HZ-GB2312 Simplified Chinese
54936Windows XP: GB18030 Simplified Chinese (4 Byte)
57002ISCII Devanagari
57003ISCII Bengali
57004ISCII Tamil
57005ISCII Telugu
57006ISCII Assamese
57007ISCII Oriya
57008ISCII Kannada
57009ISCII Malayalam
57010ISCII Gujarati
57011ISCII Punjabi
65000Unicode UTF-7
65001Unicode UTF-8
The following is a list of valid code page identifiers for Mac OS only:
IdentifierName
1ASCII
2NEXTSTEP
3JapaneseEUC
4UTF8
5ISOLatin1
6Symbol
7NonLossyASCII
8ShiftJIS
9ISOLatin2
10Unicode
11WindowsCP1251
12WindowsCP1252
13WindowsCP1253
14WindowsCP1254
15WindowsCP1250
21ISO2022JP
30MacOSRoman
10UTF16String
0x90000100UTF16BigEndian
0x94000100UTF16LittleEndian
0x8c000100UTF32String
0x98000100UTF32BigEndian
0x9c000100UTF32LittleEndian
65536Proprietary

LicenseInfo:   Information about the current license.

When queried, this setting will return a string containing information about the license this instance of a class 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.
MaskSensitive:   Whether sensitive data is masked in log messages.

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 classes: AS3Receiver, AS3Sender, Atom, Client(3DS), FTP, FTPServer, IMAP, OFTPClient, SSHClient, SCP, Server(3DS), Sexec, SFTP, SFTPServer, SSHServer, TCPClient, TCPServer.

ProcessIdleEvents:   Whether the class uses its internal event loop to process events when the main thread is idle.

If set to False, the class will not fire internal idle events. Set this to False to use the class in a background thread on Mac OS. By default, this setting is True.

SelectWaitMillis:   The length of time in milliseconds the class will wait when DoEvents is called if there are no events to process.

If there are no events to process when DoEvents is called, the class will wait for the amount of time specified here before returning. The default value is 20.

UseFIPSCompliantAPI:   Tells the class whether or not to use FIPS certified APIs.

When set to true, the class 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 classes 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.

UseInternalSecurityAPI:   Tells the class whether or not to use the system security libraries or an internal implementation.

When set to false, the class will use the system security libraries by default to perform cryptographic functions where applicable.

Setting this setting to true tells the class to use the internal implementation instead of using the system security libraries.

On Windows, this setting is set to false by default. On Linux/macOS, this setting is set to true by default.

To use the system security libraries for Linux, OpenSSL support must be enabled. For more information on how to enable OpenSSL, please refer to the OpenSSL Notes section.

Trappable Errors (SAML Class)

Error Handling (C++)

Call the GetLastErrorCode() method to obtain the last called method's result code; 0 indicates success, while a non-zero error code indicates that this method encountered an error during its execution. Known error codes are listed below. If an error occurs, the GetLastError() method can be called to retrieve the associated error message.

SAML Errors

603   Cannot obtain assertion. LocalSTS must be set.

The class may also return one of the following error codes, which are inherited from other classes.

HTTP Errors

118   Firewall Error. Error description contains detailed message.
143   Busy executing current method.
151   HTTP protocol error. The error message has the server response.
152   No server specified in URL
153   Specified URLScheme is invalid.
155   Range operation is not supported by server.
156   Invalid cookie index (out of range).
301   Interrupted.
302   Can't open AttachedFile.

The class may also return one of the following error codes, which are inherited from other classes.

TCPClient Errors

100   You cannot change the RemotePort at this time. A connection is in progress.
101   You cannot change the RemoteHost (Server) at this time. A connection is in progress.
102   The RemoteHost address is invalid (0.0.0.0).
104   Already connected. If you want to reconnect, close the current connection first.
106   You cannot change the LocalPort at this time. A connection is in progress.
107   You cannot change the LocalHost at this time. A connection is in progress.
112   You cannot change MaxLineLength at this time. A connection is in progress.
116   RemotePort cannot be zero. Please specify a valid service port number.
117   You cannot change the UseConnection option while the class is active.
135   Operation would block.
201   Timeout.
211   Action impossible in control's present state.
212   Action impossible while not connected.
213   Action impossible while listening.
301   Timeout.
302   Could not open file.
434   Unable to convert string to selected CodePage.
1105   Already connecting. If you want to reconnect, close the current connection first.
1117   You need to connect first.
1119   You cannot change the LocalHost at this time. A connection is in progress.
1120   Connection dropped by remote host.

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).