Previous Topic: Policy Management APINext Topic: Sm_PolicyApi_Scheme_t


SM--Federation Security Services

The Federation Security Services interface supports the manipulation of policy store data related to Affiliate Domain objects, which can include Affiliates, Service Providers, and Resource Partners.

Federation Security Services supports SAML 1.x, SAML 2.0, and WS-Federation profiles and it enables SiteMinder the ability to exchange user profile information with partners in a secure manner.

For information about federation in a SiteMinder environment, see the Federation Security Services Guide.

More Information:

Federation Functions

SAML 2.0 Configuration Functions

SAML 1.x

SAML 1.x support lets a user access a consumer site directly or from an assertion producer site without having to supply credentials more than once.

When a user requests access to a protected resource at an affiliate site, the Policy Server at the producer site is notified. After authenticating the user (if the user has not yet been authenticated), the Policy Server generates a SAML assertion from the affiliate object associated with the consumer site.

An application at the affiliate site then retrieves the SAML assertion from the Policy Server, and uses the information for authorization purposes and any other required purpose.

For example, suppose a user logs into a site for a bank (the producer site). The producer includes Policy Server software. The Policy Server contains an affiliate object that represents a site offering credit card services, and also other affiliate objects that represent other sites affiliated with the bank. When a user is authenticated at the producer, the user can click the link for the credit-card site and access the site without having to re-enter his credentials.

SAML 1.x Pseudo-code Example

The pseudo-code in this section illustrates the following operations:

  1. Initialize the API.
  2. Add an affiliate domain.
  3. Add a user directory to an affiliate domain.
  4. Create an affiliate in an affiliate domain.
  5. Add users to an affiliate.
  6. Add an attribute to an affiliate.
  7. Get an existing affiliate domain.
  8. Get all the affiliates in an affiliate domain.
  9. Get all the attributes in an affiliate.
  10. Remove an affiliate domain.

Note: Comments using <> notation represent code omitted for ease of understanding. Return code checking is omitted for ease of understanding.

# 1. Initialize the API
use Netegrity::PolicyMgtAPI;
$policyapi = Netegrity::PolicyMgtAPI‑>New();
$session = $policyapi‑>CreateSession("adminid", "adminpwd");

# 2. Add an affiliate domain
$affdomain = $session‑>CreateAffDomain("name", "description");

# 3. Add a previously obtained user directory to the affiliate domain
# <Obtain $userdir via $session‑>GetAllUserDirs>
$affdomain‑>AddUserDir($userdir);

