Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package apache2-mod_auth_openidc for openSUSE:Factory checked in at 2021-04-06 17:29:54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/apache2-mod_auth_openidc (Old) and /work/SRC/openSUSE:Factory/.apache2-mod_auth_openidc.new.2401 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "apache2-mod_auth_openidc" Tue Apr 6 17:29:54 2021 rev:15 rq:883176 version:2.4.7 Changes: -------- --- /work/SRC/openSUSE:Factory/apache2-mod_auth_openidc/apache2-mod_auth_openidc.changes 2021-03-30 21:06:18.441107314 +0200 +++ /work/SRC/openSUSE:Factory/.apache2-mod_auth_openidc.new.2401/apache2-mod_auth_openidc.changes 2021-04-06 17:31:18.511227385 +0200 @@ -1,0 +2,25 @@ +Mon Apr 5 22:41:02 UTC 2021 - Michael Str??der <mich...@stroeder.com> + +- Update to version 2.4.7 + * Bugfixes + - avoid logged-out sessions remaining (valid) in the session cache: + remove session from cache before clearing it; see #542 + * Features + - add maximum session lifetime (exp), inactivity timeout (timeout) + and remote_user to OIDCInfoHook; closes #541 + * Security + - add opt-out on sub check in userinfo endpoint response using the + (undocumented) OIDC_NO_USERINFO_SUB environment variable, + for backwards (but insecure) compatibility, see #544 + * Dependencies + - libcjose >= 0.5.1 + - if your distribution does not provide libcjose in its package repository, + recent packages for a number of platforms are available from the "Assets" + section in release 2.4.0 + +------------------------------------------------------------------- +Thu Apr 1 12:13:33 UTC 2021 - pgaj...@suse.com + +- require hiredis only for newer distros than SLE-15 [jsc#SLE-11726] + +------------------------------------------------------------------- Old: ---- apache2-mod_auth_openidc-2.4.6.tar.gz New: ---- apache2-mod_auth_openidc-2.4.7.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ apache2-mod_auth_openidc.spec ++++++ --- /var/tmp/diff_new_pack.oaMO24/_old 2021-04-06 17:31:18.987227924 +0200 +++ /var/tmp/diff_new_pack.oaMO24/_new 2021-04-06 17:31:18.991227929 +0200 @@ -19,7 +19,7 @@ %define apxs %{_sbindir}/apxs2 %define apache_libexecdir %(%{apxs} -q LIBEXECDIR) Name: apache2-mod_auth_openidc -Version: 2.4.6 +Version: 2.4.7 Release: 0 Summary: Apache2.x module for an OpenID Connect enabled Identity Provider License: Apache-2.0 @@ -30,7 +30,7 @@ BuildRequires: apache2-devel BuildRequires: autoconf BuildRequires: automake -%if 0%{?is_opensuse} > 0 +%if 0%{?suse_version} >= 1550 BuildRequires: hiredis-devel %endif BuildRequires: libtool ++++++ apache2-mod_auth_openidc-2.4.6.tar.gz -> apache2-mod_auth_openidc-2.4.7.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mod_auth_openidc-2.4.6/AUTHORS new/mod_auth_openidc-2.4.7/AUTHORS --- old/mod_auth_openidc-2.4.6/AUTHORS 2021-02-08 14:35:38.000000000 +0100 +++ new/mod_auth_openidc-2.4.7/AUTHORS 2021-04-05 16:22:26.000000000 +0200 @@ -67,3 +67,4 @@ Paul Spangler <https://github.com/spanglerco> Chris Pawling <https://github.com/chris468> Matthias Flesch??tz <https://github.com/blindzero> + Harri Rautila <https://github.com/hrautila> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mod_auth_openidc-2.4.6/ChangeLog new/mod_auth_openidc-2.4.7/ChangeLog --- old/mod_auth_openidc-2.4.6/ChangeLog 2021-02-08 14:35:38.000000000 +0100 +++ new/mod_auth_openidc-2.4.7/ChangeLog 2021-04-05 16:22:26.000000000 +0200 @@ -1,3 +1,17 @@ +04/04/2021 +- improve documentation on OIDCPreservePost +- release 2.4.7 + +04/01/2021 +- bump to 2.4.7rc1 + +02/16/2021 +- remove session from cache before clearing it. + +02/12/2021 +- add maximum session lifetime (exp), inactivity timeout (timeout) and remote_user to OIDCInfoHook +- bump to 2.4.7-dev + 02/08/2021 - return 400 instead of 500 when state cookie matching fails - release 2.4.6 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mod_auth_openidc-2.4.6/auth_openidc.conf new/mod_auth_openidc-2.4.7/auth_openidc.conf --- old/mod_auth_openidc-2.4.6/auth_openidc.conf 2021-02-08 14:35:38.000000000 +0100 +++ new/mod_auth_openidc-2.4.7/auth_openidc.conf 2021-04-05 16:22:26.000000000 +0200 @@ -821,8 +821,10 @@ #OIDCUnAutzAction [401|403|auth] # Indicates whether POST data will be preserved across authentication requests (and discovery in case of multiple OPs). -# Preservation is done via HTML 5 local storage. Note that this can lead to private data exposure on shared terminals, -# that is why the default is "Off". Can be configured on a per Directory/Location basis. +# This is designed to prevent data loss when a session timeout occurs in a (long) user filled HTML form. +# It cannot handle arbitrary payloads for security (DOS) reasons, merely form-encoded user data. +# Preservation is done via HTML 5 local storage: note that this can lead to private data exposure on shared terminals. +# The default is "Off" (for security reasons). Can be configured on a per Directory/Location basis. #OIDCPreservePost [On|Off] # Indicates whether the refresh token will be passed to the application in a header/environment variable, according @@ -859,9 +861,12 @@ # id_token (object) : the claims presented in the ID token # userinfo (object) : the claims resolved from the UserInfo endpoint # refresh_token (string) : the refresh token (if returned by the OP) +# exp (int) : the maximum session lifetime (Unix timestamp in seconds) +# timeout (int) : the session inactivity timeout (Unix timestamp in seconds) +# remote_user (string) : the remote user name # session (object) : (for debugging) mod_auth_openidc specific session data such as "remote user", "session expiry", "session id" and a "state" object # When not defined the session hook will not return any data but a HTTP 404 -#OIDCInfoHook [iat|access_token|access_token_expires|id_token|userinfo|refresh_token|session]+ +#OIDCInfoHook [iat|access_token|access_token_expires|id_token|userinfo|refresh_token|exp|timeout|remote_user|session]+ # Specify claims that should be removed from the userinfo and/or id_token before storing them in the session. # Note that OIDCBlackListedClaims takes precedence over OIDCWhiteListedClaims diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mod_auth_openidc-2.4.6/configure.ac new/mod_auth_openidc-2.4.7/configure.ac --- old/mod_auth_openidc-2.4.6/configure.ac 2021-02-08 14:35:38.000000000 +0100 +++ new/mod_auth_openidc-2.4.7/configure.ac 2021-04-05 16:22:26.000000000 +0200 @@ -1,4 +1,4 @@ -AC_INIT([mod_auth_openidc],[2.4.6],[hans.zandb...@zmartzone.eu]) +AC_INIT([mod_auth_openidc],[2.4.7],[hans.zandb...@zmartzone.eu]) AC_SUBST(NAMEVER, AC_PACKAGE_TARNAME()-AC_PACKAGE_VERSION()) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mod_auth_openidc-2.4.6/src/mod_auth_openidc.c new/mod_auth_openidc-2.4.7/src/mod_auth_openidc.c --- old/mod_auth_openidc-2.4.6/src/mod_auth_openidc.c 2021-02-08 14:35:38.000000000 +0100 +++ new/mod_auth_openidc-2.4.7/src/mod_auth_openidc.c 2021-04-05 16:22:26.000000000 +0200 @@ -3524,6 +3524,29 @@ json_object_set_new(json, OIDC_HOOK_INFO_USER_INFO, claims); } + /* include the maximum session lifetime in the session info */ + if (apr_hash_get(c->info_hook_data, OIDC_HOOK_INFO_SESSION_EXP, + APR_HASH_KEY_STRING)) { + apr_time_t session_expires = oidc_session_get_session_expires(r, + session); + json_object_set_new(json, OIDC_HOOK_INFO_SESSION_EXP, + json_integer(apr_time_sec(session_expires))); + } + + /* include the inactivity timeout in the session info */ + if (apr_hash_get(c->info_hook_data, OIDC_HOOK_INFO_SESSION_TIMEOUT, + APR_HASH_KEY_STRING)) { + json_object_set_new(json, OIDC_HOOK_INFO_SESSION_TIMEOUT, + json_integer(apr_time_sec(session->expiry))); + } + + /* include the remote_user in the session info */ + if (apr_hash_get(c->info_hook_data, OIDC_HOOK_INFO_SESSION_REMOTE_USER, + APR_HASH_KEY_STRING)) { + json_object_set_new(json, OIDC_HOOK_INFO_SESSION_REMOTE_USER, + json_string(session->remote_user)); + } + if (apr_hash_get(c->info_hook_data, OIDC_HOOK_INFO_SESSION, APR_HASH_KEY_STRING)) { json_t *j_session = json_object(); @@ -3531,14 +3554,6 @@ session->state); json_object_set_new(j_session, OIDC_HOOK_INFO_SESSION_UUID, json_string(session->uuid)); - json_object_set_new(j_session, OIDC_HOOK_INFO_SESSION_TIMEOUT, - json_integer(apr_time_sec(session->expiry))); - apr_time_t session_expires = oidc_session_get_session_expires(r, - session); - json_object_set_new(j_session, OIDC_HOOK_INFO_SESSION_EXP, - json_integer(apr_time_sec(session_expires))); - json_object_set_new(j_session, OIDC_HOOK_INFO_SESSION_REMOTE_USER, - json_string(session->remote_user)); json_object_set_new(json, OIDC_HOOK_INFO_SESSION, j_session); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mod_auth_openidc-2.4.6/src/parse.c new/mod_auth_openidc-2.4.7/src/parse.c --- old/mod_auth_openidc-2.4.6/src/parse.c 2021-02-08 14:35:38.000000000 +0100 +++ new/mod_auth_openidc-2.4.7/src/parse.c 2021-04-05 16:22:26.000000000 +0200 @@ -1187,6 +1187,9 @@ OIDC_HOOK_INFO_ID_TOKEN, OIDC_HOOK_INFO_USER_INFO, OIDC_HOOK_INFO_REFRESH_TOKEN, + OIDC_HOOK_INFO_SESSION_EXP, + OIDC_HOOK_INFO_SESSION_TIMEOUT, + OIDC_HOOK_INFO_SESSION_REMOTE_USER, OIDC_HOOK_INFO_SESSION, NULL }; const char *rv = oidc_valid_string_option(pool, arg, options); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mod_auth_openidc-2.4.6/src/proto.c new/mod_auth_openidc-2.4.7/src/proto.c --- old/mod_auth_openidc-2.4.6/src/proto.c 2021-02-08 14:35:38.000000000 +0100 +++ new/mod_auth_openidc-2.4.7/src/proto.c 2021-04-05 16:22:26.000000000 +0200 @@ -2335,7 +2335,8 @@ oidc_debug(r, "id_token_sub=%s, user_info_sub=%s", id_token_sub, user_info_sub); - if (user_info_sub == NULL) { + if ((user_info_sub == NULL) + && (apr_table_get(r->subprocess_env, "OIDC_NO_USERINFO_SUB") == NULL)) { oidc_error(r, "mandatory claim (\"%s\") was not returned from userinfo endpoint (https://openid.net/specs/openid-connect-core-1_0.html#UserInfoResponse)", OIDC_CLAIM_SUB); @@ -2343,7 +2344,7 @@ return FALSE; } - if (id_token_sub != NULL) { + if ((id_token_sub != NULL) && (user_info_sub != NULL)) { if (apr_strnatcmp(id_token_sub, user_info_sub) != 0) { oidc_error(r, "\"%s\" claim (\"%s\") returned from userinfo endpoint does not match the one in the id_token (\"%s\")", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mod_auth_openidc-2.4.6/src/session.c new/mod_auth_openidc-2.4.7/src/session.c --- old/mod_auth_openidc-2.4.6/src/session.c 2021-02-08 14:35:38.000000000 +0100 +++ new/mod_auth_openidc-2.4.7/src/session.c 2021-04-05 16:22:26.000000000 +0200 @@ -398,8 +398,12 @@ * terminate a session */ apr_byte_t oidc_session_kill(request_rec *r, oidc_session_t *z) { - oidc_session_free(r, z); - return oidc_session_save(r, z, FALSE); + if (z->state) { + json_decref(z->state); + z->state = NULL; + } + oidc_session_save(r, z, FALSE); + return oidc_session_free(r, z); } /*