)]}'
{"id":"openstack%2Fkeystone~982760","triplet_id":"openstack%2Fkeystone~stable%2F2025.2~I970b3373017478f3359ac0eef0a8cda27a89918d","project":"openstack/keystone","branch":"stable/2025.2","topic":"fix/federation-oidc-utf8-encoding-stable/2026.1-stable/2025.2","attention_set":{},"removed_from_attention_set":{"37598":{"account":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"last_update":"2026-04-03 16:22:44.000000000","reason":"Change was submitted"}},"hashtags":[],"change_id":"I970b3373017478f3359ac0eef0a8cda27a89918d","subject":"Fix OIDC federation UTF-8 double-encoding of non-ASCII characters","status":"MERGED","created":"2026-03-31 09:49:13.000000000","updated":"2026-04-03 16:23:56.000000000","submitted":"2026-04-03 16:22:44.000000000","submitter":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"total_comment_count":0,"unresolved_comment_count":0,"has_review_started":true,"submission_id":"982760-fix/federation-oidc-utf8-encoding-stable/2026.1-stable/2025.2","cherry_pick_of_change":982759,"cherry_pick_of_patch_set":1,"meta_rev_id":"0f705778300f624f842145590e86f74675687d7d","_number":982760,"virtual_id_number":982760,"owner":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"value":0,"_account_id":7973,"name":"Douglas Mendizábal","email":"dmendiza@redhat.com","username":"dougmendizabal"},{"value":0,"_account_id":7414,"name":"David Wilde","email":"dwilde@redhat.com","username":"d34dh0r53"},{"tag":"autogenerated:zuul:gate","value":2,"date":"2026-04-03 16:22:44.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-2":"Fails","-1":"Doesn\u0027t seem to work"," 0":"No score","+1":"Works for me","+2":"Verified"},"description":"","default_value":0,"optional":true},"Code-Review":{"approved":{"_account_id":7973,"name":"Douglas Mendizábal","email":"dmendiza@redhat.com","username":"dougmendizabal"},"all":[{"value":2,"date":"2026-04-03 15:18:01.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":7973,"name":"Douglas Mendizábal","email":"dmendiza@redhat.com","username":"dougmendizabal"},{"value":2,"date":"2026-04-03 15:23:11.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":7414,"name":"David Wilde","email":"dwilde@redhat.com","username":"d34dh0r53"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-2":"Do not merge","-1":"This patch needs further work before it can be merged"," 0":"No score","+1":"Looks good to me, but someone else must approve","+2":"Looks good to me (core reviewer)"},"description":"","default_value":0,"optional":true},"Workflow":{"approved":{"_account_id":7414,"name":"David Wilde","email":"dwilde@redhat.com","username":"d34dh0r53"},"all":[{"value":0,"_account_id":7973,"name":"Douglas Mendizábal","email":"dmendiza@redhat.com","username":"dougmendizabal"},{"value":1,"date":"2026-04-03 15:23:11.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":7414,"name":"David Wilde","email":"dwilde@redhat.com","username":"d34dh0r53"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":7414,"name":"David Wilde","email":"dwilde@redhat.com","username":"d34dh0r53"},{"_account_id":7973,"name":"Douglas Mendizábal","email":"dmendiza@redhat.com","username":"dougmendizabal"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"CC":[{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-03-31 09:49:13.000000000","updated_by":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"reviewer":{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},"state":"CC"},{"updated":"2026-03-31 10:55:31.000000000","updated_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"reviewer":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"state":"REVIEWER"},{"updated":"2026-04-03 15:18:01.000000000","updated_by":{"_account_id":7973,"name":"Douglas Mendizábal","email":"dmendiza@redhat.com","username":"dougmendizabal"},"reviewer":{"_account_id":7973,"name":"Douglas Mendizábal","email":"dmendiza@redhat.com","username":"dougmendizabal"},"state":"REVIEWER"},{"updated":"2026-04-03 15:23:11.000000000","updated_by":{"_account_id":7414,"name":"David Wilde","email":"dwilde@redhat.com","username":"d34dh0r53"},"reviewer":{"_account_id":7414,"name":"David Wilde","email":"dwilde@redhat.com","username":"d34dh0r53"},"state":"REVIEWER"}],"messages":[{"id":"45f64a568945acfc93e1d25ea6be12b6a8e2b0ff","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"date":"2026-03-31 09:49:13.000000000","message":"Patch Set 1: Cherry Picked from branch stable/2026.1.","accounts_in_message":[],"_revision_number":1},{"id":"8d80134c66f6acc1d1b5524bde8e0e45ba50a295","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-31 10:55:31.000000000","message":"Patch Set 1: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/e7a6c09258944c98b440c506c0b98668\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/0e781a2eb6fa4b858f9524ff679cabac : SUCCESS in 13m 16s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/c8556a6871704c3c87a0922d470aa4ad : SUCCESS in 4m 13s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/f85e1e03222040e79c5cfac339f90c90 : SUCCESS in 9m 53s\n- openstack-tox-py312 https://zuul.opendev.org/t/openstack/build/4deeb3af20ce4e0f850361366010d8f0 : SUCCESS in 10m 22s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/77f1da9403d34d6981b540a665dea249 : SUCCESS in 16m 29s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/23921a75f17a4c29a98a9f8d64de0338 : SUCCESS in 12m 49s\n- grenade https://zuul.opendev.org/t/openstack/build/53ccbb065b1549b481b135d725bce506 : SUCCESS in 1h 00m 31s\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/b52cb1aa3a2f4e74a37058556844260a : SUCCESS in 1h 02m 28s\n- keystoneclient-devstack-functional https://zuul.opendev.org/t/openstack/build/a8d74c6333a1462ba1bf6231e2b1d8be : FAILURE in 8m 44s (non-voting)\n- keystone-tempest https://zuul.opendev.org/t/openstack/build/ad5e729e614a40f497a863b725b45dcf : SUCCESS in 33m 19s\n- keystone-tempest-fips https://zuul.opendev.org/t/openstack/build/591fd54a369d4944bc20bcfed0e82540 : FAILURE in 8m 02s (non-voting)\n- keystone-tempest-federation https://zuul.opendev.org/t/openstack/build/c6b76c198bb54125b712558d42fbb1d6 : FAILURE in 25m 29s (non-voting)\n- keystone-tempest-federation-k2k https://zuul.opendev.org/t/openstack/build/70fa14e1ea1448748f339e31e8617573 : SUCCESS in 26m 45s\n- keystone-tempest-oidc-federation https://zuul.opendev.org/t/openstack/build/45de2333600c4ec3914b4c85a1259963 : SUCCESS in 21m 48s\n- keystone-tempest-ldap-domain-specific-driver https://zuul.opendev.org/t/openstack/build/5e33b453d6f24dc2a432436ea6e4bd12 : SUCCESS in 35m 35s (non-voting)\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/3107b7511be94e2a8489338c481e48f9 : SUCCESS in 46m 33s\n- keystone-protection-functional https://zuul.opendev.org/t/openstack/build/dc9306a91ddb4068a636a9557f5d1ef7 : FAILURE in 41m 38s (non-voting)\n- codegenerator-openapi-identity-tips-with-api-ref https://zuul.opendev.org/t/openstack/build/80a94a50b5374ccaa2b0b3c4fce28799 : FAILURE in 8m 50s (non-voting)","accounts_in_message":[],"_revision_number":1},{"id":"801f352e22b338ea634372a829c35bca7253a287","author":{"_account_id":7973,"name":"Douglas Mendizábal","email":"dmendiza@redhat.com","username":"dougmendizabal"},"date":"2026-04-03 15:18:01.000000000","message":"Patch Set 1: Code-Review+2","accounts_in_message":[],"_revision_number":1},{"id":"e14e7c75ae2123ff561fa8d9481b79caaa7a5019","author":{"_account_id":7414,"name":"David Wilde","email":"dwilde@redhat.com","username":"d34dh0r53"},"date":"2026-04-03 15:23:11.000000000","message":"Patch Set 1: Code-Review+2 Workflow+1","accounts_in_message":[],"_revision_number":1},{"id":"b452cb7048b0acd6c7e998bbb64be96d56e5a62b","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-04-03 15:23:34.000000000","message":"Patch Set 1: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":1},{"id":"aaf0d62a6286e121ee13e5519338640d7723da2a","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-04-03 16:22:44.000000000","message":"Patch Set 1: Verified+2\n\nBuild succeeded (gate pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/91c96218864e4868b3272d1a7a9fc8bd\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/52c021fea05644a7a1e433b303570fab : SUCCESS in 3m 16s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/2512b7d361974fda96a91e43cd1ebf86 : SUCCESS in 8m 05s\n- openstack-tox-py312 https://zuul.opendev.org/t/openstack/build/d926377da0a04774902b8299d3f7b8d5 : SUCCESS in 11m 10s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/b9b90f75d1d9455991e7416bb79b10e7 : SUCCESS in 14m 45s\n- grenade https://zuul.opendev.org/t/openstack/build/7bd5a2e1f7a045e8b6fda4f892169678 : SUCCESS in 33m 57s\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/a234df9b72b8455d863ccfc8c2c2720b : SUCCESS in 58m 31s\n- keystone-tempest https://zuul.opendev.org/t/openstack/build/2074b5c424a34c8ca3b8c3c9753c9c5b : SUCCESS in 28m 48s\n- keystone-tempest-federation-k2k https://zuul.opendev.org/t/openstack/build/765817c76329422181022a18a16bee02 : SUCCESS in 26m 34s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/e32f789c7972489bbe45c5baf79a6aeb : SUCCESS in 44m 10s\n- keystone-protection-functional https://zuul.opendev.org/t/openstack/build/06fd165fde804c71824ff93d7c26c5b3 : FAILURE in 21m 27s (non-voting)","accounts_in_message":[],"_revision_number":1},{"id":"d3e80a7334ed9d2e04e5d45165934f651acbac9e","tag":"autogenerated:gerrit:merged","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-04-03 16:22:44.000000000","message":"Change has been successfully merged","accounts_in_message":[],"_revision_number":1},{"id":"0f705778300f624f842145590e86f74675687d7d","tag":"autogenerated:zuul:promote","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-04-03 16:23:56.000000000","message":"Patch Set 1:\n\nBuild succeeded (promote pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/cfba26e8bc07453fb423850b889e0378\n\n- promote-openstack-tox-docs https://zuul.opendev.org/t/openstack/build/7c50f66fec974457ade96eb3ca58615b : SUCCESS in 1m 02s","accounts_in_message":[],"_revision_number":1}],"current_revision_number":1,"current_revision":"0e522f5d4b6db5c57ed50c26e455be9382c28db5","revisions":{"0e522f5d4b6db5c57ed50c26e455be9382c28db5":{"kind":"REWORK","_number":1,"created":"2026-03-31 09:49:13.000000000","uploader":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"ref":"refs/changes/60/982760/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/keystone","ref":"refs/changes/60/982760/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/keystone refs/changes/60/982760/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/keystone refs/changes/60/982760/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/keystone refs/changes/60/982760/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/keystone refs/changes/60/982760/1"}}},"commit":{"parents":[{"commit":"d2c392f311341a1b47b6153b69b6d3ec0d854da1","subject":"Merge \"fix ldap \u0027enabled\u0027 setting not interpreted as boolean\" into stable/2025.2","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/d2c392f311341a1b47b6153b69b6d3ec0d854da1"}]}],"author":{"name":"Grzegorz Grasza","email":"xek@redhat.com","date":"2026-03-23 14:03:09.000000000","tz":60},"committer":{"name":"Ivan Anfimov","email":"lazekteam@gmail.com","date":"2026-03-31 09:49:13.000000000","tz":0},"subject":"Fix OIDC federation UTF-8 double-encoding of non-ASCII characters","message":"Fix OIDC federation UTF-8 double-encoding of non-ASCII characters\n\nPer PEP 3333, mod_wsgi decodes WSGI environ values as ISO-8859-1\n(Latin-1), per Section 3.2.4 of RFC 7230. When OIDC IdPs send\nassertion values containing non-ASCII characters encoded as UTF-8\n(e.g. Spanish \u0027ñ\u0027 in group names like \u0027España\u0027), the raw UTF-8\nbytes are misinterpreted as Latin-1, producing mojibake. This\ncauses dynamic group mapping to fail because the corrupted group\nname does not match the local group in the database.\n\nFix get_assertion_params_from_env() to reverse the Latin-1 decode\nby encoding back to ISO-8859-1 and re-decoding as UTF-8. If the\nroundtrip fails, the value is kept as-is, preserving backward\ncompatibility with legitimately Latin-1 encoded data.\n\nChange-Id: I970b3373017478f3359ac0eef0a8cda27a89918d\nCloses-Bug: #2146771\nAssisted-by: Claude Opus (Anthropic)\nSigned-off-by: Grzegorz Grasza \u003cxek@redhat.com\u003e\n(cherry picked from commit 1678987b74658ae86d6b80a5c3092a0ad2b5c5bd)\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/0e522f5d4b6db5c57ed50c26e455be9382c28db5"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/0e522f5d4b6db5c57ed50c26e455be9382c28db5"}]},"branch":"refs/heads/stable/2025.2"}},"requirements":[],"submit_records":[{"rule_name":"gerrit~DefaultSubmitRule","status":"CLOSED","labels":[{"label":"Verified","status":"MAY","applied_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}},{"label":"Code-Review","status":"MAY","applied_by":{"_account_id":7973,"name":"Douglas Mendizábal","email":"dmendiza@redhat.com","username":"dougmendizabal"}},{"label":"Workflow","status":"MAY","applied_by":{"_account_id":7414,"name":"David Wilde","email":"dwilde@redhat.com","username":"d34dh0r53"}}]}],"submit_requirements":[{"name":"Verified","description":"Verified in gate by CI","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Verified\u003dMAX AND -label:Verified\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Verified\u003dMAX"],"failing_atoms":["label:Verified\u003dMIN"],"atom_explanations":{}}},{"name":"Code-Review","description":"Code reviewed by core reviewer","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Code-Review\u003dMAX AND -label:Code-Review\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Code-Review\u003dMAX"],"failing_atoms":["label:Code-Review\u003dMIN"],"atom_explanations":{}}},{"name":"Workflow","description":"Approved for gate by core reviewer","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Workflow\u003dMAX AND -label:Workflow\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Workflow\u003dMAX"],"failing_atoms":["label:Workflow\u003dMIN"],"atom_explanations":{}}}]}
