SAML Component

Properties   Methods   Events   Config Settings   Errors  

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

Syntax

nsoftware.IPWorksAuth.Saml

Remarks

The SAML component provides an easy-to-use interface to obtain security tokens and assertions. The component 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 component 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 component will use the certificate specified in SignerCert to verify the signature. If SignerCert is not set the component 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 component 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 component will use the certificate specified in SignerCert to verify the signature. If SignerCert is not set the component 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 component 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.
CertificateThe certificate used for decryption.
ClaimsA collection of claims.
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.
ProxyThis property includes a set of properties related to proxy access.
SecurityTokenXMLThe security token XML.
SignerCertThe certificate used for signature verification.
SSLAcceptServerCertInstructs the component to unconditionally accept the server certificate that matches the supplied certificate.
SSLCertThe certificate to be used during SSL negotiation.
SSLProviderThis specifies the SSL/TLS implementation to use.
SSLServerCertThe server certificate for the last established connection.
UserThe username.
XAttributesA collection of attributes of the current element.
XChildrenCollection of child elements of the currently selected XML 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 component 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 component 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 component 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.
GUIAvailableTells the component whether or not a message loop is available for processing events.
LicenseInfoInformation about the current license.
MaskSensitiveWhether sensitive data is masked in log messages.
UseFIPSCompliantAPITells the component whether or not to use FIPS certified APIs.
UseInternalSecurityAPITells the component whether or not to use the system security libraries or an internal implementation.

ApplicationURN Property (SAML Component)

The application's Uniform Resource Name (URN).

Syntax

public string ApplicationURN { get; set; }
Public Property ApplicationURN As String

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.

AssertionId Property (SAML Component)

The assertion id.

Syntax

public string AssertionId { get; }
Public ReadOnly Property AssertionId As String

Default Value

""

Remarks

This property hold the id of the assertion.

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

AssertionIssueInstant Property (SAML Component)

The time in UTC that the assertion was issued.

Syntax

public string AssertionIssueInstant { get; }
Public ReadOnly Property AssertionIssueInstant As String

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.

AssertionIssuer Property (SAML Component)

The assertion issuer.

Syntax

public string AssertionIssuer { get; }
Public ReadOnly Property AssertionIssuer As String

Default Value

""

Remarks

This property holds the issuer of the assertion.

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

AssertionNotBefore Property (SAML Component)

The date on which the assertion becomes valid.

Syntax

public string AssertionNotBefore { get; }
Public ReadOnly Property AssertionNotBefore As String

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.

AssertionNotOnOrAfter Property (SAML Component)

The time at which the assertion expires.

Syntax

public string AssertionNotOnOrAfter { get; }
Public ReadOnly Property AssertionNotOnOrAfter As String

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.

AssertionSubject Property (SAML Component)

The subject of the assertion.

Syntax

public string AssertionSubject { get; }
Public ReadOnly Property AssertionSubject As String

Default Value

""

Remarks

This property holds the subject of the assertion.

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

AssertionVersion Property (SAML Component)

The version of the assertion.

Syntax

public SamlAssertionVersions AssertionVersion { get; set; }

enum SamlAssertionVersions { svSAMLv11, svSAMLv20 }
Public Property AssertionVersion As SamlAssertionVersions

Enum SamlAssertionVersions svSAMLv11 svSAMLv20 End Enum

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.

AssertionXML Property (SAML Component)

The assertion XML.

Syntax

public string AssertionXML { get; }
Public ReadOnly Property AssertionXML As String

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.

AuthMode Property (SAML Component)

The authentication mode.

Syntax

public SamlAuthModes AuthMode { get; set; }

enum SamlAuthModes { camSharePointOnline, camDynamicsCRM, camADFS, camCustom }
Public Property AuthMode As SamlAuthModes

Enum SamlAuthModes camSharePointOnline camDynamicsCRM camADFS camCustom End Enum

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.

Certificate Property (SAML Component)

The certificate used for decryption.

Syntax

public Certificate Certificate { get; set; }
Public Property Certificate As Certificate

Remarks

This property specifies the certificate used for decryption. This is only applicable if DecryptAssertion is set to True.

This property is not available at design time.

Please refer to the Certificate type for a complete list of fields.

Claims Property (SAML Component)

A collection of claims.

Syntax

public ClaimList Claims { get; }
Public ReadOnly Property Claims As ClaimList

Remarks

This property is a collection of claims parsed from the assertion. This is populated after calling GetAssertion or ParseAssertion.

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

Please refer to the Claim type for a complete list of fields.

FederationSTS Property (SAML Component)

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

Syntax

public string FederationSTS { get; set; }
Public Property FederationSTS As String

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.

