## LassoProfile LassoProfile — Base class for all identity profiles |

## Functions

LassoRequestType | lasso_profile_get_request_type_from_soap_msg ()
lasso_error_t | lasso_profile_set_soap_fault_response ()
gboolean | lasso_profile_is_liberty_query ()
LassoIdentity * | lasso_profile_get_identity ()
LassoSession * | lasso_profile_get_session ()
gboolean | lasso_profile_is_identity_dirty ()
gboolean | lasso_profile_is_session_dirty ()
lasso_error_t | lasso_profile_set_identity_from_dump ()
lasso_error_t | lasso_profile_set_session_from_dump ()
LassoNode * | lasso_profile_get_nameIdentifier ()
char * | lasso_profile_get_artifact ()
char * | lasso_profile_get_artifact_message ()
void | lasso_profile_set_artifact_message ()
LassoServer * | lasso_profile_get_server ()
void | lasso_profile_set_signature_hint ()
LassoProfileSignatureHint | lasso_profile_get_signature_hint ()
void | lasso_profile_set_signature_verify_hint ()
LassoProfileSignatureVerifyHint | lasso_profile_get_signature_verify_hint ()
LassoProviderRole | lasso_profile_sso_role_with ()
lasso_error_t | lasso_profile_get_signature_status ()

## Types and Values

struct | LassoProfile
enum | LassoRequestType
enum | LassoProfileSignatureHint
enum | LassoProfileSignatureVerifyHint

## Description

## Functions

### lasso_profile_get_request_type_from_soap_msg ()

    LassoRequestType
    lasso_profile_get_request_type_from_soap_msg
                                   (const gchar *soap);

Looks up and return the type of the request in a SOAP message.

#### Parameters

soap | the SOAP message |

#### Returns

the type of request

### lasso_profile_set_soap_fault_response ()

    lasso_error_t
    lasso_profile_set_soap_fault_response (LassoProfile *profile,
                                           const char *faultcode,
                                           const char *faultstring,
                                           GList *details);

Set the response to a SOAP fault, using `faultcode` , `faultstring` , and `details` to initialize it.

#### Parameters

profile | a LassoProfile object |
faultcode | the code for the SOAP fault |
faultstring | the description for the SOAP fault. | [allow-none]
details | a list of nodes to add as details. | [element-type LassoNode][allow-none]

#### Returns

0 if successful, an error code otherwise.

### lasso_profile_is_liberty_query ()

    gboolean
    lasso_profile_is_liberty_query (const gchar *query);

Tests the query string to know if the URL is called as the result of a Liberty redirect (action initiated elsewhere) or not.

#### Parameters

query | HTTP query string |

#### Returns

TRUE if Liberty query, FALSE otherwise

### lasso_profile_get_identity ()

    LassoIdentity *
    lasso_profile_get_identity (LassoProfile *profile);

Gets the identity bound to `profile` .

#### Parameters

profile | a LassoProfile |

#### Returns

the identity or NULL if it none was found. The LassoIdentity object is internally allocated and must not be freed by the caller.

[transfer none]

### lasso_profile_get_session ()

    LassoSession *
    lasso_profile_get_session (LassoProfile *profile);

Gets the session bound to `profile` .

#### Parameters

profile | a LassoProfile |

#### Returns

the session or NULL if it none was found. The LassoSession object is internally allocated and must not be freed by the caller.

[transfer none]

### lasso_profile_is_identity_dirty ()

    gboolean
    lasso_profile_is_identity_dirty (LassoProfile *profile);

Checks whether identity has been modified (and should therefore be saved).

#### Parameters

profile | a LassoProfile |

#### Returns

`TRUE` if identity has changed

### lasso_profile_is_session_dirty ()

    gboolean
    lasso_profile_is_session_dirty (LassoProfile *profile);

Checks whether session has been modified (and should therefore be saved).

#### Parameters

profile | a LassoProfile |

#### Returns

`TRUE` if session has changed

### lasso_profile_set_identity_from_dump ()

    lasso_error_t
    lasso_profile_set_identity_from_dump (LassoProfile *profile,
                                          const gchar *dump);

Builds a new LassoIdentity object from XML dump and binds it to `profile` .

#### Parameters

profile | a LassoProfile |
dump | XML identity dump |

#### Returns

0 on success; or a negative value otherwise.

### lasso_profile_set_session_from_dump ()

    lasso_error_t
    lasso_profile_set_session_from_dump (LassoProfile *profile,
                                         const gchar *dump);

Builds a new LassoSession object from XML dump and binds it to `profile` .