# 4. Create an affiliate in the affiliate domain
$affiliate = $affdomain‑>CreateAffiliate("affname", "password",
                                          http://authurl, 60, 30);

# 5. Add users from a previously obtained user table to the affiliate
# <Obtain $user via $userdir‑>GetContents>
$affdomain‑>AddUser($user);

# 6. Add an attribute for the affiliate
$affdomain‑>AddAttribute(1, "staticAttrName=StaticAttrValue");
# 7. Get an existing affiliate domain
$affiliate = $affdomain‑>GetAffiliate("affname");

# 8. Get all the affiliates in an affiliate domain
@affiliates = $affdomain‑>GetAllAffiliate();

# 9. Get all the attributes in an affiliate
@affiliateAttrs = $affiliate‑>GetAllAttributes();

# 10. Remove an affiliate domain
$session‑>DeleteAffDomain($affiliate);
SAML 2.0

With SAML 2.0, security assertions are shared between the following entities within a federation:

Identity Provider

An Identity Provider generates assertions for principals within a SAML 2.0 federation. The Identity Provider sends the SAML assertion to the Service Provider where the principal is attempting to access resources.

Service Provider

A Service Provider makes applications and other resources available to principals within a federation, using the identity information provided in an assertion. A principal is a user or another federation entity.

The Service Provider uses a SAML 2.0 authentication scheme to validate a user based on the information in a SAML 2.0 assertion.

Identity Providers and Service Providers can belong to a SAML affiliation. A SAML affiliation is a group of SAML entities that share a name identifier for a single principal.

Service Providers and Identity Providers can belong to an affiliation; however, an entity can belong to no more than one affiliation. Service Providers share the Name ID definition across the affiliation. Identity Providers share the user disambiguation properties across the affiliation.

Using affiliations reduces the configuration required at each Service Provider. Additionally, using one name ID for a principal saves storage space at the Identity Provider.

Single Sign-on Example

By sharing security assertions, a principal can log in at one site (the site acting as the Identity Provider), and then access resources at another site (the Service Provider) without explicitly supplying credentials at the second site.

For example:

  1. The user is a home buyer who authenticates at a realtor’s web site.

    Any authentication scheme can be used to authenticate the user.

  2. While viewing real estate listings, the user notices a link to a bank with an attractive mortgage rate.
  3. The user clicks the link.
  4. At the realtor’s site, an entity acting as the Identity Provider packages the user’s information in a SAML assertion, then transports the assertion to the bank’s site using the SAML 2.0 POST binding.
  5. At the bank’s site, an entity acting as the Service Provider uses the SAML 2.0 Authentication scheme associated with the Identity Provider to validate the user for the resources on the bank’s site.

    This validation is transparent to the user.

  6. If the user is successfully validated, the user is allowed on the bank’s site to view the rate information.
SAML 2.0 Pseudo-code Example

The pseudo-code in this section illustrates the following operations:

  1. Initialize the API.
  2. Retrieve the affiliate domain for the Service Provider.
  3. Assign metadata constants to variables.
  4. Assign values to the Service Provider metadata.
  5. Create the Service Provider.
  6. Retrieve users from the directory associated with the affiliate domain.
  7. Add the users to the Service Provider.
  8. Update the Service Provider's default skew time to 100.
  9. Save the update.
  10. Print the updated skew time.
    # 1. Initialize the API
    use Netegrity::PolicyMgtAPI;
    $policyapi = Netegrity::PolicyMgtAPI‑>New();
    $session = $policyapi‑>CreateSession("adminid", "adminpwd");
    
    # 2. Retrieve the affiliate domain for the Service Provider
    $affDom=$session‑>GetAffDomain("AffiliateDomain");
    
    # 3. Assign metadata constants to variables
    $SAML_NAME=SAML_NAME;
    $SAML_SP_AUTHENTICATION_URL=SAML_SP_AUTHENTICATION_URL;
    $SAML_KEY_SPID=SAML_KEY_SPID;
    $SAML_SP_IDPID=SAML_SP_IDPID;
    $SAML_AUDIENCE=SAML_AUDIENCE;
    $SAML_SP_ASSERTION_CONSUMER_DEFAULT_URL=
                               SAML_SP_ASSERTION_CONSUMER_DEFAULT_URL;
    $SAML_SP_NAMEID_ATTRNAME=SAML_SP_NAMEID_ATTRNAME;
    $SAML_SKEWTIME=SAML_SKEWTIME;
    
    # 4. Assign values to the Service Provider metadata
    %hsh=($SAML_NAME=>'My Service Provider',
       $SAML_SP_AUTHENTICATION_URL=>
                                 'http://www.mysite.com/redirect.jsp',
       $SAML_KEY_SPID=>'http://www.spprovider.com',
       $SAML_SP_IDPID=>'http://www.idpprovider.com',
       $SAML_AUDIENCE=>'SSOAudience',
       $SAML_SP_ASSERTION_CONSUMER_DEFAULT_URL=>
                                     'http://www.defaultconsumer.com',
       $SAML_SP_NAMEID_ATTRNAME=>'attribute'
       );
    # 5. Create the Service Provider
    $sp=$affDom‑>CreateSAMLServiceProvider(\%hsh);
    
    # 6. Retrieve users from the directory associated with the #    affiliate domain—in this case, users in the group HR
    $userDir=$session‑>GetUserDir("MyNtDirectory");
    $usr=$userDir‑>LookupEntry("HR");
    
    # 7. Add the users to the Service Provider
    $sp‑>AddUser($usr);
    
    # 8. Update the Service Provider's default skewtime to 100
    $sp‑>Property($SAML_SKEWTIME,"100");
    
    # 9. Save the update
    $sp‑>Save();
    
    # 10. Print the updated skewtime
    print "\n";
    print $sp‑>Property($SAML_SKEWTIME);
    
SAML 2.0 Affiliations

A SAML 2.0 affiliation consists of Service Providers and Identity Providers that have a shared Name ID namespace. Identity Providers also share the user disambiguation properties across the affiliation.

A SAML 2.0 affiliation can have multiple Service Providers and Identity Providers. However, a Service Provider or Identity Provider can belong to no more than one SAML 2.0 affiliation.

Example:

By sharing security assertions, a principal can log in at one site (the site acting as the Identity Provider), and then access resources at another site (the Service Provider) without explicitly supplying credentials at the second site:

  1. The user is a home buyer who authenticates at a realtor's web site.

    Any authentication scheme can be used to authenticate the user.

  2. While viewing real estate listings, the user notices a link to a bank with an attractive mortgage rate.
  3. The user clicks the link.
  4. At the realtor's site, an entity acting as the Identity Provider packages the user's information in a SAML assertion, then transports the assertion to the bank's site using the SAML 2.0 POST binding.
  5. At the bank's site, an entity acting as the Service Provider uses the SAML 2.0 Authentication scheme associated with the Identity Provider to validate the user for the resources on the bank's site.

    This validation occurs transparently to the user.

  6. If the user is successfully validated, the user is allowed on the bank's site to view the rate information.
SAML 2.0 Attribute Authority

SiteMinder supports authorization that uses the values of predetermined user attributes from a remote site as the basis for the authorization decision. The request contains no session information, because the user is not necessarily authenticated on the remote site.

For example, imagine a customer logs on to a car rental agency site to inquire about rates. The customer is authenticated by the agency, but to provide a competitive rate, the agency uses information from the customer's preferred airline. The car rental agency puts in a request to the airline's Web site to obtain the customer's quality code, which is based on the customer's accrued frequent flier miles. The airline returns the value of the quality code, for instance, 1A, and the car agency displays a customized rate sheet.

In this example, the car rental agency acts as what is know as the the SAML Requester, and the airline acts as what is known as a SAML Attribute Authority. Note that the customer is not authenticated by the Attribute Authority.

The Policy Server implements this kind of authorization decision by using variables within policy expressions. In the policy expressions, Federation Attribute Variables associate an attribute with a remote Attribute Authority. When the policy server attempts to resolve the Federation attribute variable, it determines the Attribute Authority from which to request the value of the attribute.

In the Policy Management API, the Sm_PolicyApi_SAMLRequesterAttr_t structure defines an attribute that can be requested by the SAML Requester. It specifies the actual name of the attribute known by the Attribute Authority, as well as a local name used in Federation attribute variables. The local name maps to a variable defined in the SAML 2.0 authentication scheme.

More Information:

Sm_PolicyApi_SAMLRequesterAttr_t

SAML 2.0 Attribute Authority Functions

SAML 2.0 Indexed Endpoints

When configuring single sign-on at the Identity Provider, you can configure more than one endpoint for the Assertion Consumer Service, the service that enables a Service Provider to consume a SAML assertion. Each endpoint you configure is assigned a unique index value, instead of a single, explicit reference to an Assertion Consumer Service URL.

The assigned index can be used as a part of a Service Provider request for an assertion that it sends to the Identity Provider. This enables you to have a different Assertion Consumer Service at the Service Provider for different protocol bindings (Artifact or POST).

In the Policy Management API, you can, for example, add a new Assertion Consumer Service to the Service Provider programmatically by calling the Sm_PolicyApi_AddAssertionConsumerServiceToSAMLSP() function as follows:

iSmApiRetCode = Sm_PolicyApi_AddAssertionConsumerServiceToSAMLSP (
pSmApiSessionHandle,
&structSAMLSPACS2,
pszOid);

Parameters:

In addition, the API includes a function to remove an Assertion Consumer Service and a function to retrieve all the Assertion Consumer Services defined in the Service Provider object. The C Policy Management API sample program, smpolicyapiexample.cpp, shows how these functions are implemented.

More Information:

SAML 2.0 Indexed Endpoint Functions

Sample Application for Affiliates

The C sample program smpolicyapi has been augmented for the affiliate functionality.

To run the affiliate portions

  1. Install the SiteMinder Option Pack on the Policy Server
  2. Define the Affiliate Policy Store objects in smpolicy.smdif and import the objects to the Policy Store.
  3. Install the sample. This creates a sample user directory, which is used by the affiliate sample.

Three options have been added to the smpolicyapi program.

WS-Federation

The WS-Federation specification provides a protocol for how passive clients (such as Web browsers) implement the federation framework. ADFS is Microsoft's implementation of the WS-Federation Passive Requestor Profile.

Web SSO and Signout in the WS-Federation environment are implmented using Account Partners and Resource Partners. An Account Partner authenticates users, provides WS-Federation security tokens and passes them to a Resource Partner. The Resource Partner consumes security tokens and establishes a session based on the contents of the WS-Federation security token.

For SiteMinder to act as an Account Partner, an administrator must define the Resource Partner that will be consuming security tokens. This is done by defining a Resource Partner in an Affiliate domain. For SiteMinder to act as a Resource Partner, an administrator must define the Account Partner that is going to supply security tokens. This is done by defining a WS-Federation authentication scheme.

The C Policy Management API sample program, smpolicyapiexample.cpp, includes examples of how to define, list, and delete a Resource Partner, as well as define, list, and delete a WS-Federation authentication scheme.

More Information:

Sm_PolicyApi_WSFEDProviderProp_t

Sm_PolicyApi_WSFEDResourcePartner_t

WS-Federation Functions

Policy Management API Data Structures

Each data structure represents an entity in the SiteMinder policy store. The structures have a common format:

All the character arrays within the following structures are sized according to BFSIZE, which is set to 1024 characters. A 24-character TIMESIZE buffer is used for policy time restrictions.

Sm_PolicyApi_Admin_t

Defines a SiteMinder Administrator object.

Syntax

typedef struct Sm_PolicyApi_Admin_s
{
   int iStructId;
   char pszOid[BFSIZE];
   char pszName[BFSIZE];                    /* Required */
   char pszDesc[BFSIZE];
   char pszPassword[BFSIZE];
   char pszUserDirOid[BFSIZE];
   char pszSchemeOid[BFSIZE];
   Sm_PolicyApi_AdminRights_t nRights;      /* Required */
   struct Sm_PolicyApi_Admin_s* next;
} Sm_PolicyApi_Admin_t;

Field

Description

iStructId

Administrator data structure ID, defined in Sm_PolicyApi_Structs_t.

pszOid

The object identifier of the administrator object.

pszName

Name of the administrator.

pszDesc

Brief description of the administrator.

pszPassword

This is required if the pszUserDirOid is not specified. The SiteMinder stores the password in its directory.

pszUserDirOid

Object identifier of the user directory if the administrator is stored in an external directory.

pszSchemeOid

Object identifier of the authentication scheme to use to authenticate the administrator. This is required if the pszUserDirOid is specified.

nRights

Rights of the administrator, as specified in Sm_PolicyApi_AdminRights_t.

next

Pointer to the next administrator structure.

Sm_PolicyApi_Affiliate_t

Represents an affiliate object.

Syntax

typedef struct Sm_PolicyApi_Affiliate_s
{
   int iStructId;
   char pszOid[BFSIZE];
   char pszName[BFSIZE];
   char pszDesc[BFSIZE];
   char pszAffiliateDomainOid[BFSIZE];
   char pszPassword[BFSIZE];
   bool bIsEnabled;
   bool bAllowNotification;
   char pszAuthURL[BFSIZE];
   char pszAudience[BFSIZE];
   long nValidityDuration;
   bool bSharedSession;
   long nSyncInterval;
   long nSkewTime;
   long nStartTime;
   long nEndTime;
   unsigned char pszTimeGrid[TIMESIZE];
   Sm_PolicyApi_IPAddress_t *pIPAddress;
   struct Sm_PolicyApi_Affiliate_s* next;
   long nSAMLVersion;
   char pszAssertionPluginClass[BFSIZE];
   char pszAssertionPluginParameters[BFSIZE];
   Sm_PolicyApi_SAML_Profile_t SAMLProfile;
   char pszConsumerURL[BFSIZE];
} Sm_PolicyApi_Affiliate_t;

Field

Description

iStructId

Domain data structure ID, defined in Sm_PolicyApi_Structs_t.

pszOid

The object identifier of the affiliate object.

pszName

Name of the affiliate.

pszDesc

Brief description of the affiliate.

pszAffiliateDomain
  Oid

The object identifier of the affiliate domain object.

pszPassword

The password for the affiliate as a null terminated string.

bIsEnabled

Boolean indicating if the affiliate is enabled.

bAllowNotification

Boolean indicating if notifications are allowed for the affiliate.

pszAuthURL

The authentication URL for the affiliate.

pszAudience

A URI of the document that describes the terms and conditions of the agreement between the portal and the affiliate.

nValidityDuration

The amount of time, in seconds, that the assertion is valid.

bSharedSession

Boolean that enables the sharing of session information between the portal and the affiliate.

nSyncInterval

The frequency, in seconds, at which the affiliate contacts the portal to validate session status.

nSkewTime

The difference, in seconds, between the system clock time of the portal and the system clock time of the affiliate.

nStartTime

The time when the time restriction becomes effective. This value is stored in standard time_t format. Set nStartTime to 0 to start the time restriction immediately.

nEndTime

The time when the time restriction expires. This value is stored in standard time_t format. Set nEndTime to 0 to end the time restriction immediately.

pszTimeGrid

An array containing time restrictions for an entire week.

pIPAddress

IP address that user must use in order to gain access to the resources governed by the Policy.

next

Pointer to the next affiliate structure.

nSAMLVersion

One of the following SAML version constants:

  • SM_POLICY_API_SAML_1_0
  • SM_POLICY_API_SAML_1_1

The SAML version has effect only if the Policy Management API's session version is at least SM_POLICY_API_VERSION_6_0_1.

pszAssertion
  PluginClass

The fully qualified class name of a custom assertion generator plug-in. The plug-in lets you customize the default assertion that SiteMinder generates for an affiliate.

A plug-in class and parameter string are supported only if the Policy Management API's session version is at least SM_POLICY_API_VERSION_6_0_2.

Custom assertion generator plug-ins are implemented with the Java SDK.

pszAssertion
  PluginParameters

The parameter string to pass to a custom assertion generator plug-in.

SAMLProfile

The type of profile used to send and receive SAML assertions. Defined in Sm_PolicyApi_SAML_Profile_t.

Valid profiles:

  • Sm_PolicyApi_SAML_Profile_Artifact. The SAML assertion is retrieved from a URL associated with the assertion producer. The URL is specified during configuration of the SAML Artifact authentication scheme.
  • Sm_PolicyApi_SAML_Profile_POST. The generated SAML assertion is POSTed to the URL specified in pszConsumerURL.

This profile is supported only if the Policy Management API's session version is at least SM_POLICY_API_VERSION_6_0_2.

pszConsumerURL

With a SAML POST profile, this field specifies the URL where the requesting user's browser must POST a generated assertion. The site associated with the URL validates the assertion and uses its contents to make access decisions.

Sm_PolicyApi_AffiliateAttr_t

Represents affiliate attributes. Used with affiliate methods to manipulate affiliate attributes.

Syntax

typedef struct Sm_PolicyApi_AffiliateAttr_s
{
   int iStructId;
   Sm_PolicyApi_AffiliateAttrType_t nAttrType;
   char pszValue[BFSIZE];
   struct Sm_PolicyApi_AffiliateAttr_s* next;
} Sm_PolicyApi_AffiliateAttr_t;

Field

Description

iStructId

Domain data structure ID, defined in Sm_PolicyApi_Structs_t.

nAttrType

An affiliate attribute type from Sm_PolicyApi_AffiliateAttrType_t.

pszValue

An affiliate attribute specification.

The affiliate attribute's name and value, in one of these formats:

  • Static attributes:
    variableName=value
  • User attributes:
    variableName=<%userattr="AttrName"%>
  • DN attributes:
    variableName=<#dn="DNSpec"
       attr="AttrName"#>

To allow SiteMinder to retrieve DN attributes from a nested group, begin DNSpec with an exclamation mark ( ! )-for example:
dn="!ou=People,o=security.com"

next

Pointer to the next Affiliate Attribute structure.

Sm_PolicyApi_AffiliateDomain_t

Represents an affiliate domain.

Syntax

typedef struct Sm_PolicyApi_Domain_s
{
   int iStructId;
   char pszOid[BFSIZE];
   char pszName[BFSIZE];
   char pszDesc[BFSIZE];
   struct Sm_PolicyApi_Domain_s*   next;
} Sm_PolicyApi_Domain_t, Sm_PolicyApi_AffiliateDomain_t;

Field

Description

iStructId

Affiliate Domain data structure ID, defined in Sm_PolicyApi_Structs_t.

pszOid

The object identifier of the Affiliate Domain.

pszName

Name of the Affiliate Domain.

pszDesc

Brief description of the Affiliate Domain.

next

Pointer to the next Affiliate Domain structure.

Sm_PolicyApi_Agent_t

Defines a SiteMinder Agent object.

Syntax

typedef struct Sm_PolicyApi_Agent_s
{
   int iStructId;
   char pszOid[BFSIZE];
   char pszName[BFSIZE];                     /* Required */
   char pszDesc[BFSIZE];
   char pszIpAddr[BFSIZE];
   char pszSecret[BFSIZE];
   char pszAgentTypeOid[BFSIZE];             /* Required */
   int nRealmHintAttrId;                     /* Required */
   struct Sm_PolicyApi_Agent_s* next;
} Sm_PolicyApi_Agent_t;

Field

Description

iStructId

Agent data structure ID, defined in Sm_PolicyApi_Structs_t.

pszOid

The object identifier of the agent object.

pszName

Name of the agent. Agent names are converted to lower case when written to the policy store.

pszDesc

Brief description of the agent.

pszIpAddr

IP address of the server on which the agent resides.

pszSecret

A shared secret known to two parties for the purpose of establishing secure data exchange.

If a shared secret is provided, the agent is considered to be a SiteMinder version 4.x agent. If a shared secret is not provided, the agent is considered to be a SiteMinder version 5.x or 6.0 agent.

pszAgentTypeOid

Type of agent.

nRealmHintAttrId

The hint attribute is a RADIUS attribute that is sent by the RADIUS client device.

next

Pointer to the next agent structure.

Sm_PolicyApi_AgentConfig_t

Defines an agent configuration object.

Syntax

typedef struct Sm_PolicyApi_AgentConfig_s
{
   int iStructId;
   char pszOid[BFSIZE];
   char pszName[BFSIZE];                    /* Required */
   char pszDesc[BFSIZE];
   struct Sm_PolicyApi_AgentConfig_s* next;
} Sm_PolicyApi_AgentConfig_t;

Field

Description

iStructId

Data structure ID, defined in Sm_PolicyApi_Structs_t.

pszOid

The object identifier of the agent configuration object.

pszName

Name of the agent configuration.

pszDesc

Brief description of the agent configuration.

next

Pointer to the next agent configuration object structure.

Sm_PolicyApi_AgentType_t

Defines a SiteMinder Agent Type object.

Syntax

typedef struct Sm_PolicyApi_AgentType_s
{
   int iStructId;
   char pszOid[BFSIZE];
   char pszName[BFSIZE];
   char pszDesc[BFSIZE];
   int nRfcId;
   int nAgentType;
   int nResourceType;
   int nAgentTypeSpecific;
   struct Sm_PolicyApi_AgentType_s* next;
} Sm_PolicyApi_AgentType_t;

Field

Description

iStructId

Agent Type data structure ID, defined in Sm_PolicyApi_Structs_t.

pszOid

The object identifier of the Agent Type object.

pszName

Name of the Agent Type object.

pszDesc

Brief description of the Agent Type object.

nRfcId

The IETF Vendor ID, assigned by the Internet Assigned Numbers Authority (IANA). (Applies to RADIUS device only.)

nAgentType

Agent type: RADIUS (value=0) or Web Agent (value=1).

nResourceType

The resource type that the agent will protect. One of the following values:

  • 0 = None
  • 1 = URL
  • 2 = IpAddr
  • 3 = IpAddrRange
  • 4 = AgentAuth
  • 5 = Radius Authentication

nAgentTypeSpecific

The vendor-specific offset provided by the RADIUS vendor. (Applies to RADIUS device only.) Not a required field.

next

Pointer to the next Agent Type structure.

Sm_PolicyApi_AgentTypeAttr_t

Defines a SiteMinder Agent Type Attribute object.

Syntax

typedef struct Sm_PolicyApi_AgentTypeAttr_s
{
   int iStructId;
   char pszOid[BFSIZE];
   char pszName[BFSIZE];
   char pszDesc[BFSIZE];
   char pszAgentTypeOid[BFSIZE];
   struct Sm_PolicyApi_AgentTypeAttr_s* next;
} Sm_PolicyApi_AgentTypeAttr_t;

Field

Description

iStructId

Agent Type Attribute data structure ID, defined in Sm_PolicyApi_Structs_t.

pszOid

The object identifier of the Agent Type Attribute object.

pszName

Name of the Agent Type Attribute object.

pszDesc

Brief description of the Agent Type Attribute object.

pszAgentTypeOid

The object identifier of the Agent Type.

next

Pointer to the next Agent Type Attribute structure.

Sm_PolicyApi_Association_t

Defines a configuration parameter name and its associated value for an agent configuration object.

Syntax

typedef struct Sm_PolicyApi_Association_s
{
   int iStructId;
   char pszOid[BFSIZE];
   char pszName[BFSIZE];                    /* Required */
   char* pszValue;
   int iFlags;
   struct Sm_PolicyApi_Association_s* next;
} Sm_PolicyApi_Association_t;

Field

Description

iStructId

Data structure ID, defined in Sm_PolicyApi_Structs_t.

pszOid

The object identifier of the configuration parameter association object.

pszName

The name of the configuration parameter.

pszValue

The value of the configuration parameter.

iFlags

If 1, the name/value pair is stored in encrypted format. If 0, storage is in plain text.

next

Pointer to the next configuration parameter association structure.

Sm_PolicyApi_AuthAzMap_t

Defines a SiteMinder authentication and authorization mapping object.

Syntax

typedef struct Sm_PolicyApi_AuthAzMap_s
{
   int iStructId;
   char pszOid[BFSIZE];
   char pszAuthDirOid[BFSIZE];              /* Required */
   char pszAuthDirName[BFSIZE];
   char pszAzDirOid[BFSIZE];                /* Required */
   char pszAzDirName[BFSIZE];
   Sm_PolicyApi_AuthAzMapType_t nMapType;   /* Required */
   struct Sm_PolicyApi_AuthAzMap_s *next;
} Sm_PolicyApi_AuthAzMap_t;

Field

Description

iStructId

Authentication and authorization mapping object data structure ID, defined in Sm_PolicyApi_Structs_t.

pszOid

The object identifier of the authentication and authorization mapping object.

pszAuthDirOid

The object identifier for the Authentication Directory.

pszAuthDirName

The name of the Authentication Directory.

pszAzDirOid

The object identifier for the Authorization Directory.

pszAzDirName

The name of the Authorization Directory.

nMapType

The type of mapping between an authentication directory and an authorization directory. The mapping can be based on a DN, a universal identifier, or on an attribute in the directory.

next

Pointer to the next authentication and authorization mapping structure.

Sm_PolicyApi_CertMap_t

Defines a SiteMinder certification mapping object.

Syntax

typedef struct Sm_PolicyApi_CertMap_s
{
   int iStructId;
   char pszOid[BFSIZE];
   char pszDesc[BFSIZE];
   char pszUserDirOid[BFSIZE];              /* Required */
   char pszIssuerDN[BFSIZE];                /* Required */
   char pszCaDN[BFSIZE];
   char pszMapAttr[BFSIZE];
   Sm_PolicyApi_CertMapFlags_t nFlags;      /* Required */
   Sm_PolicyApi_CertMapAttrType_t nAttrType;
   Sm_PolicyApi_DirType_t nDirType;         /* Required */
   struct Sm_PolicyApi_CertMap_s *next;
} Sm_PolicyApi_CertMap_t;

Field

Description

iStructId

Certificate mapping data structure ID, defined in Sm_PolicyApi_Structs_t.

pszOid

The object identifier of the certificate mapping object.

pszDesc

Brief description of the certificate mapping object.

pszUserDirOid

Object identifier of the user directory.

pszIssuerDN

DN of the server certificate.

pszCaDN

DN of the issuing Certificate Authority.

pszMapAttr

You can perform single attribute mapping or custom mapping:

  • Single Attribute Mapping

The format of the attribute is:

%{<attribute name>}

<attribute name> is the name of the attribute, matching a single attribute from the subject DN of a user's certificate to a single attribute stored in the user directory to verify the user's identity.

  • Custom Mapping

Using custom mapping expressions for complex multiple attribute mapping, you can specify multiple user attributes that should be extracted from a user DN to establish a certificate mapping. The syntax for a custom mapping expression is a parsing specification designed to enable full mapping flexibility. It indicates which information to take from the certificate and where it should be applied to in the user directory. The basic syntax is: UserAttribute=%{CertificateAttribute}, UserAttribute2=%{CertificateAttribute}

nFlags

Set one or more of these flags:

  • Sm_PolicyApi_CertMapFlags_CertRequired
  • Sm_PolicyApi_CertMapFlags_UseDistributionPoints
  • Sm_PolicyApi_CertMapFlags_VerifySignature
  • Sm_PolicyApi_CertMapFlags_CRLCheck
  • Sm_PolicyApi_CertMapFlags_Cache

 

nAttrType

This enumeration specifies how the X.509 client certificate maps to the user information in the authentication directory.

  • Sm_PolicyApi_CertMapAttrType_Single = 1
    Specify single attribute to make the Policy Server match a single attribute from the subject DN of a user's certificate to a single attribute stored in the user directory to verify the user's identity.
  • Sm_PolicyApi_CertMapAttrType_Custom = 2
    You can specify a custom mapping expression to verify the user's identity. Specify this attribute type if the mapping is based on a custom expression.
  • Sm_PolicyApi_CertMapAttrType_Exact = 3
    Specify exact attribute type to make the Policy Server match the user's entire DN from the certificate to the entire DN in the authentication directory.

nDirType

The type of directory used to authenticate users. One of these values:

  • Sm_PolicyApi_DirType_LDAP = 1
  • Sm_PolicyApi_DirType_WinNT = 2
  • Sm_PolicyApi_DirType_ODBC = 3

next

Pointer to the next registration scheme structure.

Sm_PolicyApi_Domain_t

Defines a SiteMinder Domain object.

Syntax

typedef struct Sm_PolicyApi_Domain_s
{
   int iStructId;
   char pszOid[BFSIZE];
   char pszName[BFSIZE];                    /* Required */
   char pszDesc[BFSIZE];
   struct Sm_PolicyApi_Domain_s* next;
   Sm_PolicyApi_DomainFlags_t iFlags;
} Sm_PolicyApi_Domain_t;

Field

Description

iStructId

Domain data structure ID, defined in Sm_PolicyApi_Structs_t.

pszOid

The object identifier of the Domain object.

pszName

Name of the Domain.

pszDesc

Brief description of the Domain.

next

Pointer to the next domain structure.

iFlags

Flag to enable or disable global policies processing for the domain.

 

Sm_PolicyApi_Group_t

Defines a SiteMinder Group object. SiteMinder Groups are defined in the Sm_PolicyApi_Groups_t enumeration.

Syntax

typedef struct Sm_PolicyApi_Group_s
{
   int iStructId;
   char pszOid[BFSIZE];
   char pszName[BFSIZE];                      /* Required */
   char pszDesc[BFSIZE];
   char pszAgentTypeOid[BFSIZE];              /* Required */
   struct Sm_PolicyApi_Group_s* next;
} Sm_PolicyApi_Group_t;

Field

Description

iStructId

Group data structure ID, defined in Sm_PolicyApi_Structs_t.

pszOid

The object identifier of the Group object.

pszName

Name of the Group.

pszDesc

Brief description of the Group.

pszpszAgentTypeOid

Object identifier of the agent.

next

Pointer to the next Group structure.

Sm_PolicyApi_HostConfig_t

Defines a host configuration object.

Syntax

typedef struct Sm_PolicyApi_HostConfig_s
{
   int iStructId;
   char pszOid[BFSIZE];
   char pszName[BFSIZE];                    /* Required */
   char pszDesc[BFSIZE];
   char pszIPAdress[BFSIZE];
   bool bEnableFailOver;
   int iMaxSocketsPerPort;
   int iMinSocketsPerPort;
   int iNewSocketStep;
   int iRequestTimeout;
   struct Sm_PolicyApi_HostConfig_s* next;
   Sm_PolicyApi_Server_t* pServer;
   Sm_PolicyApi_Server_t* pCluster;
   long nFailoverThreshold;
} Sm_PolicyApi_HostConfig_t;

Field

Description

iStructId

Data structure ID, defined in Sm_PolicyApi_Structs_t.

pszOid

The object identifier of the host configuration object.

pszName

The name of the host configuration.

pszDesc

Brief description of the host configuration.

pszIPAddr

The IP address of the host configuration object.

bEnableFailOver

Specifies whether an agent and the Policy Server should communicate through failover or round-robin. The parameter is applicable to non-cluster servers specified in the pServer parameter.

iMaxSocketsPerPort

The maximum number of TCP/IP sockets that can be opened between an agent and a particular Policy Server process.

iMinSocketsPerPort

The minimum number of TCP/IP sockets that should be opened between an agent and a particular Policy Server process.

iNewSocketStep

The incremental number of TCP/IP sockets that should be opened between an agent and a particular Policy Server process when demand increases.

iRequestTimeout

The length of time in seconds that an agent will wait for a response from the Policy Server.

next

Pointer to the next host configuration structure.

pServer

A linked list of Sm_PolicyApi_Server_t structures that describe TCP/IP connectivity information for a particular Policy Server installation.

pCluster

Pointer to an array of Sm_PolicyApi_Server_t structures. The array specifies cluster servers.

nFailoverThreshold

Specifies the failover threshold percent. The parameter is applicable to the cluster servers specified in pCluster.

Sm_PolicyApi_IPAddress_t

Defines an IP address restriction for an object-for example, you can define IP address restrictions that must be met for a policy to fire.

You can specify a single host IP address, a range of IP addresses, a host name, or a subnet mask.

Syntax

typedef struct Sm_PolicyApi_IPAddress_s
{
   int iStructId;
   Sm_PolicyApi_IPAddressType_t iIPAddressType;
   unsigned long nIPAddress;
   unsigned long nEndIPAddress;
   unsigned long nSubnetMask;
   char pszHostName[BFSIZE];
   struct Sm_PolicyApi_IPAddress_s *next;
} Sm_PolicyApi_IPAddress_t;

Field

Description

iStructId

IP address structure ID, defined in Sm_PolicyApi_Structs_t.

iIPAddressType

Type of IP address, as enumerated in Sm_PolicyApi_IPAddressType_t.

nIPAddress

Starting IP address.

nEndIPAddress

Ending IP address.

nSubnetMask

The subnet mask value is a number of bits. To arrive at this value, count the bits in the binary value of the address.

For example, suppose the subnet mask is 255.255.255.128. The binary format is:

11111111 11111111 11111111 10000000

Counting from left to right, the number to pass in nSubnetMask would be 25.

pszHostName

Host name of the machine that a user must be using in order for a policy to fire.

next

Pointer to next IP Address structure.

Sm_PolicyApi_ManagementCommand_t

Defines a management command. Management commands enable an agent to retrieve information from the Policy Server.

Syntax

typedef struct Sm_PolicyApi_ManagementCommand_s
{
   Sm_PolicyApi_ManagementCommands_t iCommand;
   char pszData[BFSIZE];
} Sm_PolicyApi_ManagementCommand_t;

Field

Description

iCommand

Management command, as specified in Management Commands.

pszData

Reserved.

Sm_PolicyApi_ODBCQueryScheme_t

Defines a SiteMinder ODBC Query Scheme object.

Syntax

typedef struct Sm_PolicyApi_ODBCQueryScheme_s
{
   int iStructId;
   char pszOid[BFSIZE];
   char pszName[BFSIZE];                    /* Required */
   char pszDesc[BFSIZE];
   char pszQueryEnumerate[BFSIZE];          /* Required */
   char pszQueryGetObjInfo[BFSIZE];         /* Required */
   char pszQueryLookup[BFSIZE];             /* Required */
   char pszQueryInitUser[BFSIZE];           /* Required */
   char pszQueryAuthenticateUser[BFSIZE];   /* Required */
   char pszQueryGetUserProp[BFSIZE];        /* Required */
   char pszQuerySetUserProp[BFSIZE];        /* Required */
   char pszQueryGetUserProps[BFSIZE];       /* Required */
   char pszQueryLookupUser[BFSIZE];         /* Required */
   char pszQueryGetGroups[BFSIZE];          /* Required */
   char pszQueryIsGroupMember[BFSIZE];      /* Required */
   char pszQueryGetGroupProp[BFSIZE];       /* Required */
   char pszQuerySetGroupProp[BFSIZE];       /* Required */
   char pszQueryGetGroupProps[BFSIZE];      /* Required */
   char pszQueryLookupGroup [BFSIZE];       /* Required */
   char pszQuerySetPassword [BFSIZE];       /* Required */
   struct Sm_PolicyApi_ODBCQueryScheme_s* next;
} Sm_PolicyApi_ODBCQueryScheme_t;

Field

Description

iStructId

ODBC Query Scheme data structure ID, defined in Sm_PolicyApi_Structs_t.

pszOid

The object identifier of the ODBC Query Scheme object.

pszName

Name of the ODBC Query Scheme.

pszDesc

Brief description of the ODBC Query Scheme.

pszQueryEnumerate

Query that lists the names of user objects in the directory.

pszQueryGetObjInfo

Query that fetches the class of the object.

pszQueryLookup

Query that returns objects based on an attribute specified in a group table.

pszQueryInitUser

Query that determines if a user with a given name exists in the database.

pszQueryAuthenticateUser

Query that retrieves a password from a user.

pszQueryGetUserProp

Query that retrieves the value of a user property. The property must be one of the properties listed with pszQueryGetUserProps.

pszQuerySetUserProp

Query that sets the value of a user property. The property must be one of the properties listed in pszQueryGetUserProps.

pszQueryGetUserProps

Query that returns a comma-separated list of user attributes that reside in the same table as the user name.

pszQueryLookupUser

Query that retrieves a user name using an attribute of the user table.

pszQueryGetGroups

Query that retrieves the names of the groups of which the user is a member.

pszQueryIsGroupMember

Query that identifies the group membership of a particular user.

pszQueryGetGroupProp

Query that returns the value of a property defined in pszQueryGetGroupProps

pszQuerySetGroupProp

Query that sets the value of a group property. The property must be one of the properties listed in pszQueryGetGroupProps.

pszQueryGetGroupProps

Query that returns a comma-separated list of group attributes.

pszQueryLookupGroup

Query that retrieves a group name using an attribute of the group table.

pszQuerySetPassword

Query that changes a user password.

next

Pointer to the next ODBC query scheme structure.

Sm_PolicyApi_Oid_t

Used by the following functions to retrieve a SiteMinder object collection:

Syntax

typedef struct Sm_PolicyApi_Oid_s
{
   int iStructId;
   int iObjectId;
   char pszOid[BFSIZE];
   struct Sm_PolicyApi_Oid_s *next;
} Sm_PolicyApi_Oid_t;

Field

Description

iStructId

OID data structure ID, defined in Sm_PolicyApi_Structs_t.

iObjectId

The object type identifier (enumerated in Sm_PolicyApi_Objects_t).

pszOid

The unique object identifier.

next

Pointer to the next OID structure.

Sm_PolicyApi_PasswordMsgField_t

Describes a password policy message field. A password policy message field contains information about an error that occurred during a validation attempt for a new password.

A password policy message field is associated with a password policy message identifier. This identifier is returned in the nMsgId parameter of Sm_PolicyApi_GetPasswordMsg().

This structure is returned in the ppStructMsgField parameter of Sm_PolicyApi_GetPasswordMsg().

Syntax

typedef struct Sm_PolicyApi_PasswordMsgField_s
{
   int iStructId;
   Sm_PolicyApi_PasswordMsgFieldId_t nId;
   Sm_PolicyApi_FieldType_t nType;
   char pszMsg[BFSIZE];
   int nValue;
   struct Sm_PolicyApi_PasswordMsgField_s* next;
} Sm_PolicyApi_PasswordMsgField_t;

Field

Description

iStructId

Password policy data structure ID, defined in Sm_PolicyApi_Structs_t.

nId

The password message field identifier. Message field identifiers are enumerated in Sm_PolicyApi_PasswordMsgFieldId_t.

nType

The data type of the message field (integer, string, or none) as enumerated in Sm_PolicyApi_FieldType_t.

The value of nType determines whether pszMsg or nValue is populated.

pszMsg

Text that provides information about the error.

nValue

Integer that provides information about the error.

next

Pointer to the next password message field structure.

Sm_PolicyApi_PasswordPolicy_t

Defines a SiteMinder password policy object.

Syntax

typedef struct Sm_PolicyApi_PasswordPolicy_s
{
   int iStructId;
   char pszOid[BFSIZE];
   char pszName[BFSIZE];                    /* Required */
   char pszDesc[BFSIZE];
   bool bEntireDir;                         /* Required */
   bool bIsEnabled;                         /* Required */
   char pszUserDirectoryOid[BFSIZE];        /* Required */
   char pszPath[BFSIZE];                    /* Required */
   char pszClass[BFSIZE];                   /* Required */
   int nResolution;                         /* Required */
   int nLoginMaxFailures;                   /* Required */
   int nLoginMaxInactivity;                 /* Required */
   int nLoginInactivityWarn;
   int nLoginDaysGrace;                     /* Required */
   char pszDictionaryName[BFSIZE];
   int nDictionaryPartial;                  /* Required */
   int nExpirationDelay;                    /* Required */
   int nReenablement;                       /* Required */
   int nPasswordBehavior;                   /* Required */
   char pszPasswordServicesRedirect[BFSIZE];
   int nPWMaxLength;                        /* Required */
   int nPWMinLength;                        /* Required */
   int nPWMaxRepeatingChar;                 /* Required */
   int nPWMinAlphaNum;                      /* Required */
   int nPWMinAlpha;                         /* Required */
   int nPWMinNonAlpha;                      /* Required */
   int nPWMinNonPrintable;                  /* Required */
   int nPWMinNumbers;                       /* Required */
   int nPWMinPunctuation;                   /* Required */
   int nPWReuseCount;                       /* Required */
   int nPWReuseDelay;                       /* Required */
   int nPWPercentDifferent;                 /* Required */
   int nPWPercentSequence;                  /* Required */
   int nPWSpecialsLength;                   /* Required */
   struct Sm_PolicyApi_PasswordPolicy_s* next;
   int nPriority;                           /* Required */
   int nPWMinLowerAlpha;                    /* Required */
   int nPWMinUpperAlpha;                    /* Required */
   int nReserved1;
   int nReserved2;
   int nReserved3;
   int nReserved4[BFSIZE];
} Sm_PolicyApi_PasswordPolicy_t;

Field

Description

iStructId

Password policy data structure ID, defined in Sm_PolicyApi_Structs_t.

pszOid

The object identifier of the password policy object.

pszName

Name of the password policy.

pszDesc

Brief description of the password policy object.

bEntireDir

Flag: Set to true to apply the password policy to the entire LDAP directory.

bIsEnabled

Flag: Set to true to enable the password policy.

pszUserDirectoryOid

Object identifier of the user directory to which the password policy will apply.

pszPath

If bEntireDir is set to false, use this field to specify the users to whom the password policy applies. For example, values you can specify include:

  • A complete user DN
  • A complete DN of an organization or group containing the users to whom the password policy applies
  • A search expression that represents the users to whom the password policy applies

See nResolution for more information.

pszClass

If bEntireDir is set to false, use this field to specify the object class where the password policy applies.

Specify the object class as understood by a particular user directory, such as organizationalUnit in LDAP or User in NT.

nResolution

A constant that shows how the password policy applies to the users specified in pszPath. For example:

  • If pszPath is the path to a group, the following constant indicates that the password policy applies to the members of the group:

Sm_PolicyResolution_UserGroup

  • If pszPath is a search expression that searches for all groups containing a particular attribute, the following constant indicates that the password policy applies to the members of the matching groups:

Sm_PolicyResolution_GroupProp

Policy resolution constants are defined in Sm_PolicyResolution_t.

nLoginMaxFailures

Maximum number of failed login attempts a user can make before the user account is disabled.

nLoginMaxInactivity

Number of days of inactivity allowed before a user's password expires. The account is not disabled until the user tries to log in after the expiration.

nLoginInactivityWarn

Reserved.

nLoginDaysGrace

Number of days in advance to notify user that the password will expire.

pszDictionaryName

The location of a dictionary file that lists words that cannot be used in a password.

nDictionaryPartial

The minimum number of letters to qualify for dictionary checking. For example, set this field to 5 to avoid checking words of 4 or fewer characters. Set this field to 0 to reject only passwords that match a word in the dictionary exactly.

nExpirationDelay

Number of days of inactivity allowed before user account is disabled.

nReenablement

Specifies the number of minutes a user must wait before attempting to log in again or before the user's account is re-enabled.

The condition that applies after the nReenablement time period is determined by the following flag (which is set through nPasswordBehavior):

Sm_PasswordPolicyBehavior_
    FullReenable

nPasswordBehavior

Bit mask flags expressing the behavior of the password policy, as defined in Sm_PasswordPolicyBehavior_t.

You can also set recursive behavior for the password policy through the additional password behavior flag below. Use this flag to indicate that the password policy applies to the group specified in pszPath and to any groups nested within it:

Sm_PolicyBehavior_Recursive_Yes

All password behavior flags are defined in SmApi.h.

pszPasswordServices
  Redirect

The URL to which the user should be redirected when an invalid password is entered. This must be the URL of the Password Services CGI.

nPWMaxLength

The maximum length for user passwords.

nPWMinLength

Minimum length for user passwords.

nPWMaxRepeatingChar

Maximum number of identical characters that can appear consecutively in a password.

nPWMinAlphaNum

Minimum number of alphabetic or numeric characters (A-Z, a-z, or 0-9) that a password must contain. May be set in conjunction with PWMinAlpha or PWMinNumbers. For example, if PWMinAlphaNum and PWMinNumbers are set to 4, the password 1234 is valid.

nPWMinAlpha

Minimum number of alphabetic characters (A-Z, a-z) a password must contain.

nPWMinNonAlpha

Minimum number of non-alphanumeric characters a password must contain. These characters include punctuation marks and other symbols located on the keyboard, such as "@", "$", and "*."

nPWMinNonPrintable

Minimum number of non-printable characters that must be in a password. These characters cannot be displayed on a computer screen.

nPWMinNumbers

Minimum number of numeric characters (0-9) a password must contain.

nPWMinPunctuation

Minimum number of punctuation marks a password must contain. These characters include periods, commas, exclamation marks, slashes, hyphens, dashes, and other marks used for punctuation.

nPWReuseCount

Number of new passwords that must be used before an old one can be reused.

nPWReuseDelay

Number of days a user must wait before reusing a password.

nPWPercentDifferent

The percentage of characters a new password must contain that differ from characters in the previous password. If the value is set to 100, the new password may contain no characters that were in the previous password, unless nPWPercentSequence is set to 0.

nPWPercentSequence

Flag that indicates whether to ignore sequence (character position) when the different-from-previous-characters percentage is calculated. To ignore character position, set nPWPercentSequence to 1. This flag works in conjunction with nPWPercentDifferent. For examples of how this parameter works with nPWPercentDifferent, see Figure 31 on page 150.

nPWSpecialsLength

Specifies the minimum character sequence to check against the user's personal information. For example, if this value is set to 4, SiteMinder prohibits the use of any four consecutive characters found in the user's personal information, such as the four last digits of the user's telephone number.

This field prevents a user from incorporating personal information in a password. SiteMinder checks the password against attributes in the user's directory entry.

next

Pointer to the next registration scheme structure.

nPriority

Priority of password policy, when multiple password policies apply. The value can be any integer, including a negative one. The higher number has priority over the lower number.

nPWMinLowerAlpha

Minimum number of lowercase alphabetic characters.

nPWMinUpperAlpha

Minimum number of uppercase alphabetic characters.

Sm_PolicyApi_Policy_t

Defines a SiteMinder Policy object.

Syntax

typedef struct Sm_PolicyApi_Policy_s
{
   int iStructId;
   char pszOid[BFSIZE];
   char pszName[BFSIZE];                    /* Required */
   char pszDesc[BFSIZE];
   char pszActiveExpr[BFSIZE];
   bool bIsEnabled;                         /* Required */
   char pszDomainOid[BFSIZE];               /* Required */
   long nStartTime;
   long nEndTime;
   unsigned char   pszTimeGrid[TIMESIZE];
   Sm_PolicyApi_IPAddress_t *pIPAddress;
   struct Sm_PolicyApi_Policy_s* next;
   char pszVariableExpr[BFSIZE]
   Sm_PolicyApi_Oid_t* pVariableList;
} Sm_PolicyApi_Policy_t;

Field

Description

iStructId

Policy data structure ID, defined in Sm_PolicyApi_Structs_t.

pszOid

The object identifier of the Policy object.

pszName

Name of the Policy.

pszDesc

Brief description of the Policy.

pszActiveExpr

Active expression associated with the policy. The expression is a string of variable definitions in the following format.

The non-alphanumeric characters are required characters. For example:
<@lib="LibName" func="FuncName"
    param="FuncParam"@>

In the format example:

  • LibName is the name of the shared library that supports the Active Policy.
  • FuncName is the name of the actual function in the shared library that implements the Active Policy.
  • FuncParam is an optional list of parameters to be passed to the function in the shared library.

bIsEnabled

Flag to enable or disable the policy.

pszDomainOid

The object identifier of the domain. Required for domain-specific policy; ignored for global policy.

nStartTime

The time when the time restriction becomes effective. This value is stored in standard time_t format. Set nStartTime to 0 to start the time restriction immediately.

nEndTime

The time when the time restriction expires. This value is stored in standard time_t format. Set nEndTime to 0 to end the time restriction immediately.

pszTimeGrid

An array containing time restrictions for an entire week.

pIPAddress

IP address that user must use in order to gain access to the resources governed by the Policy.

next

Pointer to the next Policy structure.

pszVariableExpr

Unique object identifier that corresponds to a variable type.

pVariableList

Linked list of variable OIDs used by this expression.

Time Grid Array

The time grid array (used with the field pszTimeGrid) holds time restrictions for an entire week. The array contains a one-byte element for every hour of the day, starting with 12 AM. In every byte, the seven days of the week are represented, beginning with Sunday as the lowest order bit. Bits that are set enable the policy to fire. A zero bit prevents the policy from firing on that day during the associated hour.

Examples:


Sm_PolicyApi_PolicyLink_t

Defines a SiteMinder Policy Link object.

Syntax

typedef struct Sm_PolicyApi_PolicyLink_s
{
   int iStructId;
   char pszOid[BFSIZE];
   char pszRuleOid[BFSIZE];                  /* Required */
   char pszResponseOid[BFSIZE];
   struct Sm_PolicyApi_PolicyLink_s* next;
} Sm_PolicyApi_PolicyLink_t;

Field

Description

iStructId

Policy Link data structure ID, defined in Sm_PolicyApi_Structs_t.

pszOid

The object identifier of the Policy Link object.

pszRuleOid

Object identifier of the rule.

pszResponseOid

Object identifier of the response.

next

Pointer to the next Policy Link structure.

Sm_PolicyApi_Realm_t

Sm_PolicyApi_Realm_t type defines a SiteMinder Realm object.

Syntax

typedef struct Sm_PolicyApi_Realm_s
{
   int iStructId;
   char pszOid[BFSIZE];
   char pszName[BFSIZE];                     /* Required */
   char pszDesc[BFSIZE];
   char pszResourceFilter[BFSIZE];
   char pszAgentOid[BFSIZE];                 /* Required */
   char pszSchemeOid[BFSIZE];                /* Required */
   char pszParentRealmOid[BFSIZE];           /* Required */
   char pszDomainOid[BFSIZE];                /* Required */
   char pszAzUserDirOid[BFSIZE];             /* Required */
   char pszRegSchemeOid[BFSIZE];             /* Required */
   bool bProcessAuthEvents;                  /* Required */
   bool bProcessAzEvents;                    /* Required */
   bool bProtectAll;                         /* Required */
   int nMaxTimeout;                          /* Required */
   int nIdleTimeout;                         /* Required */
   bool bSyncAudit;                          /* Required */
   struct Sm_PolicyApi_Realm_s* next;
} Sm_PolicyApi_Realm_t;

Field

Description

iStructId

Realm data structure ID, defined in Sm_PolicyApi_Structs_t.

pszOid

The object identifier of the Realm object.

pszName

Name of the realm.

pszDesc

Brief description of the realm.

pszResourceFilter

Path for the resource filter.

pszAgentOid

Object identifier of the agent or agent group associated with the realm.

pszSchemeOid

Object identifier of the authentication scheme associated with the realm.

pszParentRealmOid

Object identifier of the parent realm under which this realm will be added. If the realm being added is the top realm in the realm hierarchy, set this field to the domain OID. Otherwise, set it to the parent realm OID.

pszDomainOid

Object identifier of the domain.

bProcessAuthEvents

Boolean to trigger this rule in an event of authentication attempts.

Authentication event processing affects performance. If no rules in the realm are triggered by authentication events, set this field to false.

bProcessAzEvents

Boolean to trigger this rule in an event of authorization attempts.

Authorization event processing affects performance. If no rules in the realm are triggered by authorization events, set this field to false.

bProtectAll

Boolean to protect all the resources contained in the new realm.

nMaxTimeout

Maximum amount of time a user can access the protected resources in the realm before they must re-authenticate.

nIdleTimeout

Amount of time a user can remain authenticated for the protected resources in the realm without interacting with the resources before they must re-authenticate.

bSyncAudit

Boolean to enable synchronous auditing. When enabled, users cannot access resources within a realm until their activity has been successfully recorded in the audit logs of both the Policy Server and the Web Agent.

pszAzUserDirOid

OID of the directory against which users accessing resources in this realm will be authorized.

pszRegSchemeOid

OID of the registration scheme that will be used to register new users accessing resources in this realm.

next

Pointer to the next realm structure.

Sm_PolicyApi_RegistrationScheme_t

Defines a SiteMinder registration scheme object.

Syntax

typedef struct Sm_PolicyApi_RegistrationScheme_s
{
   int iStructId;
   char pszOid[BFSIZE];
   char pszName[BFSIZE];                     /* Required */
   char pszDesc[BFSIZE];
   char pszUserDirOid[BFSIZE];               /* Required */
   char pszWelcomePageURL[BFSIZE];
   char pszTemplatePath[BFSIZE];
   bool bEnableLogging;                      /* Required */
   struct Sm_PolicyApi_RegistrationScheme_s* next;
} Sm_PolicyApi_RegistrationScheme_t;

Field

Description

iStructId

Registration scheme data structure ID, defined in Sm_PolicyApi_Structs_t.

pszOid

The object identifier of the registration scheme object.

pszName

Name of the registration scheme.

pszDesc

Brief description of the registration scheme.

pszUserDirOid

Object identifier of the LDAP user directory in which user information is stored.

pszWelcomePageURL

Location of the form used to welcome users who registered and who have been successfully authenticated.

pszTemplatePath

Location of a registration template.

bEnableLogging

Flag to indicate whether to log registration information. Set this flag to true to enable logging.

next

Pointer to the next registration scheme structure.

Sm_PolicyApi_RegularExpression_t

Defines a regular expression.

Syntax

typedef struct Sm_PolicyApi_RegularExpression_s
{
   int iStructId;
   char pszOid[BFSIZE];
   char pszName[BFSIZE];
   char ExpressionDef[BFSIZE];
   bool matchExpression;
   struct Sm_PolicyApi_RegularExpression_s *next;
} Sm_PolicyApi_RegularExpression_t;

Field

Description

iStructId

Regular expression structure ID, defined in Sm_PolicyApi_Structs_t.

pszOid

The object identifier of the regular expression object.

pszName

Name of the regular expression.

ExpressionDef

Definition of the regular expression.

matchExpression

1 if password must match this expression.

0 if password must not match this expression.

next

Pointer to the next regular expression structure.

Sm_PolicyApi_Response_t

Defines a SiteMinder Response object.

Syntax

typedef struct Sm_PolicyApi_Response_s
{
   int iStructId;
   char pszOid[BFSIZE];
   char pszName[BFSIZE];                     /* Required */
   char pszDesc[BFSIZE];
   char pszAgentTypeOid[BFSIZE];             /* Required */
   char pszDomainOid[BFSIZE];                /* Required */
   struct Sm_PolicyApi_Response_s* next;
} Sm_PolicyApi_Response_t;

Field

Description

iStructId

Response data structure ID, defined in Sm_PolicyApi_Structs_t.

pszOid

The object identifier of the Response object.

pszName

Name of the Response.

pszDesc

Brief description of the Response.

pszAgentTypeOid

The object identifier of the agent type.

pszDomainOid

The object identifier of the domain. Required for a domain-specific response; ignored for a global response.

next

Pointer to the next Response structure.

Sm_PolicyApi_ResponseAttr_t

Defines a SiteMinder Response attribute object.

Syntax

typedef struct Sm_PolicyApi_ResponseAttr_s
{
   int iStructId;
   char pszOid[BFSIZE];
   char pszAgentTypeAttrOid [BFSIZE];        /* Required */
   char pszValue[BFSIZE];
   int iTTL;                                 /* Required */
   int iFlags;
   struct Sm_PolicyApi_ResponseAttr_s* next;
   char pszActiveExpr[BFSIZE];
   Sm_PolicyApi_Oid_t* pVariableList;
} Sm_PolicyApi_ResponseAttr_t;

Field

Description

iStructId

Response Attribute data structure ID, defined in Sm_PolicyApi_Structs_t.

pszOid

The object identifier of the Response Attribute object.

pszAgentTypeAttrOid

The object identifier of the agent type attribute.

pszValue

A response attribute type, as described in Response Attribute Types.

iTTL

Amount of time (in seconds) that can elapse before the value of the response attribute is recalculated.

iFlags

Reserved.

next

Pointer to the next Response Attribute structure.

pszActiveExpr

Active expression associated with the response attribute. For information, see the bullet "Active Response" in the section Response Attribute Types.

pVariableList

Linked list of variable OIDs used by the active expression.

Response Attribute Types

The field pszValue contains one of the following response attribute types:

Note: The non-alphanumeric characters in the formats below are required characters.

Sm_PolicyApi_Rule_t

Defines a SiteMinder Rule object.

Syntax

typedef struct Sm_PolicyApi_Rule_s
{
   int iStructId;
   char pszOid[BFSIZE];
   char pszName[BFSIZE];                     /* Required */
   char pszDesc[BFSIZE];
   char pszRealmOid[BFSIZE];                 /* Required */
   char pszAction[BFSIZE];                   /* Required */
   char pszResource[2*BFSIZE];
   bool bAllowAccess;                        /* Required */
   bool bRegularExpression;                  /* Required */
   char pszActiveExpr[BFSIZE];
   bool bIsEnabled;                          /* Required */
   long nStartTime;
   long nEndTime;
   unsigned char   pszTimeGrid[TIMESIZE];
   struct Sm_PolicyApi_Rule_s* next;
   char pszAgentOid[BFSIZE];                 /* Required */
} Sm_PolicyApi_Rule_t;

Field

Description

iStructId

Rule data structure ID, defined in Sm_PolicyApi_Structs_t.

pszOid

The object identifier of the rule object.

pszName

Name of the Rule.

pszDesc

Brief description of the rule.

pszRealmOid

Object identifier of the Realm associated with the rule. Required for a domain-specific rule; ignored for a global rule.

pszAction

The type of action the rule is executing. The supported Web Agent Actions consist of the following HTTP operations: Get, Put, and Post.

pszResource

Resource protected by the rule.

bAllowAccess

Flag to allow or deny access to the resource protected by the rule.

bRegularExpression

Flag to perform regular expression pattern matching. Regular expressions are text patterns used for string matching.

 

pszActiveExpr

Active expression associated with the rule. The expression is a string of variable definitions in the following format:

The non-alphanumeric characters are required characters .For example:
<@lib="LibName" func="FuncName"
                param="FuncParam"@>

In the format example:

  • LibName is the name of the shared library that supports the Active Rule.
  • FuncName is the name of the actual function in the shared library that implements the Active Rule.
  • FuncParam is an optional list of parameters to be passed to the function in the shared library.

 

dbIsEnabled

Flag to enable or disable the rule.

nStartTime

The time when the time restriction becomes effective. This value is stored in standard time_t format. Set nStartTime to 0 to start the time restriction immediately.

nEndTime

The time when the time restriction expires. This value is stored in standard time_t format. Set nEndTime to 0 to end the time restriction immediately.

pszTimeGrid

An array containing time restrictions for an entire week.

next

Pointer to the next rule structure.

pszAgentOid

Object identifier of agent or agent group associated with the global rule.

 

Sm_PolicyApi_SAMLAffiliation_t

Defines a SAML 2.0 affiliation object. A SAML 2.0 affiliation is a set of entities that share a single federated namespace of unique Name IDs for principals.

Syntax

typedef struct Sm_PolicyApi_SAMLAffiliation_s
{
   int iStructId;
   Sm_PolicyApi_SAMLProviderProp_t *pProps;
   struct Sm_PolicyApi_SAMLAffiliation_s *next;
} Sm_PolicyApi_SAMLAffiliation_t;

Field

Description

iStructId

SAML affiliation structure ID, defined in Sm_PolicyApi_Structs_t.

pProps

SAML 2.0 metadata properties associated with the affiliation.

If you do not assign a value to a property associated with a default value, the default will be assigned.

next

Pointer to the next SAML affiliation structure.

Sm_PolicyApi_SAMLProviderProp_t

Defines a SAML 2.0 metadata property as a name/value pair.

An Sm_PolicyApi_SAMLProviderProp_t structure consists of a single name/value pair. You define a set of properties for a given SAML 2.0 object through a linked list of Sm_PolicyApi_SAMLProviderProp_t structures.

Use the following structures and function to define a set of properties for a SAML 2.0 Service Provider, affiliation, or authentication scheme and associated Identity Provider:

Syntax

typedef struct Sm_PolicyApi_SAMLProviderProp_s
{
   int iStructId;
   char pszName[BFSIZE];
   char pszValue[BFSIZE];
   struct Sm_PolicyApi_SAMLProviderProp_s *next;
} Sm_PolicyApi_SAMLProviderProp_t;

Field

Description

iStructId

SAML 2.0 properties structure ID, defined in Sm_PolicyApi_Structs_t.

pszName

The property name. See Property Lists for a list of valid property names.

pszValue

The value to assign to pszName.

next

Pointer to the next SAML 2.0 properties structure.

Example

The following is an example of a helper method that creates an instance of Sm_PolicyApi_SAMLProviderProp_t and assigns it the name/value pair that is passed into it:

Sm_PolicyApi_SAMLProviderProp_t * CreateSAMLProp(
                                         const char *pszName,
                                         const char *pszValue)
{
   Sm_PolicyApi_SAMLProviderProp_t * pProp = new
                                Sm_PolicyApi_SAMLProviderProp_t;
   memset(pProp, 0, sizeof(Sm_PolicyApi_SAMLProviderProp_t));
   pProp->iStructId = Sm_PolicyApi_SAMLProviderProp_ID;
   strncpy(pProp->pszName, pszName, BFSIZE);
   strncpy(pProp->pszValue, pszValue, BFSIZE);
   return pProp;
}

The following is an example of a helper method that retrieves the value of the property whose name is passed into it:

char * FindSAMLParam(const Sm_PolicyApi_SAMLSP_t *pStructSP,
                     const char *pszName)
{
   for(Sm_PolicyApi_SAMLProviderProp_t *pCurProp=pStructSP->pProps;
       pCurProp != NULL;
       pCurProp = pCurProp->next)
   {
       if (0 == strcmp(pCurProp->pszName, pszName))
      {
          return pCurProp->pszValue;
      }
   }

   return NULL;
}

Property Lists

Each Sm_PolicyApi_SAMLProviderProp_t structure contains a SAML 2.0 metadata property defined as a name/value pair. A complete set of properties for a particular SAML 2.0 object is defined as a linked list of Sm_PolicyApi_SAMLProviderProp_t structures.

The following metadata properties apply to a given type of SAML 2.0 object:

Note: Some properties are used with multiple object types.

Service Provider Properties

A Service Provider object contains information that an Identity Provider needs to produce assertions for the Service Provider. Service Provider properties are stored within an Sm_PolicyApi_SAMLSP_t structure.

The properties of a SAML 2.0 Service Provider object are listed following.

Property Name

Comments

General Properties

SAML_NAME

String, required.

SAML_DESCRIPTION

String.

SAML_SP_AUTHENTICATION_URL

String, required.

SAML_ENABLED

Boolean.

Default: SAML_TRUE.

SAML_SP_DOMAIN

String, required.

Name IDs Tab

SAML_SP_NAMEID_FORMAT

String.

Default: Unspecified.

SAML_SP_NAMEID_TYPE

Integer.

 

Default: 1.

SAML_SP_NAMEID_STATIC

String.

Required conditionally.

SAML_SP_NAMEID_ATTRNAME

String.

Required conditionally.

SAML_SP_NAMEID_DNSPEC

String.

Required conditionally.

SAML_AFFILIATION

String.

SAML_KEY_SPID

String, required.

 

String, required.

SAML_MAJOR_VERSION

Integer.

Default: 2.

SAML_MINOR_VERSION

Integer.

Default: 0.

SAML_SKEWTIME

Integer.

Default: 30.

SAML_DISABLE_SIGNATURE_
  PROCESSING

Boolean.

Default: SAML_FALSE.

SAML_DSIG_VERINFO_ISSUER_DN

String.

Required conditionally.

SAML_DSIG_VERINFO_SERIAL_NUMBER

String.

Required conditionally.

SSO Properties

SAML_AUDIENCE

String, required.

SAML_SP_ASSERTION_CONSUMER_
  DEFAULT_URL

String, required.

SAML_ENABLE_SSO_ARTIFACT_
  BINDING

Boolean.

Default: SAML_FALSE.

SAML_SP_ARTIFACT_ENCODING

String.

Default: FORM. Applies if no value is provided and SAML_ENABLE_SSO_
ARTIFACT_BINDING is SAML_TRUE.

SAML_SP_IDP_SOURCEID

String.

Default: A hex-encoded SHA-1 hash of the SAML_SP_IDPID value.

SAML_SP_PASSWORD

String.

Required conditionally (see page 34).

SAML_ENABLE_SSO_POST_BINDING

Boolean.

Default: SAML_FALSE.

SAML_SSOECPPROFILE

Boolean.

Default: SAML_FALSE.

SAML_SP_REQUIRE_SIGNED_
  AUTHNREQUESTS

Boolean.

Default: SAML_FALSE.

SAML_SP_AUTHENTICATION_LEVEL

Integer.

Default: 5.

SAML_SP_AUTHN_CONTEXT_CLASS_REF

String.

Default: urn:oasis:names:tc:SAML:
       2.0:ac:classes:Password

SAML_SP_VALIDITY_DURATION

Integer.

Default: 60.

SAML_SP_STARTTIME

Long.

SAML_SP_ENDTIME

Long.

SLO Properties

SAML_SLO_REDIRECT_BINDING

Boolean.

Default: SAML_FALSE.

SAML_SLO_SERVICE_VALIDITY_
  DURATION

Integer.

Default: 60. Applies if no value is provided and SAML_SLO_REDIRECT_BINDING is SAML_TRUE.

SAML_SLO_SERVICE_URL

String.

Required conditionally.

SAML_SLO_SERVICE_RESPONSE_URL

String.

SAML_SLO_SERVICE_CONFIRM_URL

String.

IPD Properties

SAML_SP_ENABLE_IPD

Boolean.

Default: SAML_FALSE.

SAML_SP_IPD_SERVICE_URL

String.

Required conditionally.

SAML_SP_COMMON_DOMAIN

String.

Required conditionally.

SAML_SP_PERSISTENT_COOKIE

Boolean.

Default: SAML_FALSE.

Encryption Properties

SAML_SP_ENCRYPT_ID

Boolean.

Default: SAML_FALSE.

SAML_SP_ENCRYPT_ASSERTION

Boolean.

Default: SAML_FALSE.

SAML_SP_ENCRYPT_BLOCK_ALGO

String.

 

Default: tripledes.

SAML_SP_ENCRYPT_KEY_ALGO

String.

 

Default: rsa-v15.

SAML_SP_ENCRYPT_CERT_ISSUER_DN

String.

Required conditionally.

SAML_SP_ENCRYPT_CERT_SERIAL_
  NUMBER

String.

Required conditionally.

Attribute Service Properties

SAML_SP_ATTRSVS_ENABLE

Boolean.

Default: False (0).

SAML_SP_ATTRSVS_VALIDITY_DURATION

Integer.

Default: 60 (seconds)

SAML_SP_ATTRSVS_SIGN_ASSERTION

Boolean.

Default: False (0).

SAML_SP_ATTRSVS_LDAP_SEARCH_SPEC

String.

SAML_SP_ATTRSVS_ODBC_SEARCH_SPEC

String.

SAML_SP_ATTRSVS_WINNT_SEARCH_SPEC

String.

SAML_SP_ATTRSVS_CUSTOM_SEARCH_SPEC

String.

SAML_SP_ATTRSVS_AD_SEARCH_SPEC

String.

Advanced Properties

SAML_SP_PLUGIN_CLASS

String.

SAML_SP_PLUGIN_PARAMS

String.

SAML Affiliation Properties

The properties of a SAML 2.0 affiliation object are listed below. Properties are grouped according to the way they are presented on the SAML Affiliation Properties dialog box.

SAML affiliation properties are stored within an Sm_PolicyApi_SAMLAffiliation_t structure.

Property Name

Comments

General Properties

SAML_NAME

String, required.

SAML_DESCRIPTION

String

SAML_KEY_AFFILIATION_ID

String, required.

SAML_MAJOR_VERSION

Integer.

Default: 2.

SAML_MINOR_VERSION

Integer.

Default: 0.

SAML_OID

String.

SiteMinder supplies the object identifier when an affiliation object is created.

Name IDs Tab

SAML_SP_NAMEID_FORMAT

String.

 

Default: Unspecified.

SAML_SP_NAMEID_TYPE

Integer.

 

Default: 1.

SAML_SP_NAMEID_STATIC

String.

Required conditionally.

SAML_SP_NAMEID_ATTRNAME

String.

Required conditionally.

SAML_SP_NAMEID_DNSPEC

String.

Required conditionally.

Users Tab

SAML_IDP_XPATH

String.

SAML_IDP_LDAP_SEARCH_SPEC

String.

SAML_IDP_ODBC_SEARCH_SPEC

String.

SAML_IDP_WINNT_SEARCH_SPEC

String.

SAML_IDP_CUSTOM_SEARCH_SPEC

String.

SAML_IDP_AD_SEARCH_SPEC

String.

SAML 2.0 Authentication Scheme Properties

The properties listed in this section define:

You define a SAML 2.0 authentication scheme to represent an Identity Provider for a particular Service Provider.

The properties of a SAML 2.0 authentication scheme and its associated Identity Provider are listed below. Properties are grouped according to the way they are presented on the SAML Authentication Scheme Properties dialog box for the SAML 2.0 Template.

You define properties for a SAML 2.0 authentication scheme and its associated Identity Provider by calling Sm_PolicyApi_AddSAMLScheme().

Property Name

Comments

General Properties

SAML_NAME

String, required.

SAML_DESCRIPTION

String

Scheme Setup Tab

SAML_IDP_SPID

String, required.

SAML_KEY_IDPID

String, required.

SAML_MAJOR_VERSION

Integer.

Default: 2.

SAML_MINOR_VERSION

Integer.

Default: 0.

SAML_SKEWTIME

Integer.

Default: 30.

SAML_DISABLE_SIGNATURE_
  PROCESSING

Boolean.

Default: SAML_FALSE.

SAML_DSIG_VERINFO_ISSUER_DN

String.

Required conditionally (see page 9).

SAML_DSIG_VERINFO_SERIAL_NUMBER

String.

Required conditionally (see page 10).

Additional Configuration - Users Tab

SAML_IDP_XPATH

String.

SAML_IDP_LDAP_SEARCH_SPEC

String.

SAML_IDP_ODBC_SEARCH_SPEC

String.

SAML_IDP_WINNT_SEARCH_SPEC

String.

SAML_IDP_CUSTOM_SEARCH_SPEC

String.

SAML_IDP_AD_SEARCH_SPEC

String.

SAML_AFFILIATION

String.

Additional Configuration - SSO Tab

SAML_IDP_SSO_REDIRECT_MODE

Integer.

Default: 0.

SAML_IDP_SSO_DEFAULT_SERVICE

String, required.

SAML_AUDIENCE

String, required.

SAML_IDP_SSO_TARGET

String.

SAML_ENABLE_SSO_ARTIFACT_
  BINDING

Boolean.

Default: SAML_FALSE.

SAML_KEY_IDP_SOURCEID

String.

Default: A hex-encoded SHA-1 hash of the SAML_KEY_IDPID value.

SAML_IDP_ARTIFACT_RESOLUTION_
  DEFAULT_SERVICE

String.

Required conditionally (see page 12).

SAML_IDP_BACKCHANNEL_AUTH_TYPE

Integer.

Default: 0.

SAML_IDP_SPNAME

String.

Required conditionally (see page 19).

SAML_IDP_PASSWORD

String.

Required conditionally (see page 14).

SAML_ENABLE_SSO_POST_BINDING

Boolean.

Default: SAML_FALSE.

SAML_IDP_SSO_ENFORCE_SINGLE_
  USE_POLICY

Boolean.

Default: SAML_TRUE.

SAML_SSOECPPROFILE

Boolean.

Default: SAML_FALSE.

SAML_IDP_SIGN_AUTHNREQUESTS

Boolean.

Default: SAML_FALSE.

Additional Configuration - SLO Tab

SAML_SLO_REDIRECT_BINDING

Boolean.

Default: SAML_FALSE.

SAML_SLO_SERVICE_VALIDITY_
  DURATION

Integer.

Default: 60. Applies if no value is provided and SAML_SLO_REDIRECT_BINDING is SAML_TRUE.

SAML_SLO_SERVICE_URL

String.

Required conditionally.

SAML_SLO_SERVICE_RESPONSE_URL

String.

SAML_SLO_SERVICE_CONFIRM_URL

String.

Additional Configuration - Encryption Tab

SAML_IDP_REQUIRE_ENCRYPTED_
  ASSERTION

Boolean.

Default: SAML_FALSE.

SAML_IDP_REQUIRE_ENCRYPTED_
  NAMEID

Boolean.

Default: SAML_FALSE.

Additional Configuration - Attributes Tab

SAML_IDP_SAMLREQ_ENABLE

Boolean.

Default: False (0).

SAML_IDP_SAMLREQ_REQUIRE_SIGNED_ ASSERTION

Boolean.

Default: False (0).

SAML_IDP_SAMLREQ_ATTRIBUTE_SERVICE

String.

Additional Configuration - NameID tab

SAML_IDP_SAMLREQ_NAMEID_FORMAT

String.

SAML_IDP_SAMLREQ_NAMEID_TYPE

Integer.

Default: 1 (User Attribute)

SAML_IDP_SAMLREQ_NAMEID_STATIC

String.

SAML_IDP_SAMLREQ_NAMEID_ATTR_NAME

String.

SAML_IDP_SAMLREQ_NAMEID_DN_SPEC

String.

SAML_IDP_SAMLREQ_NAMEID_ALLOW_

NESTED

Boolean.

Deafult: False (0).

Additional Configuration - Advanced Tab

SAML_SP_PLUGIN_CLASS

String.

SAML_SP_PLUGIN_PARAMS

String.

SAML_IDP_REDIRECT_URL_USER_
  NOT_FOUND

String.

SAML_IDP_REDIRECT_MODE_USER_
  NOT_FOUND

Integer.

Default: 0.

SAML_IDP_REDIRECT_URL_FAILURE

String.

SAML_IDP_REDIRECT_MODE_FAILURE

Integer.

Default: 0.

SAML_IDP_REDIRECT_URL_INVALID

String.

SAML_IDP_REDIRECT_MODE_INVALID

Integer.

Default: 0.

More Information:

Property Reference

Sm_PolicyApi_SAMLRequesterAttr_t

Defines an attribute that can be requested by a SAML Requester in an AttributeQuery message.

Syntax

typedef struct Sm_PolicyApi_SAMLRequesterAttr_s
{
   int iStructId;
   Sm_PolicyApi_SAMLSPAttrNameFormat_t nAttrNameFormat;
   char pszLocalName[BFSIZE];
   char pszName[BUFSIZE];
   struct Sm_PolicyApi_SAMLRequesterAttr_s* next;
} Sm_PolicyApi_SAMLRequesterAttr_t;

Field

Description

iStructId

SAML attribute structure ID, defined in Sm_PolicyApi_Structs_t.

nAttrNameFormat

The format of the attribute name, as defined by the SAML 2.0 standard.

pszLocalName

Name of the attribute as defined in the SAML 2.0 authentication scheme.

pszName

Actual name of the attribute requested from the Attribute Authority.

next

Pointer to the next requester attribute structure.

Sm_PolicyApi_SAMLSP_t

Defines a SAML 2.0 Service Provider object for an Identity Provider.

A Service Provider offers services (such as access to applications and other resources) to principals within a federation.

Syntax

typedef struct Sm_PolicyApi_SAMLSP_s
{
   int iStructId;
   Sm_PolicyApi_SAMLProviderProp_t *pProps;
   Sm_PolicyApi_IPAddress_t *pIPAddress;
   unsigned char   pszTimeGrid[TIMESIZE];
   struct Sm_PolicyApi_SAMLSP_s *next;
} Sm_PolicyApi_SAMLSP_t;

Field

Description

iStructId

SAML Service Provider structure ID, defined in Sm_PolicyApi_Structs_t.

pProps

SAML 2.0 metadata properties associated with the Service Provider.

If you do not assign a value to a property associated with a default value, the default will be assigned.

pIPAddress

The Service Provider's IP address.

pszTimeGrid

An array containing time restrictions for an entire week.

next

Pointer to the next Service Provider structure.

Sm_PolicyApi_SAMLSPAssertionConsumerService_t

Defines a structure that supports the Assertion Consumer Service.

Syntax

typedef struct Sm_PolicyApi_SAMLSPAssertionConsumerService_s
{
   int iStructId;
   int iIndex;
   Sm_PolicyApi_SAMLSPACSBinding_t nACSBinding;
   char pszAssertionConsumerURL[BFSIZE};
   bool bIsDefault;
   struct Sm_PolicyApi_SAMLSPAssertionConsumerService_s* next;
} Sm_PolicyApi_SAMLSPAsserttionConsumer_t;

Field

Description

iStructId

SAML Assertion Consumer Service ID, defined in Sm_PolicyApi_Structs_t.

iIndex

Index value assigned to this Assertion Consumer Service. The value must be 0 or a positive integer.

nACSBinding

One of the following bindings associated with the Assertion Consumer Service:

  • Sm_PolicyApi_SAMLSP_HTTP_Post
  • Sm_PolicyApi_SAMLSP_HTTP_Artifact
  • Sm_PolicyApi_SAMLSP_PAOS

pszAssertionConsumer-
URL

Location of the Assertion Consumer Service.

In the case of the HTTP-Artifact binding, this is the URL that contains a SAML artifact and target as query parameters, which are used by the credential collector to obtain the SAML assertion and redirect the user to the target.

In the case of the HTTP-Post binding, it is the destination site URL to which the user's browser must POST a generated assertion.

bIsDefault

Specifies whether this Assertion Consumer Service is the default.

next

Pointer to the defintion of the next Assertion Consumer Service.

Sm_PolicyApi_SAMLSPAttr_t

Defines an attribute of a principal for a particular SAML 2.0 Service Provider.

Syntax

typedef struct Sm_PolicyApi_SAMLSPAttr_s
{
   int iStructId;
   Sm_PolicyApi_SAMLSPAttrNameFormat_t nAttrNameFormat;
   char pszValue[BFSIZE];
   bool bEncrypted;
   struct Sm_PolicyApi_SAMLSPAttr_s* next;
   Sm_PolicyApi_SAMLSPAttrMode_t  nMode;
} Sm_PolicyApi_SAMLSPAttr_t;

Field

Description

iStructId

SAML attribute structure ID, defined in Sm_PolicyApi_Structs_t.

nAttrNameFormat

The format of the attribute name, as defined by the SAML 2.0 standard.

pszValue

The attribute's name and value, in one of these formats:

  • Static attributes:
    variableName=value
  • User attributes:
    variableName=<%userattr="AttrName"%>
  • DN attributes:
    variablName=<#dn="DNSpec"
                    attr="AttrName"#>

To allow SiteMinder to retrieve DN attributes from a nested group, begin DNSpec with an exclamation mark ( ! ). For example:
dn="!ou=People,o=security.com"

bEncrypted

Specifies whether the attribute is encrypted.

next

Pointer to the next attribute structure.

nMode

One of the three following uses of an attribute:

  • Sm_PolicyApi_SAMLSP_SSO_Only = 0
  • Sm_PolicyApi_SAMLSP_Atribute_Only = 1
  • Sm_PolicyApi_SAMLSP_Both = 2

Sm_PolicyApi_Scheme_t

Defines a SiteMinder authentication scheme object.

Syntax

typedef struct Sm_PolicyApi_Scheme_s
{
   int iStructId;
   char pszOid[BFSIZE];
   char pszName[BFSIZE];                    /* Required */
   char pszDesc[BFSIZE];
   int nLevel;                              /* Required */
   char pszLib[BFSIZE];
   char pszParam[BFSIZE];
   char pszSecret[BFSIZE];
   bool bIsTemplate;
   bool bIsUsedbyAdmin;
   Sm_Api_SchemeType_t nType;               /* Required */
   bool bAllowSaveCreds;                    /* Required */
   bool bIsRadius;                          /* Required */
   bool bIgnorePwCheck;                     /* Required */
   struct Sm_PolicyApi_Scheme_s* next;
} Sm_PolicyApi_Scheme_t;

Field

Description

iStructId

Authentication scheme data structure ID, defined in Sm_PolicyApi_Structs_t.

pszOid

The object identifier of the authentication scheme object.

pszName

Name of the authentication scheme.

pszDesc

Brief description of the authentication scheme.

nLevel

The protection level of the authentication scheme. The level may vary from 1 through 1000. The higher the number, the more secure is the scheme.

With Anonymous authentication schemes, set this value to 0.

pszLib

The name of the shared library that implements the custom authentication scheme.

pszParam

Information that is passed on to the custom authentication scheme.

pszSecret

A shared secret known to two parties for the purpose of establishing secure data exchange. This information is passed on to the custom authentication scheme.

bIsTemplate

Flag to indicate whether the authentication scheme is a template.

Note: Setting an authentication scheme as a template with the C Policy Management API is deprecated in SDK v6.0 SP3.

bIsUsedbyAdmin

Flag to indicate if the custom authentication scheme can be used to authenticate administrators.

nType

The type of the authentication scheme, defined in Sm_Api_SchemeType_t.

bAllowSaveCreds

Flag to allow user credentials to be saved.

bIsRadius

Flag to indicate if the scheme is of type Radius.

bIgnorePwCheck

If this flag is set to true, password policies for the authentication scheme will be disabled.

next

Pointer to the next Scheme structure.