FederationURN Property (SAML Component)

The federation Uniform Resource Name (URN).

Syntax

public string FederationURN { get; set; }
Public Property FederationURN As String

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.

LocalSTS Property (SAML Component)

The local Security Token Service (STS).

Syntax

public string LocalSTS { get; set; }
Public Property LocalSTS As String

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

Password Property (SAML Component)

The user's password.

Syntax

public string Password { get; set; }
Public Property Password As String

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.

Proxy Property (SAML Component)

This property includes a set of properties related to proxy access.

Syntax

public Proxy Proxy { get; set; }
Public Property Proxy As Proxy

Remarks

This property contains fields describing the proxy through which the component will attempt to connect.

Please refer to the Proxy type for a complete list of fields.

SecurityTokenXML Property (SAML Component)

The security token XML.

Syntax

public string SecurityTokenXML { get; }
Public ReadOnly Property SecurityTokenXML As String

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.

SignerCert Property (SAML Component)

The certificate used for signature verification.

Syntax

public Certificate SignerCert { get; set; }
Public Property SignerCert As Certificate

Remarks

This property optionally specifies a certificate used for signature verification. When calling GetAssertion or ParseAssertion, if the assertion is signed the component will use the certificate specified in this property to verify the signature. If this property is not set the component will attempt to parse the certificate present in the assertion to perform verification.

This property is not available at design time.

Please refer to the Certificate type for a complete list of fields.

SSLAcceptServerCert Property (SAML Component)

Instructs the component to unconditionally accept the server certificate that matches the supplied certificate.

Syntax

public Certificate SSLAcceptServerCert { get; set; }
Public Property SSLAcceptServerCert As Certificate

Remarks

If it finds any issues with the certificate presented by the server, the component will normally terminate the connection with an error.

You may override this behavior by supplying a value for SSLAcceptServerCert. If the certificate supplied in SSLAcceptServerCert is the same as the certificate presented by the server, then the server certificate is accepted unconditionally, and the connection will continue normally.

Please note that this functionality is provided only for cases where you otherwise know that you are communicating with the right server. If used improperly, this property may create a security breach. Use it at your own risk.

Please refer to the Certificate type for a complete list of fields.

SSLCert Property (SAML Component)

The certificate to be used during SSL negotiation.

Syntax

public Certificate SSLCert { get; set; }
Public Property SSLCert As Certificate

Remarks

The digital certificate that the component will use during SSL negotiation. Set this property to a valid certificate before starting SSL negotiation. To set a certificate, you may set the Encoded field to the encoded certificate. To select a certificate, use the store and subject fields.

Please refer to the Certificate type for a complete list of fields.

SSLProvider Property (SAML Component)

This specifies the SSL/TLS implementation to use.

Syntax

public SamlSSLProviders SSLProvider { get; set; }

enum SamlSSLProviders { sslpAutomatic, sslpPlatform, sslpInternal }
Public Property SSLProvider As SamlSSLProviders

Enum SamlSSLProviders sslpAutomatic sslpPlatform sslpInternal End Enum

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 component 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 component will select a provider depending on the current platform.

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

The .NET Standard library will always use the internal implementation on all platforms.

SSLServerCert Property (SAML Component)

The server certificate for the last established connection.

Syntax

public Certificate SSLServerCert { get; }
Public ReadOnly Property SSLServerCert As Certificate

Remarks

SSLServerCert contains the server certificate for the last established connection.

SSLServerCert is reset every time a new connection is attempted.

This property is read-only.

Please refer to the Certificate type for a complete list of fields.

User Property (SAML Component)

The username.

Syntax

public string User { get; set; }
Public Property User As String

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.

XAttributes Property (SAML Component)

A collection of attributes of the current element.

Syntax

public XMLAttributeList XAttributes { get; }
Public Property XAttributes As XMLAttributeList

Remarks

This collection consists of all attributes of the current XML element. The component parses each attribute into a collection of XMLAttribute types.

This collection is indexed from 0 to count -1.

This property is not available at design time.

Please refer to the XMLAttribute type for a complete list of fields.

XChildren Property (SAML Component)

Collection of child elements of the currently selected XML element.

Syntax

public XMLElementList XChildren { get; }
Public Property XChildren As XMLElementList

Remarks

This property contains a collection of child elements of the currently selected XML element. The elements are provided in the collection in the same order they are found in the XML document.

This collection is indexed from 0 to count -1.

This property is not available at design time.

Please refer to the XMLElement type for a complete list of fields.

XElement Property (SAML Component)

The name of the current element.

Syntax

public string XElement { get; set; }
Public Property XElement As String

Default Value

""