#### Parameters

profile | a LassoProfile |
dump | XML session dump |

#### Returns

0 on success; or a negative value otherwise.

### lasso_profile_get_nameIdentifier ()

    LassoNode *
    lasso_profile_get_nameIdentifier (LassoProfile *profile);

Looks up appropriate federation in object and gets the service provider name identifier (which is actually a LassoSamlNameIdentifier in ID-FF 1.2 and LassoSaml2NameID in SAML 2.0).

#### Parameters

profile | a LassoProfile |

#### Returns

the name identifier or NULL if none was found. The LassoNode object is internally allocated and must not be freed by the caller.

[transfer none]

### lasso_profile_get_artifact ()

    char *
    lasso_profile_get_artifact (LassoProfile *profile);

Return the artifact token

#### Parameters

profile | a LassoProfile object |

#### Returns

a newly allocated string or NULL.

[transfer full][allow-none]

### lasso_profile_get_artifact_message ()

    char *
    lasso_profile_get_artifact_message (LassoProfile *profile);

Return the artifact message.

#### Parameters

profile | a LassoProfile object |

#### Returns

a newly allocated string or NULL.

[transfer full][allow-none]

### lasso_profile_set_artifact_message ()

    void
    lasso_profile_set_artifact_message (LassoProfile *profile,
                                        const char *message);

Set `message` as the content for the ArtifactResolve response.

#### Parameters

profile | a LassoProfile object |
message | the artifact message content |

### lasso_profile_get_server ()

    LassoServer *
    lasso_profile_get_server (LassoProfile *profile);

Return the LassoServer linked to this profile object. A profile object should always contains one. It allows to find metadatas of other providers and to know our own metadatas.

#### Parameters

profile | a LassoProfile object |

#### Returns

a LassoServer or NULL if profile is not a LassoProfile or no LassoServer object was setup at the creation of this profile.

[transfer none]

### lasso_profile_set_signature_hint ()

    void
    lasso_profile_set_signature_hint (LassoProfile *profile,
                                      LassoProfileSignatureHint signature_hint);

By default each profile will choose to sign or not its messages, this method allow to force or forbid the signature of messages, on a per transaction basis.

#### Parameters

profile | a LassoProfile object |
signature_hint | wheter next produced messages should be signed or not (or let Lasso choose from implicit information). |

### lasso_profile_get_signature_hint ()

    LassoProfileSignatureHint
    lasso_profile_get_signature_hint (LassoProfile *profile);

Return the value of the signature hint attribute (see `lasso_profile_set_signature_hint()`).

#### Parameters

profile | a LassoProfile object |

#### Returns

a value in the enum type LassoProfileSignatureHint.

### lasso_profile_set_signature_verify_hint ()

    void
    lasso_profile_set_signature_verify_hint
                                   (LassoProfile *profile,
                                    LassoProfileSignatureVerifyHint signature_verify_hint);

By default each profile will choose to verify or not its messages, this method allow to force or forbid the signature of messages, on a per transaction basis.

#### Parameters

profile | a LassoProfile object |
signature_verify_hint | whether next received message signatures should be checked or not (or let Lasso choose from implicit information). |

### lasso_profile_get_signature_verify_hint ()

    LassoProfileSignatureVerifyHint
    lasso_profile_get_signature_verify_hint
                                   (LassoProfile *profile);

Return the value of the signature verify hint attribute (see `lasso_profile_set_signature_verify_hint()`).

#### Parameters

profile | a LassoProfile object |

#### Returns

a value in the enum type LassoProfileSignatureVerifyHint.

### lasso_profile_sso_role_with ()

    LassoProviderRole
    lasso_profile_sso_role_with (LassoProfile *profile,
                                 const char *remote_provider_id);

Returns whether the current provider is a service provider relatively to another provider. It uses the LassoProfile.identity to find if a federation qualifier by the given provider exists or the reverse.

#### Parameters

profile | a LassoProfile object |
remote_provider_id | the identifier of a provider |

#### Returns

LASSO_PROVIDER_ROLE_NONE if nothing can be said, LASSO_PROVIDER_ROLE_SP if a federation qualifier by `remote_provider_id` exists or LASSO_PROVIDER_ROLE_IDP if a federation qualifier by our own LassoProvider.ProviderID exists.

### lasso_profile_get_signature_status ()

    lasso_error_t
    lasso_profile_get_signature_status (LassoProfile *profile);

Returns the signature status from the last parsed message.

#### Parameters

profile | a LassoProfile object |

#### Returns

0 if no error from signature checking occurred, an error code otherwise.

