diff --git a/SoObjects/SOGo/SOGoSAML2Session.m b/SoObjects/SOGo/SOGoSAML2Session.m index 782bc1f2c..0b845d317 100644 --- a/SoObjects/SOGo/SOGoSAML2Session.m +++ b/SoObjects/SOGo/SOGoSAML2Session.m @@ -24,7 +24,6 @@ #include #include - #import #import @@ -237,22 +236,24 @@ static NSMapTable *serverTable = nil; - (void) _updateDataFromLogin { - LassoSaml2Assertion *saml2Assertion; GList *statementList, *attributeList; - LassoSaml2AttributeStatement *statement; - LassoSaml2Attribute *attribute; - LassoSaml2AttributeValue *value; LassoMiscTextNode *textNode; + LassoNode *lassoNode; + LassoSaml2Assertion *saml2Assertion; + LassoSaml2Attribute *attribute; + LassoSaml2AttributeStatement *statement; + LassoSaml2AttributeValue *value; LassoSaml2NameID *nameIdentifier; - SOGoSystemDefaults *sd; NSString *loginAttribue; + SOGoSystemDefaults *sd; gchar *dump; - - saml2Assertion = LASSO_SAML2_ASSERTION (lasso_login_get_assertion (lassoLogin)); + + lassoNode = lasso_login_get_assertion (lassoLogin); + saml2Assertion = LASSO_SAML2_ASSERTION (lassoNode); sd = [SOGoSystemDefaults sharedSystemDefaults]; loginAttribue = [sd SAML2LoginAttribute]; - + if (saml2Assertion) { /* deduce user login */ @@ -267,6 +268,7 @@ static NSMapTable *serverTable = nil; while (!login && attributeList) { attribute = LASSO_SAML2_ATTRIBUTE (attributeList->data); + if (loginAttribue && (strcmp (attribute->Name, [loginAttribue UTF8String]) == 0)) { value = LASSO_SAML2_ATTRIBUTE_VALUE (attribute->AttributeValue->data); @@ -320,8 +322,7 @@ static NSMapTable *serverTable = nil; assertion = nil; } - nameIdentifier - = LASSO_SAML2_NAME_ID (LASSO_PROFILE (lassoLogin)->nameIdentifier); + nameIdentifier = LASSO_SAML2_NAME_ID (LASSO_PROFILE (lassoLogin)->nameIdentifier); if (nameIdentifier) { /* deduce session id */ @@ -334,7 +335,7 @@ static NSMapTable *serverTable = nil; - (id) _initWithDump: (NSDictionary *) saml2Dump inContext: (WOContext *) context { - // lasso_error_t rc; + lasso_error_t rc; LassoServer *server; LassoProfile *profile; const gchar *dump; @@ -346,10 +347,10 @@ static NSMapTable *serverTable = nil; if (saml2Dump) { profile = LASSO_PROFILE (lassoLogin); + ASSIGN (login, [saml2Dump objectForKey: @"login"]); ASSIGN (identifier, [saml2Dump objectForKey: @"identifier"]); ASSIGN (assertion, [saml2Dump objectForKey: @"assertion"]); - ASSIGN(identity, [saml2Dump objectForKey: @"identity"]); dump = [identity UTF8String]; if (dump) @@ -359,11 +360,10 @@ static NSMapTable *serverTable = nil; dump = [session UTF8String]; if (dump) lasso_profile_set_session_from_dump (profile, dump); - - lasso_login_accept_sso (lassoLogin); - // if (rc) - // [NSException raiseSAML2Exception: rc]; - [self _updateDataFromLogin]; + + rc = lasso_login_accept_sso (lassoLogin); + if (!rc) + [self _updateDataFromLogin]; } } @@ -454,7 +454,7 @@ static NSMapTable *serverTable = nil; responseData = strdup ([authnResponse UTF8String]); - lasso_profile_set_signature_verify_hint(lassoLogin, LASSO_PROFILE_SIGNATURE_VERIFY_HINT_IGNORE); + profile = LASSO_PROFILE (lassoLogin); rc = lasso_login_process_authn_response_msg (lassoLogin, responseData); if (rc) [NSException raiseSAML2Exception: rc]; @@ -470,8 +470,6 @@ static NSMapTable *serverTable = nil; [saml2Dump setObject: identifier forKey: @"identifier"]; [saml2Dump setObject: assertion forKey: @"assertion"]; - profile = LASSO_PROFILE (lassoLogin); - lasso_session = lasso_profile_get_session (profile); if (lasso_session) { diff --git a/packaging/debian/rules b/packaging/debian/rules index 37ff9553d..df577bd8d 100755 --- a/packaging/debian/rules +++ b/packaging/debian/rules @@ -5,12 +5,7 @@ export DH_VERBOSE=1 DESTDIR=$(CURDIR)/debian/tmp DIST_CODENAME=$(shell lsb_release -cs) - -# Debian 6 -ifeq ($(DIST_CODENAME), squeeze) SAML2_CONFIG=--enable-saml2 -SODIUM_CONFIG=--disable-sodium -endif # Debian 7 ifeq ($(DIST_CODENAME), wheezy)