Remarks

The current element is specified via the XPath property.

XNamespace Property (SAML Component)

The namespace of the current element.

Syntax

public string XNamespace { get; set; }
Public Property XNamespace As String

Default Value

""

Remarks

The current element is specified via the XPath property.

XParent Property (SAML Component)

The parent of the current element.

Syntax

public string XParent { get; }
Public ReadOnly Property XParent As String

Default Value

""

Remarks

The current element is specified via the XPath property.

This property is read-only.

XPath Property (SAML Component)

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

Syntax

public string XPath { get; set; }
Public Property XPath As String

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, XChildren , and XText providing other properties of the element. The attributes of the current element are provided in the XAttributes collection.

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]"

XPrefix Property (SAML Component)

The prefix of the current element.

Syntax

public string XPrefix { get; set; }
Public Property XPrefix As String

Default Value

""

Remarks

The current element is specified via the XPath property.

XSubTree Property (SAML Component)

A snapshot of the current element in the document.

Syntax

public string XSubTree { get; }
Public ReadOnly Property XSubTree As String

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.

XText Property (SAML Component)

The text of the current element.

Syntax

public string XText { get; set; }
Public Property XText As String

Default Value

""

Remarks

The current element is specified via the XPath property.

Config Method (SAML Component)

Sets or retrieves a configuration setting.

Syntax

public string Config(string configurationString);

Async Version
public async Task<string> Config(string configurationString);
public async Task<string> Config(string configurationString, CancellationToken cancellationToken);
Public Function Config(ByVal ConfigurationString As String) As String

Async Version
Public Function Config(ByVal ConfigurationString As String) As Task(Of String)
Public Function Config(ByVal ConfigurationString As String, cancellationToken As CancellationToken) As Task(Of String)

Remarks

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

These settings are similar in functionality to properties, but they are rarely used. In order to avoid "polluting" the property namespace of the component, access to these internal properties is provided through the Config method.

To set a configuration setting named PROPERTY, you must call Config("PROPERTY=VALUE"), where VALUE is the value of the setting expressed as a string. For boolean values, use the strings "True", "False", "0", "1", "Yes", or "No" (case does not matter).

To read (query) the value of a configuration setting, you must call Config("PROPERTY"). The value will be returned as a string.

GetAssertion Method (SAML Component)

Gets the assertion.

Syntax

public void GetAssertion();

Async Version
public async Task GetAssertion();
public async Task GetAssertion(CancellationToken cancellationToken);
Public Sub GetAssertion()

Async Version
Public Sub GetAssertion() As Task
Public Sub GetAssertion(cancellationToken As CancellationToken) As Task

Remarks

This method communicates with LocalSTS as to obtain an assertion.

When AuthMode is set to 0 (camSharePointOnline) or 1 (camDynamicsCRM) the component 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 component will use the certificate specified in SignerCert to verify the signature. If SignerCert is not set the component 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:

GetSecurityToken Method (SAML Component)

Gets the security token.

Syntax

public void GetSecurityToken();

Async Version
public async Task GetSecurityToken();
public async Task GetSecurityToken(CancellationToken cancellationToken);
Public Sub GetSecurityToken()

Async Version
Public Sub GetSecurityToken() As Task
Public Sub GetSecurityToken(cancellationToken As CancellationToken) As Task

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 component 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:

ParseAssertion Method (SAML Component)

Parses the specified assertion.

Syntax

public void ParseAssertion(string assertion);

Async Version
public async Task ParseAssertion(string assertion);
public async Task ParseAssertion(string assertion, CancellationToken cancellationToken);
Public Sub ParseAssertion(ByVal assertion As String)

Async Version
Public Sub ParseAssertion(ByVal assertion As String) As Task
Public Sub ParseAssertion(ByVal assertion As String, cancellationToken As CancellationToken) As Task

Remarks

This method parses the assertion specified by the assertion parameter. If the assertion is signed the component will use the certificate specified in SignerCert to verify the signature. If SignerCert is not set the component 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:

Characters Event (SAML Component)

Fired for plain text segments of the input stream.

Syntax

public event OnCharactersHandler OnCharacters;

public delegate void OnCharactersHandler(object sender, SamlCharactersEventArgs e);

public class SamlCharactersEventArgs : EventArgs {
  public string Text { get; }
}
Public Event OnCharacters As OnCharactersHandler

Public Delegate Sub OnCharactersHandler(sender As Object, e As SamlCharactersEventArgs)

Public Class SamlCharactersEventArgs Inherits EventArgs
  Public ReadOnly Property Text As String
End Class

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

Fired when a comment section is encountered.

Syntax

public event OnCommentHandler OnComment;

