summaryrefslogtreecommitdiffstats
path: root/auth_mellon_handler.c
diff options
context:
space:
mode:
authorolavmrk <olavmrk@a716ebb1-153a-0410-b759-cfb97c6a1b53>2010-06-17 07:17:42 +0000
committerolavmrk <olavmrk@a716ebb1-153a-0410-b759-cfb97c6a1b53>2010-06-17 07:17:42 +0000
commit627fb2013e6debe81c3ed7ef692e7b19c6ebcb4f (patch)
tree5dcef14e8ca8867ffa41c1ca9a18162f43d256dc /auth_mellon_handler.c
parenta3e069345737a49f42bb820caa0788cdb2cee196 (diff)
downloadmod_auth_mellon-627fb2013e6debe81c3ed7ef692e7b19c6ebcb4f.tar.gz
mod_auth_mellon-627fb2013e6debe81c3ed7ef692e7b19c6ebcb4f.tar.xz
mod_auth_mellon-627fb2013e6debe81c3ed7ef692e7b19c6ebcb4f.zip
Set the MellonIDP variable to the IdP that we got a response from.
git-svn-id: https://modmellon.googlecode.com/svn/trunk@89 a716ebb1-153a-0410-b759-cfb97c6a1b53
Diffstat (limited to 'auth_mellon_handler.c')
-rw-r--r--auth_mellon_handler.c27
1 files changed, 16 insertions, 11 deletions
diff --git a/auth_mellon_handler.c b/auth_mellon_handler.c
index 383137f..30d0f20 100644
--- a/auth_mellon_handler.c
+++ b/auth_mellon_handler.c
@@ -1309,16 +1309,6 @@ static int add_attributes(am_cache_entry_t *session, request_rec *r,
return ret;
}
- /* If requested, save the IdP ProviderId */
- if (dir_cfg->idpattr != NULL) {
- ret = am_cache_env_append(session, dir_cfg->idpattr, am_get_idp(r));
- if(ret != OK) {
- return ret;
- }
- }
-
-
-
/* assertions is a list of LassoSaml2Assertion objects. */
for(asrt_itr = g_list_first(assertions); asrt_itr != NULL;
asrt_itr = g_list_next(asrt_itr)) {
@@ -1423,6 +1413,9 @@ static int am_handle_reply_common(request_rec *r, LassoLogin *login,
am_dir_cfg_rec *dir_cfg;
am_cache_entry_t *session;
int rc;
+ const char *idp;
+
+ dir_cfg = am_get_dir_cfg(r);
if(LASSO_PROFILE(login)->nameIdentifier == NULL) {
ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r,
@@ -1450,7 +1443,6 @@ static int am_handle_reply_common(request_rec *r, LassoLogin *login,
"User has disabled cookies, or has lost"
" the cookie before returning from the SAML2"
" login server.");
- dir_cfg = am_get_dir_cfg(r);
if(dir_cfg->no_cookie_error_page != NULL) {
apr_table_setn(r->headers_out, "Location",
dir_cfg->no_cookie_error_page);
@@ -1478,6 +1470,19 @@ static int am_handle_reply_common(request_rec *r, LassoLogin *login,
lasso_login_destroy(login);
return rc;
}
+
+ /* If requested, save the IdP ProviderId */
+ if(dir_cfg->idpattr != NULL) {
+ idp = LASSO_PROFILE(login)->remote_providerID;
+ if(idp != NULL) {
+ rc = am_cache_env_append(session, dir_cfg->idpattr, idp);
+ if(rc != OK) {
+ lasso_login_destroy(login);
+ return rc;
+ }
+ }
+ }
+
am_release_request_session(r, session);
rc = lasso_login_accept_sso(login);