## Types and Values

### struct LassoProfile

    struct LassoProfile {
    	LassoNode parent;

    	LassoServer *server;

    	LassoNode *request;
    	LassoNode *response;

    	LassoNode *nameIdentifier;

    	gchar *remote_providerID;

    	gchar *msg_url;
    	gchar *msg_body;
    	gchar *msg_relayState;
    };

LassoProfile, child class of LassoNode is the basis object of profiles object like LassoLogin, LassoLogout, LassoDefederation, LassoNameIdentifierMapping, LassoNameRegistration, LassoNameIdManagement or LassoAssertionQuery. It handles the minimal state used by all theses profiles.

#### Members

LassoNode `parent`; |  |
LassoServer *`server`; | LassoServer object representing the provider intiating this profile, |
LassoNode *`request`; | the currently initialized request, or the last request parsed, |
LassoNode *`response`; | the currently intialized request, or the last response parsed, |
LassoNode *`nameIdentifier`; | for profiles which transmit a name identifier (that is, most of them), the parsed name identifier, can be a LassoSamlNameIdentifier or a LassoSaml2NameID, |
gchar *`remote_providerID`; | the provider ID of the issuer of the last parsed message, whatever it is (a request or a response), |
gchar *`msg_url`; | when generating a request or a response, it give the URL to contact |
gchar *`msg_body`; | when generating a request or a response using HTTP POST binding (can be HTTP-SOAP or HTTP-Post binding), the body of the POST will be in this field, |
gchar *`msg_relayState`; | put there the relaystate to put in the genereated URL for HTTP-Redirect or HTTP-Get binding. |

### enum LassoRequestType

Request types (known for SOAP endpoints)

#### Members

LASSO_REQUEST_TYPE_INVALID | invalid |
LASSO_REQUEST_TYPE_LOGIN | Single Sign On and Federation |
LASSO_REQUEST_TYPE_LOGOUT | Single Logout |
LASSO_REQUEST_TYPE_DEFEDERATION | Federation Termination |
LASSO_REQUEST_TYPE_NAME_REGISTRATION | Name Registration |
LASSO_REQUEST_TYPE_NAME_IDENTIFIER_MAPPING | Name Identifier Mapping |
LASSO_REQUEST_TYPE_LECP | Liberty-Enabled Client / Proxy |
LASSO_REQUEST_TYPE_DISCO_QUERY | ID-WSF 1.0 Discovery Query request |
LASSO_REQUEST_TYPE_DISCO_MODIFY | ID-WSF 1.0 Discovery Modify Request |
LASSO_REQUEST_TYPE_DST_QUERY | ID-WSF 1.0 Data Service Template Query request |
LASSO_REQUEST_TYPE_DST_MODIFY | ID-WSF 1.0 Data Service Temaplte Modify request |
LASSO_REQUEST_TYPE_SASL_REQUEST | ID-WSF 1.0 Authentication request |
LASSO_REQUEST_TYPE_NAME_ID_MANAGEMENT | SAML 2.0 NameID Management request |
LASSO_REQUEST_TYPE_IDWSF2_DISCO_SVCMD_REGISTER | ID-WSF 2.0 Discovery Service Metadata Register request |
LASSO_REQUEST_TYPE_IDWSF2_DISCO_SVCMD_ASSOCIATION_ADD | ID-WSF 2.0 Discovery Service Metadata Add Association request |
LASSO_REQUEST_TYPE_IDWSF2_DISCO_QUERY | ID-WSF 2.0 Discovery Query request |

### enum LassoProfileSignatureHint

Advice a LassoProfile object about the policy for generating request and response signatures.

#### Members

LASSO_PROFILE_SIGNATURE_HINT_MAYBE | let Lasso decide what to do. |
LASSO_PROFILE_SIGNATURE_HINT_FORCE | generate and validate all signatures. |
LASSO_PROFILE_SIGNATURE_HINT_FORBID | do not generate or validate any signature. |

### enum LassoProfileSignatureVerifyHint

Advice a LassoProfile object about the policy checking request and response signatures.

#### Members

LASSO_PROFILE_SIGNATURE_VERIFY_HINT_MAYBE | let Lasso decide what to do. |
LASSO_PROFILE_SIGNATURE_VERIFY_HINT_FORCE | always check signatures. |
LASSO_PROFILE_SIGNATURE_VERIFY_HINT_IGNORE | check signatures but do not stop protocol handling on failures. The result of signature checking is still available in LassoProfile.signature_status |
LASSO_PROFILE_SIGNATURE_VERIFY_HINT_LAST |  |