)]}'
{"id":"openstack%2Fkeystone~982759","triplet_id":"openstack%2Fkeystone~stable%2F2026.1~I970b3373017478f3359ac0eef0a8cda27a89918d","project":"openstack/keystone","branch":"stable/2026.1","topic":"fix/federation-oidc-utf8-encoding-stable/2026.1","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 17:21:23.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:48:21.000000000","updated":"2026-04-03 17:22:27.000000000","submitted":"2026-04-03 17:21:23.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":"982759-fix/federation-oidc-utf8-encoding-stable/2026.1","cherry_pick_of_change":981777,"cherry_pick_of_patch_set":4,"meta_rev_id":"b24cd17009e3e40540f4be71a397c26522efe5ba","_number":982759,"virtual_id_number":982759,"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 17:21:22.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:17:48.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:48.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:48.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":{"CC":[{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"}],"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"]}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-03-31 09:48:21.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 11:04:41.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:17:48.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:48.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":"d7f715c6ced71e3e55e24a558cf8423a89c53435","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:48:21.000000000","message":"Patch Set 1: Cherry Picked from branch master.","accounts_in_message":[],"_revision_number":1},{"id":"4b9c178f4fb902c6c212763354835401ca3665f1","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-31 11:04:41.000000000","message":"Patch Set 1: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/0d1b457dcbfe4d33ad83a337c999607b\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/8cb2ceb3cd2343bb9533ab653ba586e9 : SUCCESS in 11m 07s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/603df5a5ff8145ba8b280dc6dc8a6f0b : SUCCESS in 3m 31s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/1f068126865c4067a78a5344bf6c6542 : SUCCESS in 7m 40s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/5693eff5688846429c522b0a116203fd : SUCCESS in 6m 42s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/065ff8ad4dbc40b5b4b2b3beeaa59aec : SUCCESS in 11m 01s\n- grenade https://zuul.opendev.org/t/openstack/build/e61333f08214458c9fb7cfa113e5d332 : SUCCESS in 1h 15m 17s\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/e82ddec8372c4a968a46a44f6c001e24 : SUCCESS in 1h 01m 52s\n- keystoneclient-devstack-functional https://zuul.opendev.org/t/openstack/build/166f9be2ace748c5984cd7a1d5495cb9 : SUCCESS in 8m 33s (non-voting)\n- keystone-tempest https://zuul.opendev.org/t/openstack/build/891071ec95e8412690e75f7895bcf012 : SUCCESS in 14m 49s\n- keystone-tempest-fips https://zuul.opendev.org/t/openstack/build/d1c1e543b04a4c74923299fe6f87052c : FAILURE in 15m 29s (non-voting)\n- keystone-tempest-federation https://zuul.opendev.org/t/openstack/build/c8a25bd600994d5b9e188d4230723b79 : FAILURE in 26m 43s (non-voting)\n- keystone-tempest-federation-k2k https://zuul.opendev.org/t/openstack/build/4341be1cdd2b4e33a2c53809dad0cc67 : SUCCESS in 29m 28s\n- keystone-tempest-oidc-federation https://zuul.opendev.org/t/openstack/build/5b12df40ff4f4b2db5394bc1de6fc7c7 : SUCCESS in 37m 00s\n- keystone-tempest-ldap-domain-specific-driver https://zuul.opendev.org/t/openstack/build/024713c871704d73a549a2276ab642dc : SUCCESS in 27m 11s (non-voting)\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/9b273a6dfc8342e9a028b0280ee13fbf : SUCCESS in 1h 06m 51s\n- keystone-protection-functional https://zuul.opendev.org/t/openstack/build/f72a702c7c064f308aef7a43c9debf84 : FAILURE in 49m 46s (non-voting)\n- codegenerator-openapi-identity-tips-with-api-ref https://zuul.opendev.org/t/openstack/build/ad7a229e26b54eaba6bf806d697e3f40 : SUCCESS in 7m 05s (non-voting)","accounts_in_message":[],"_revision_number":1},{"id":"453d1f8bd2ac9309b487e4a276a818d7604ec06f","author":{"_account_id":7973,"name":"Douglas Mendizábal","email":"dmendiza@redhat.com","username":"dougmendizabal"},"date":"2026-04-03 15:17:48.000000000","message":"Patch Set 1: Code-Review+2","accounts_in_message":[],"_revision_number":1},{"id":"eea86010bca7385e068d8bfab40ae4979bc67762","author":{"_account_id":7414,"name":"David Wilde","email":"dwilde@redhat.com","username":"d34dh0r53"},"date":"2026-04-03 15:23:48.000000000","message":"Patch Set 1: Code-Review+2 Workflow+1","accounts_in_message":[],"_revision_number":1},{"id":"2e659319396dd19017a682f234b2e53a21168ff4","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-04-03 15:24:10.000000000","message":"Patch Set 1: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":1},{"id":"52203aa9d7dc41d3522933840e92335146252cbb","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-04-03 17:21:22.000000000","message":"Patch Set 1: Verified+2\n\nBuild succeeded (gate pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/db2eebe925b64952b6973e6f48b8afc2\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/c66c6df4e12e4703ae7ada1536995c78 : SUCCESS in 5m 19s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/09a017afa56141218d2d8390807de768 : SUCCESS in 7m 12s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/71cea2c87302413ebd58accacfdcdeed : SUCCESS in 11m 09s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/fda5492a9f714f0fbb97b62d17a2409a : SUCCESS in 6m 22s\n- grenade https://zuul.opendev.org/t/openstack/build/ad52bd350e694e88940edb9bc8fae18a : SUCCESS in 1h 15m 45s\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/017a5606f27d4e4aabba015127a5ed94 : SUCCESS in 1h 52m 23s\n- keystone-tempest https://zuul.opendev.org/t/openstack/build/0a0dbaae1554493996d3b1328b8f0938 : SUCCESS in 15m 10s\n- keystone-tempest-federation-k2k https://zuul.opendev.org/t/openstack/build/61f06b9dd6014eda90857303a025665e : SUCCESS in 18m 40s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/e4d4c86b652945aa9ca9e8e2dd0ec3cb : SUCCESS in 52m 52s\n- keystone-protection-functional https://zuul.opendev.org/t/openstack/build/cf0e7038e7a84fd0bf04f8612fda8b60 : FAILURE in 41m 54s (non-voting)","accounts_in_message":[],"_revision_number":1},{"id":"9793f709c86916be9edc2d78ad9080809324abfa","tag":"autogenerated:gerrit:merged","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-04-03 17:21:23.000000000","message":"Change has been successfully merged","accounts_in_message":[],"_revision_number":1},{"id":"b24cd17009e3e40540f4be71a397c26522efe5ba","tag":"autogenerated:zuul:promote","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-04-03 17:22:27.000000000","message":"Patch Set 1:\n\nBuild succeeded (promote pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/1b947513c00243fdbfb568c7dbe06449\n\n- promote-openstack-tox-docs https://zuul.opendev.org/t/openstack/build/4e936125161848a8b47158da72d0d7b9 : SUCCESS in 52s","accounts_in_message":[],"_revision_number":1}],"current_revision_number":1,"current_revision":"49c283ce406fde3ee1f7a1cc1e87224d2a7857c5","revisions":{"49c283ce406fde3ee1f7a1cc1e87224d2a7857c5":{"kind":"REWORK","_number":1,"created":"2026-03-31 09:48:21.000000000","uploader":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"ref":"refs/changes/59/982759/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/keystone","ref":"refs/changes/59/982759/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/keystone refs/changes/59/982759/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/keystone refs/changes/59/982759/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/keystone refs/changes/59/982759/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/keystone refs/changes/59/982759/1"}}},"commit":{"parents":[{"commit":"ce5e666b7d3d33071da48d8684787ddfc569b1f6","subject":"Update TOX_CONSTRAINTS_FILE for stable/2026.1","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/ce5e666b7d3d33071da48d8684787ddfc569b1f6"}]}],"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:48:21.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/49c283ce406fde3ee1f7a1cc1e87224d2a7857c5"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/49c283ce406fde3ee1f7a1cc1e87224d2a7857c5"}]},"branch":"refs/heads/stable/2026.1"}},"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":7414,"name":"David Wilde","email":"dwilde@redhat.com","username":"d34dh0r53"}},{"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":{}}}]}