public delegate void OnCommentHandler(object sender, SamlCommentEventArgs e);

public class SamlCommentEventArgs : EventArgs {
  public string Text { get; }
}
Public Event OnComment As OnCommentHandler

Public Delegate Sub OnCommentHandler(sender As Object, e As SamlCommentEventArgs)

Public Class SamlCommentEventArgs Inherits EventArgs
  Public ReadOnly Property Text As String
End Class

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

Fired when an end-element tag is encountered.

Syntax

public event OnEndElementHandler OnEndElement;

public delegate void OnEndElementHandler(object sender, SamlEndElementEventArgs e);

public class SamlEndElementEventArgs : EventArgs {
  public string Namespace { get; }
  public string Element { get; }
  public string QName { get; }
  public bool IsEmpty { get; }
}
Public Event OnEndElement As OnEndElementHandler

Public Delegate Sub OnEndElementHandler(sender As Object, e As SamlEndElementEventArgs)

Public Class SamlEndElementEventArgs Inherits EventArgs
  Public ReadOnly Property Namespace As String
  Public ReadOnly Property Element As String
  Public ReadOnly Property QName As String
  Public ReadOnly Property IsEmpty As Boolean
End Class

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

Information about errors during data delivery.

Syntax

public event OnErrorHandler OnError;

public delegate void OnErrorHandler(object sender, SamlErrorEventArgs e);

public class SamlErrorEventArgs : EventArgs {
  public int ErrorCode { get; }
  public string Description { get; }
}
Public Event OnError As OnErrorHandler

Public Delegate Sub OnErrorHandler(sender As Object, e As SamlErrorEventArgs)

Public Class SamlErrorEventArgs Inherits EventArgs
  Public ReadOnly Property ErrorCode As Integer
  Public ReadOnly Property Description As String
End Class

Remarks

The Error event is fired in case of exceptional conditions during message processing. Normally the component throws an exception.

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

Fired when a processing instruction section is encountered.

Syntax

public event OnPIHandler OnPI;

public delegate void OnPIHandler(object sender, SamlPIEventArgs e);

public class SamlPIEventArgs : EventArgs {
  public string Text { get; }
}
Public Event OnPI As OnPIHandler

Public Delegate Sub OnPIHandler(sender As Object, e As SamlPIEventArgs)

Public Class SamlPIEventArgs Inherits EventArgs
  Public ReadOnly Property Text As String
End Class

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

Fired after the server presents its certificate to the client.

Syntax

public event OnSSLServerAuthenticationHandler OnSSLServerAuthentication;

public delegate void OnSSLServerAuthenticationHandler(object sender, SamlSSLServerAuthenticationEventArgs e);

public class SamlSSLServerAuthenticationEventArgs : EventArgs {
  public string CertEncoded { get; }
public byte[] CertEncodedB { get; } public string CertSubject { get; } public string CertIssuer { get; } public string Status { get; } public bool Accept { get; set; } }
Public Event OnSSLServerAuthentication As OnSSLServerAuthenticationHandler

Public Delegate Sub OnSSLServerAuthenticationHandler(sender As Object, e As SamlSSLServerAuthenticationEventArgs)

Public Class SamlSSLServerAuthenticationEventArgs Inherits EventArgs
  Public ReadOnly Property CertEncoded As String
Public ReadOnly Property CertEncodedB As Byte() Public ReadOnly Property CertSubject As String Public ReadOnly Property CertIssuer As String Public ReadOnly Property Status As String Public Property Accept As Boolean End Class

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

Shows the progress of the secure connection.

Syntax

public event OnSSLStatusHandler OnSSLStatus;

public delegate void OnSSLStatusHandler(object sender, SamlSSLStatusEventArgs e);

public class SamlSSLStatusEventArgs : EventArgs {
  public string Message { get; }
}
Public Event OnSSLStatus As OnSSLStatusHandler

Public Delegate Sub OnSSLStatusHandler(sender As Object, e As SamlSSLStatusEventArgs)

Public Class SamlSSLStatusEventArgs Inherits EventArgs
  Public ReadOnly Property Message As String
End Class

Remarks

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

StartElement Event (SAML Component)

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

Syntax

public event OnStartElementHandler OnStartElement;

public delegate void OnStartElementHandler(object sender, SamlStartElementEventArgs e);

public class SamlStartElementEventArgs : EventArgs {
  public string Namespace { get; }
  public string Element { get; }
  public string QName { get; }
  public bool IsEmpty { get; }
}
Public Event OnStartElement As OnStartElementHandler

Public Delegate Sub OnStartElementHandler(sender As Object, e As SamlStartElementEventArgs)

