diff options
-rw-r--r-- | lasso/id-ff/lecp.c | 24 | ||||
-rw-r--r-- | lasso/id-ff/logout.c | 3 | ||||
-rw-r--r-- | swig/Lasso.i | 33 |
3 files changed, 37 insertions, 23 deletions
diff --git a/lasso/id-ff/lecp.c b/lasso/id-ff/lecp.c index bfca74c6..415c121e 100644 --- a/lasso/id-ff/lecp.c +++ b/lasso/id-ff/lecp.c @@ -71,6 +71,17 @@ lasso_lecp_build_authn_request_envelope_msg(LassoLecp *lecp) return 0; } +/** + * lasso_lecp_build_authn_request_msg: + * @lecp: a LassoLecp + * @remote_providerID: the providerID of the identity provider. When NULL, the first + * identity provider is used. + * + * Builds an authentication request. The data for the sending of the request are + * stored in msg_url and msg_body (SOAP POST). + * + * Return value: 0 on success and a negative value otherwise. + **/ gint lasso_lecp_build_authn_request_msg(LassoLecp *lecp, const gchar *remote_providerID) @@ -81,10 +92,15 @@ lasso_lecp_build_authn_request_msg(LassoLecp *lecp, g_return_val_if_fail(LASSO_IS_LECP(lecp), -1); profile = LASSO_PROFILE(lecp); - - LASSO_PROFILE(lecp)->remote_providerID = g_strdup(remote_providerID); - remote_provider = lasso_server_get_provider_ref(LASSO_PROFILE(lecp)->server, - LASSO_PROFILE(lecp)->remote_providerID, + if (remote_providerID == NULL) { +/* profile->remote_providerID = lasso_server_get_first_providerID(profile->server); */ + } + else { + profile->remote_providerID = g_strdup(remote_providerID); + } + + remote_provider = lasso_server_get_provider_ref(profile->server, + profile->remote_providerID, NULL); profile->msg_url = lasso_provider_get_singleSignOnServiceURL(remote_provider, NULL); diff --git a/lasso/id-ff/logout.c b/lasso/id-ff/logout.c index 62715550..8cf2e277 100644 --- a/lasso/id-ff/logout.c +++ b/lasso/id-ff/logout.c @@ -372,7 +372,8 @@ lasso_logout_get_next_providerID(LassoLogout *logout) /** * lasso_logout_init_request: * @logout: - * @remote_providerID: + * @remote_providerID: the providerID of the identity provider. When NULL, the first + * identity provider is used. * @request_method: if set, then it get the protocol profile in metadata * corresponding of this HTTP request method. * diff --git a/swig/Lasso.i b/swig/Lasso.i index e4cc7b09..e354444e 100644 --- a/swig/Lasso.i +++ b/swig/Lasso.i @@ -898,13 +898,12 @@ typedef struct { #endif %nodefault LassoProvider; typedef struct { + %immutable metadata; + LassoNode *metadata; + %extend { /* Attributes */ - %immutable metadata; - %newobject metadata; - LassoNode *metadata; - %immutable providerId; %newobject providerId_get; gchar *providerId; @@ -915,14 +914,6 @@ typedef struct { /* Attributes implementations */ -/* metadata */ -#define LassoProvider_get_metadata LassoProvider_metadata_get -LassoNode *LassoProvider_metadata_get(LassoProvider *self) { - /* FIXME: The lasso_node_copy is mandatory. Otherwise metadata is not a LassoNode. Is */ - /* it a bug? If we correct this don't forget to remove newobject above. */ - return lasso_node_copy(self->metadata); -} - /* providerId */ #define LassoProvider_get_providerId LassoProvider_providerId_get gchar *LassoProvider_providerId_get(LassoProvider *self) { @@ -1019,7 +1010,6 @@ typedef struct { /* Attributes inherited from LassoProvider */ %immutable metadata; - %newobject metadata; LassoNode *metadata; /* Attributes */ @@ -1060,9 +1050,7 @@ typedef struct { /* metadata */ #define LassoServer_get_metadata LassoServer_metadata_get LassoNode *LassoServer_metadata_get(LassoServer *self) { - /* FIXME: The lasso_node_copy is mandatory. Otherwise metadata is not a LassoNode. Is */ - /* it a bug? If we correct this don't forget to remove newobject above. */ - return lasso_node_copy(LASSO_PROVIDER(self)->metadata); + return LASSO_PROVIDER(self)->metadata; } /* Attributes implementations */ @@ -1180,6 +1168,9 @@ typedef struct { %immutable isDirty; gboolean isDirty; + %immutable providerIds; + LassoProviderIds *providerIds; + /* Constructor, destructor & static methods */ LassoSession(); @@ -1209,6 +1200,12 @@ gboolean LassoSession_isDirty_get(LassoSession *self) { return self->is_dirty; } +/* providerIDs */ +#define LassoSession_get_providerIds LassoSession_providerIds_get +LassoProviderIds *LassoSession_providerIds_get(LassoSession *self) { + return self->providerIDs; +} + /* Constructors, destructors & static methods implementations */ #define new_LassoSession lasso_session_new @@ -1530,7 +1527,7 @@ typedef struct { END_THROW_ERROR THROW_ERROR - void buildAuthnRequestMsg(gchar *remoteProviderId); + void buildAuthnRequestMsg(gchar *remoteProviderId = NULL); END_THROW_ERROR THROW_ERROR @@ -2063,7 +2060,7 @@ typedef struct { END_THROW_ERROR THROW_ERROR - void buildAuthnRequestMsg(gchar *remoteProviderId); + void buildAuthnRequestMsg(gchar *remoteProviderId = NULL); END_THROW_ERROR THROW_ERROR |