summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lasso/id-ff/lecp.c24
-rw-r--r--lasso/id-ff/logout.c3
-rw-r--r--swig/Lasso.i33
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