Public Class SamlStartElementEventArgs Inherits EventArgs
  Public ReadOnly Property Namespace As String
  Public ReadOnly Property Element As String
  Public ReadOnly Property QName As String
  Public ReadOnly Property IsEmpty As Boolean
End Class

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 XAttributes collection.

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

Certificate Type

This is the digital certificate being used.

Remarks

This type describes the current digital certificate. The certificate may be a public or private key. The fields are used to identify or select certificates.

Fields

EffectiveDate
string (read-only)

Default Value: ""

This is the date on which this certificate becomes valid. Before this date, it is not valid. The following example illustrates the format of an encoded date:

23-Jan-2000 15:00:00.

Encoded
string

Default Value: ""

This is the certificate (PEM/base64 encoded). This field is used to assign a specific certificate. The Store and Subject fields also may be used to specify a certificate.

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

EncodedB
byte []

Default Value: ""

This is the certificate (PEM/base64 encoded). This field is used to assign a specific certificate. The Store and Subject fields also may be used to specify a certificate.

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

ExpirationDate
string (read-only)

Default Value: ""

This is the date the certificate expires. After this date, the certificate will no longer be valid. The following example illustrates the format of an encoded date:

23-Jan-2001 15:00:00.

ExtendedKeyUsage
string

Default Value: ""

This is a comma-delimited list of extended key usage identifiers. These are the same as ASN.1 object identifiers (OIDs).

Fingerprint
string (read-only)

Default Value: ""

This is the hex-encoded, 16-byte MD5 fingerprint of the certificate. This property is primarily used for keys which do not have a corresponding X.509 public certificate, such as PEM keys that only contain a private key. It is commonly used for SSH keys.

The following example illustrates the format: bc:2a:72:af:fe:58:17:43:7a:5f:ba:5a:7c:90:f7:02

FingerprintSHA1
string (read-only)

Default Value: ""

This is the hex-encoded, 20-byte SHA-1 fingerprint of the certificate. This property is primarily used for keys which do not have a corresponding X.509 public certificate, such as PEM keys that only contain a private key. It is commonly used for SSH keys.

The following example illustrates the format: 30:7b:fa:38:65:83:ff:da:b4:4e:07:3f:17:b8:a4:ed:80:be:ff:84

FingerprintSHA256
string (read-only)

Default Value: ""

This is the hex-encoded, 32-byte SHA-256 fingerprint of the certificate. This property is primarily used for keys which do not have a corresponding X.509 public certificate, such as PEM keys that only contain a private key. It is commonly used for SSH keys.

The following example illustrates the format: 6a:80:5c:33:a9:43:ea:b0:96:12:8a:64:96:30:ef:4a:8a:96:86:ce:f4:c7:be:10:24:8e:2b:60:9e:f3:59:53

Issuer
string (read-only)

Default Value: ""

This is the issuer of the certificate. This field contains a string representation of the name of the issuing authority for the certificate.

PrivateKey
string (read-only)

Default Value: ""

This is the private key of the certificate (if available). The key is provided as PEM/Base64-encoded data.

Note: The PrivateKey may be available but not exportable. In this case, PrivateKey returns an empty string.

PrivateKeyAvailable
bool (read-only)

Default Value: False

This field shows whether a PrivateKey is available for the selected certificate. If PrivateKeyAvailable is True, the certificate may be used for authentication purposes (e.g., server authentication).

PrivateKeyContainer
string (read-only)

Default Value: ""

This is the name of the PrivateKey container for the certificate (if available). This functionality is available only on Windows platforms.

PublicKey
string (read-only)

Default Value: ""

This is the public key of the certificate. The key is provided as PEM/Base64-encoded data.

PublicKeyAlgorithm
string

Default Value: ""

This field contains the textual description of the certificate's public key algorithm. The property contains either the name of the algorithm (e.g., "RSA" or "RSA_DH") or an object identifier (OID) string representing the algorithm.

PublicKeyLength
int (read-only)

Default Value: 0

This is the length of the certificate's public key (in bits). Common values are 512, 1024, and 2048.

SerialNumber
string (read-only)

Default Value: ""

This is the serial number of the certificate encoded as a string. The number is encoded as a series of hexadecimal digits, with each pair representing a byte of the serial number.

SignatureAlgorithm
string (read-only)

Default Value: ""

The field contains the text description of the certificate's signature algorithm. The property contains either the name of the algorithm (e.g., "RSA" or "RSA_MD5RSA") or an object identifier (OID) string representing the algorithm.

Store
string

Default Value: "MY"

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

The StoreType field denotes the type of the certificate store specified by Store. If the store is password protected, specify the password in StorePassword.

Store is used in conjunction with the Subject field to specify client certificates. If Store has a value, and Subject or Encoded is set, a search for a certificate is initiated. Please see the Subject field 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).

StoreB
byte []

Default Value: "MY"

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

The StoreType field denotes the type of the certificate store specified by Store. If the store is password protected, specify the password in StorePassword.

Store is used in conjunction with the Subject field to specify client certificates. If Store has a value, and Subject or Encoded is set, a search for a certificate is initiated. Please see the Subject field 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).

StorePassword
string

Default Value: ""

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

StoreType
CertStoreTypes

Default Value: 0

This is the type of certificate store for this certificate.

The component supports both public and private keys in a variety of formats. When the cstAuto value is used the component will automatically determine the type. This field 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 component. 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 Store and set StorePassword 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.

Subject
string

Default Value: ""

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

This field will be populated with the full subject of the loaded certificate. When loading a certificate the subject is used to locate the certificate in the store.

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.

SubjectAltNames
string (read-only)

Default Value: ""

This field contains comma-separated lists of alternative subject names for the certificate.

ThumbprintMD5
string (read-only)

Default Value: ""

This field contains the MD5 hash of the certificate. It is primarily used for X.509 certificates. If the hash does not already exist, it is automatically computed.

ThumbprintSHA1
string (read-only)

Default Value: ""

This field contains the SHA-1 hash of the certificate. It is primarily used for X.509 certificates. If the hash does not already exist, it is automatically computed.

ThumbprintSHA256
string (read-only)

Default Value: ""

This field contains the SHA-256 hash of the certificate. It is primarily used for X.509 certificates. If the hash does not already exist, it is automatically computed.

Usage
string

Default Value: ""

This field contains the text description of UsageFlags.

This value will be of one or more of the following strings and will be separated by commas:

  • Digital Signatures
  • Key Authentication
  • Key Encryption
  • Data Encryption
  • Key Agreement
  • Certificate Signing
  • Key Signing

If the provider is OpenSSL, the value is a comma-separated list of X.509 certificate extension names.

UsageFlags
int

Default Value: 0

This field contains the flags that show intended use for the certificate. The value of UsageFlags is a combination of the following flags:

0x80Digital Signatures
0x40Key Authentication (Non-Repudiation)
0x20Key Encryption
0x10Data Encryption
0x08Key Agreement
0x04Certificate Signing
0x02Key Signing

Please see the Usage field for a text representation of UsageFlags.

This functionality currently is not available when the provider is OpenSSL.

Version
string (read-only)

Default Value: ""

This field contains the certificate's version number. The possible values are the strings "V1", "V2", and "V3".

Constructors

public Certificate();
Public Certificate()

Creates a Certificate instance whose properties can be set. This is useful for use with CERTMGR when generating new certificates.

public Certificate(string certificateFile);
Public Certificate(ByVal CertificateFile As String)

Opens CertificateFile and reads out the contents as an X509 public key.

public Certificate(byte[] certificateData);
Public Certificate(ByVal CertificateData As Byte())

Parses CertificateData as an X509 public key.

public Certificate(CertStoreTypes certStoreType, string store, string storePassword, string subject);
Public Certificate(ByVal CertStoreType As CertStoreTypes, ByVal Store As String, ByVal StorePassword As String, ByVal Subject As String)

CertStoreType identifies the type of certificate store to use. See StoreType for descriptions of the different certificate stores. Store is a file containing the certificate store. StorePassword is the password used to protect the store. After the store has been successfully opened, the component will attempt to find the certificate identified by Subject . This can be either a complete or a substring match of the X509 certificate's subject Distinguished Name (DN).

public Certificate(CertStoreTypes certStoreType, string store, string storePassword, string subject, string configurationString);
Public Certificate(ByVal CertStoreType As CertStoreTypes, ByVal Store As String, ByVal StorePassword As String, ByVal Subject As String, ByVal ConfigurationString As String)

CertStoreType identifies the type of certificate store to use. See StoreType for descriptions of the different certificate stores. Store is a file containing the certificate store. StorePassword is the password used to protect the store. ConfigurationString is a newline separated list of name-value pairs that may be used to modify the default behavior. Possible values include "PersistPFXKey", which shows whether or not the PFX key is persisted after performing operations with the private key. This correlates to the PKCS12_NO_PERSIST_KEY CyrptoAPI option. The default value is True (the key is persisted). "Thumbprint" - a MD5, SHA1, or SHA256 thumbprint of the certificate to load. When specified, this value is used to select the certificate in the store. This is applicable to cstUser, cstMachine, cstPublicKeyFile, and cstPFXFile store types. "UseInternalSecurityAPI" shows whether the platform (default) or the internal security API is used when performing certificate-related operations. After the store has been successfully opened, the component will attempt to find the certificate identified by Subject . This can be either a complete or a substring match of the X509 certificate's subject Distinguished Name (DN).

public Certificate(CertStoreTypes certStoreType, string store, string storePassword, byte[] encoded);
Public Certificate(ByVal CertStoreType As CertStoreTypes, ByVal Store As String, ByVal StorePassword As String, ByVal Encoded As Byte())

CertStoreType identifies the type of certificate store to use. See StoreType for descriptions of the different certificate stores. Store is a file containing the certificate store. StorePassword is the password used to protect the store. After the store has been successfully opened, the component will load Encoded as an X509 certificate and search the opened store for a corresponding private key.

public Certificate(CertStoreTypes certStoreType, byte[] storeBlob, string storePassword, string subject);
Public Certificate(ByVal CertStoreType As CertStoreTypes, ByVal StoreBlob As Byte(), ByVal StorePassword As String, ByVal Subject As String)

CertStoreType identifies the type of certificate store to use. See StoreType for descriptions of the different certificate stores. StoreBlob is a string (binary- or base64-encoded) containing the certificate data. StorePassword is the password used to protect the store. After the store has been successfully opened, the component will attempt to find the certificate identified by Subject . This can be either a complete or a substring match of the X509 certificate's subject Distinguished Name (DN).

public Certificate(CertStoreTypes certStoreType, byte[] storeBlob, string storePassword, string subject, string configurationString);
Public Certificate(ByVal CertStoreType As CertStoreTypes, ByVal StoreBlob As Byte(), ByVal StorePassword As String, ByVal Subject As String, ByVal ConfigurationString As String)

CertStoreType identifies the type of certificate store to use. See StoreType for descriptions of the different certificate stores. StoreBlob is a string (binary- or base64-encoded) containing the certificate data. StorePassword is the password used to protect the store. After the store has been successfully opened, the component will attempt to find the certificate identified by Subject . This can be either a complete or a substring match of the X509 certificate's subject Distinguished Name (DN).

public Certificate(CertStoreTypes certStoreType, byte[] storeBlob, string storePassword, byte[] encoded);
Public Certificate(ByVal CertStoreType As CertStoreTypes, ByVal StoreBlob As Byte(), ByVal StorePassword As String, ByVal Encoded As Byte())

CertStoreType identifies the type of certificate store to use. See StoreType for descriptions of the different certificate stores. Store is a string (binary- or base64-encoded) containing the certificate store. StorePassword is the password used to protect the store. After the store has been successfully opened, the component will load Encoded as an X509 certificate and search the opened store for a corresponding private key.

Claim Type

The claim.

Remarks

This type describes the claim.

Fields

IssuerName
string (read-only)

Default Value: ""

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

OriginalIssuer
string (read-only)

Default Value: ""

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

PropertyCount
int (read-only)

Default Value: 0

The number of properties in the claim.

PropertyIndex
int

Default Value: 0

Selects a property. This is valid from 0 to PropertyCount. To inspect a property, first set this field and then inspect PropertyName and PropertyValue. 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); }

PropertyName
string (read-only)

Default Value: ""

The name of the property.

PropertyValue
string (read-only)

Default Value: ""

The value of the property.

TypeName
string (read-only)

Default Value: ""

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

Value
string (read-only)

Default Value: ""

The value of the claim.

ValueType
string (read-only)

Default Value: ""

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

Constructors

public Claim();
Public Claim()
public Claim(string typeName, string value, string valueType, string issuerName, string originalIssuer);
Public Claim(ByVal TypeName As String, ByVal Value As String, ByVal ValueType As String, ByVal IssuerName As String, ByVal OriginalIssuer As String)

Proxy Type

This is the proxy the component will connect to.

Remarks

When connecting through a proxy, this type is used to specify different properties of the proxy, such as the Server and the AuthScheme.

Fields

AuthScheme
ProxyAuthSchemes

Default Value: 0

This field is used to tell the component which type of authorization to perform when connecting to the proxy. This is used only when the User and Password fields are set.

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

By default, AuthScheme is authBasic (0), and if the User and Password fields are set, the component will attempt basic authentication.

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

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

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

For security reasons, setting this field will clear the values of User and Password.

AutoDetect
bool

Default Value: False

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

Password
string

Default Value: ""

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

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

If AuthScheme is set to Digest Authentication, the User and Password fields are used to respond to the Digest Authentication challenge from the server.

If AuthScheme is set to NTLM Authentication, the User and Password fields are used to authenticate through NTLM negotiation.

Port
int

Default Value: 80

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

Server
string

Default Value: ""

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

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

SSL
ProxySSLTypes

Default Value: 0

This field 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 component will use the psTunnel option. If the URL is an http URL, the component 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.

User
string

Default Value: ""

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

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

If AuthScheme is set to Digest Authentication, the User and Password fields are used to respond to the Digest Authentication challenge from the server.

If AuthScheme is set to NTLM Authentication, the User and Password fields are used to authenticate through NTLM negotiation.

Constructors

public Proxy();
Public Proxy()
public Proxy(string server, int port);
Public Proxy(ByVal Server As String, ByVal Port As Integer)
public Proxy(string server, int port, string user, string password);
Public Proxy(ByVal Server As String, ByVal Port As Integer, ByVal User As String, ByVal Password As String)

XMLAttribute Type

An XML attribute from the current XML element.

Remarks

This type describes an XML attribute from the current element. It includes fields to denote information about the attribute being defined.

Fields

Name
string (read-only)

Default Value: ""

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

Namespace
string (read-only)

Default Value: ""

Attribute namespace.

Prefix
string (read-only)

Default Value: ""

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

Value
string (read-only)

Default Value: ""

Attribute value.

Constructors

public XMLAttribute();
Public XMLAttribute()

XMLElement Type

An element contained within the XML document.

Remarks

This type describes an XML element. The fields for this type describe the element Name, Prefix, and Namespace of the given element.

The elements are inserted into the array in the same order they are found in the document.

Fields

Name
string (read-only)

Default Value: ""

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

Namespace
string (read-only)

Default Value: ""

Namespace of the element.

Prefix
string (read-only)

Default Value: ""

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

XText
string (read-only)

Default Value: ""

The inner text of the element.

Constructors

public XMLElement();
Public XMLElement()

Config Settings (SAML Component)

The component accepts one or more of the following configuration settings. Configuration settings are similar in functionality to properties, but they are rarely used. In order to avoid "polluting" the property namespace of the component, access to these internal properties is provided through the Config method.

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 component 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 component 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 component 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 component 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 component should decrypt the assertion. If set to True the component 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 component 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.

GUIAvailable:   Tells the component whether or not a message loop is available for processing events.

In a GUI-based application, long-running blocking operations may cause the application to stop responding to input until the operation returns. The component will attempt to discover whether or not the application has a message loop and, if one is discovered, it will process events in that message loop during any such blocking operation.

In some non-GUI applications, an invalid message loop may be discovered that will result in errant behavior. In these cases, setting GUIAvailable to false will ensure that the component does not attempt to process external events.

LicenseInfo:   Information about the current license.

When queried, this setting will return a string containing information about the license this instance of a component is using. It will return the following information:

  • Product: The product the license is for.
  • Product Key: The key the license was generated from.
  • License Source: Where the license was found (e.g., RuntimeLicense, License File).
  • License Type: The type of license installed (e.g., Royalty Free, Single Server).
  • Last Valid Build: The last valid build number for which the license will work.
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 components: AS3Receiver, AS3Sender, Atom, Client(3DS), FTP, FTPServer, IMAP, OFTPClient, SSHClient, SCP, Server(3DS), Sexec, SFTP, SFTPServer, SSHServer, TCPClient, TCPServer.

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

When set to true, the component will utilize the underlying operating system's certified APIs. Java editions, regardless of OS, utilize Bouncy Castle FIPS, while all the other Windows editions make use of Microsoft security libraries.

FIPS mode can be enabled by setting the UseFIPSCompliantAPI configuration setting to true. This is a static setting which applies to all instances of all components of the toolkit within the process. It is recommended to enable or disable this setting once before the component has been used to establish a connection. Enabling FIPS while an instance of the component is active and connected may result in unexpected behavior.

For more details please see the FIPS 140-2 Compliance article.

Note: This setting is only applicable on Windows.

Note: Enabling FIPS-compliance requires a special license; please contact sales@nsoftware.com for details.

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

When set to false, the component will use the system security libraries by default to perform cryptographic functions where applicable. In this case, calls to unmanaged code will be made. In certain environments this is not desirable. To use a completely managed security implementation set this setting to true.

Setting this setting to true tells the component 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.

If using the .NET Standard Library, this setting will be true on all platforms. The .NET Standard library does not support using the system security libraries.

Note: This setting is static. The value set is applicable to all components used in the application.

When this value is set the product's system DLL is no longer required as a reference, as all unmanaged code is stored in that file.

Trappable Errors (SAML Component)

SAML Errors

603   Cannot obtain assertion. LocalSTS must be set.

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

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 component may also return one of the following error codes, which are inherited from other components.

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