)]}'
{"id":"openstack%2Fkeystone~981777","triplet_id":"openstack%2Fkeystone~master~I970b3373017478f3359ac0eef0a8cda27a89918d","project":"openstack/keystone","branch":"master","topic":"fix/federation-oidc-utf8-encoding","attention_set":{},"removed_from_attention_set":{"7973":{"account":{"_account_id":7973,"name":"Douglas Mendizábal","email":"dmendiza@redhat.com","username":"dougmendizabal"},"last_update":"2026-03-31 09:47:37.000000000","reason":"Change was submitted"},"13478":{"account":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"last_update":"2026-03-30 21:34:40.000000000","reason":"\u003cGERRIT_ACCOUNT_13478\u003e replied on the change","reason_account":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"}},"14250":{"account":{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},"last_update":"2026-03-31 07:57:13.000000000","reason":"\u003cGERRIT_ACCOUNT_14250\u003e replied on the change","reason_account":{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"}},"27900":{"account":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"last_update":"2026-03-31 09:47:37.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-23 14:07:50.000000000","updated":"2026-03-31 09:49:15.000000000","submitted":"2026-03-31 09:47:37.000000000","submitter":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"total_comment_count":8,"unresolved_comment_count":0,"has_review_started":true,"submission_id":"981777-fix/federation-oidc-utf8-encoding","meta_rev_id":"7857c20d2979fc384c16b61d059fd8c99a0e923c","_number":981777,"virtual_id_number":981777,"owner":{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"value":0,"_account_id":7414,"name":"David Wilde","email":"dwilde@redhat.com","username":"d34dh0r53"},{"value":0,"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},{"value":0,"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},{"tag":"autogenerated:zuul:gate","value":2,"date":"2026-03-31 09:47:37.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":0,"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"}],"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":7414,"name":"David Wilde","email":"dwilde@redhat.com","username":"d34dh0r53"},"all":[{"value":2,"date":"2026-03-30 17:31:12.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":7414,"name":"David Wilde","email":"dwilde@redhat.com","username":"d34dh0r53"},{"value":1,"date":"2026-03-30 21:34:40.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},{"value":2,"date":"2026-03-31 07:57:13.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":1,"date":"2026-03-30 19:11:52.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"}],"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":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},"all":[{"value":0,"_account_id":7414,"name":"David Wilde","email":"dwilde@redhat.com","username":"d34dh0r53"},{"value":0,"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},{"value":1,"date":"2026-03-31 07:57:13.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":0,"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[{"_account_id":7973,"name":"Douglas Mendizábal","email":"dmendiza@redhat.com","username":"dougmendizabal"},{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"}],"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":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-03-23 15:14:45.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-03-24 11:23:21.000000000","updated_by":{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},"reviewer":{"_account_id":7973,"name":"Douglas Mendizábal","email":"dmendiza@redhat.com","username":"dougmendizabal"},"state":"REVIEWER"},{"updated":"2026-03-25 22:06:54.000000000","updated_by":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"reviewer":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"state":"CC"},{"updated":"2026-03-25 22:32:32.000000000","updated_by":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"reviewer":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"state":"REVIEWER"},{"updated":"2026-03-30 17:31:12.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"},{"updated":"2026-03-30 19:11:52.000000000","updated_by":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"reviewer":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"state":"REVIEWER"},{"updated":"2026-03-30 19:11:52.000000000","updated_by":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"reviewer":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"state":"REVIEWER"}],"messages":[{"id":"85c51b76dc8f68a15feba27f3b12980d7b2c6b46","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},"date":"2026-03-23 14:07:50.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"59f97d0b00d63448e080b970a22266dbffd427a8","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-23 15:14:45.000000000","message":"Patch Set 1: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttps://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing\nand https://docs.openstack.org/project-team-guide/testing.html#how-to-handle-test-failures\n\nhttps://zuul.opendev.org/t/openstack/buildset/69cfd7b79aa74122a012e1a0364e0255\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/57c374fa81644a1889e125b5cbf918a5 : SUCCESS in 16m 29s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/3a118036312148a0a167f440391239cf : FAILURE in 5m 08s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/69ec4cecdb114346919b427a2fc5f6b0 : SUCCESS in 7m 08s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/fec7c2a3a3224a8595de813eed69a509 : SUCCESS in 10m 09s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/8e9f2cebb7e747799e028e366ef5a1d8 : SUCCESS in 15m 04s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/940414637b85411b9a675bc71911e24c : SUCCESS in 13m 38s\n- grenade https://zuul.opendev.org/t/openstack/build/d49d1a92461247998e71b36f35a57344 : SUCCESS in 34m 03s\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/0337ea26b5f74addb0642d14c4c31091 : SUCCESS in 59m 04s\n- keystoneclient-devstack-functional https://zuul.opendev.org/t/openstack/build/fffa1be5158e46e3a2198cade57cb5a9 : SUCCESS in 19m 04s (non-voting)\n- keystone-tempest https://zuul.opendev.org/t/openstack/build/9510b6f810bd4ac1a207b8947a72cead : SUCCESS in 26m 03s\n- keystone-tempest-fips https://zuul.opendev.org/t/openstack/build/5ac7caf24527492a8e218dbcd8ed44f1 : FAILURE in 19m 48s (non-voting)\n- keystone-tempest-federation https://zuul.opendev.org/t/openstack/build/a3dd9ae7a10c4d898d38a2cabceffc6f : FAILURE in 29m 02s (non-voting)\n- keystone-tempest-federation-k2k https://zuul.opendev.org/t/openstack/build/93be8b8c0f3e4b4cb80e497ce3dc8d75 : SUCCESS in 29m 16s\n- keystone-tempest-oidc-federation https://zuul.opendev.org/t/openstack/build/721e34e6cef944478843bc6a63a240ab : SUCCESS in 31m 07s\n- keystone-tempest-ldap-domain-specific-driver https://zuul.opendev.org/t/openstack/build/bc32473ecc574c77aefc9bee630f048b : SUCCESS in 41m 55s (non-voting)\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/bf010770f7144c3faad51ba7d581a1cd : SUCCESS in 1h 00m 50s\n- keystone-protection-functional https://zuul.opendev.org/t/openstack/build/a4eb1ffb25a54572b4d4d82f37f2a018 : FAILURE in 19m 53s (non-voting)\n- codegenerator-openapi-identity-tips-with-api-ref https://zuul.opendev.org/t/openstack/build/2c49fe040f44487bb9e5285dccaf4168 : RETRY_LIMIT in 3m 28s (non-voting)","accounts_in_message":[],"_revision_number":1},{"id":"f148b59eefd8662f1d9c5fe0ba1c68bfa1263b9d","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-23 17:08:16.000000000","message":"Patch Set 1:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/ac1867cd92fe4859aa7e814c0a327022\n\n- openstack-tox-py310-arm64 https://zuul.opendev.org/t/openstack/build/7eafcd017a044099bd396141dd06a903 : SUCCESS in 36m 20s (non-voting)\n- openstack-tox-py313-arm64 https://zuul.opendev.org/t/openstack/build/42e62a5125204d40b9cdc3fb75bc7d1a : SUCCESS in 41m 01s (non-voting)\n- openstack-tox-py314-arm64 https://zuul.opendev.org/t/openstack/build/88ce25807a304b49850e1bd411c0b580 : SUCCESS in 1h 00m 19s (non-voting)","accounts_in_message":[],"_revision_number":1},{"id":"3aec2f46c79c216e958d595e8f9324b8889c98a0","tag":"autogenerated:gerrit:newWipPatchSet","author":{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},"date":"2026-03-24 11:22:10.000000000","message":"Uploaded patch set 2.\n\nOutdated Votes:\n* Verified-1\n","accounts_in_message":[],"_revision_number":2},{"id":"ac58e3e4ff4765fccb02621b0c383c59388736ea","author":{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},"date":"2026-03-24 11:23:21.000000000","message":"Patch Set 2:\n\nThis change is ready for review.","accounts_in_message":[],"_revision_number":2},{"id":"16152819b932bf5feaf93ee70badec4ffd9236d1","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-24 12:30:03.000000000","message":"Patch Set 2: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttps://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing\nand https://docs.openstack.org/project-team-guide/testing.html#how-to-handle-test-failures\n\nhttps://zuul.opendev.org/t/openstack/buildset/945f6c4bd36445d39e16337b06525366\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/0bc51584115c41f8bacbaa8fb4a7c240 : SUCCESS in 18m 23s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/7200ab38785b4f3ca4ae252607ed1657 : SUCCESS in 6m 01s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/03b9e25295af483d96d084c5bcc17ee8 : SUCCESS in 12m 55s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/4c75a5dc0baa487d965fd79a65dc77c1 : SUCCESS in 11m 36s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/0e96d22c15c4480b9a837dfc9f60d420 : SUCCESS in 16m 38s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/10b7656159054d8785aebdeaf178149c : SUCCESS in 9m 02s\n- grenade https://zuul.opendev.org/t/openstack/build/b9999bffd1be41959bd5ebd94880f28f : POST_FAILURE in 1h 00m 30s\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/028563384c7d4f01bbf38a2142a94c0e : SUCCESS in 1h 04m 29s\n- keystoneclient-devstack-functional https://zuul.opendev.org/t/openstack/build/29ce21642193485abdc4320788dfe40f : SUCCESS in 18m 35s (non-voting)\n- keystone-tempest https://zuul.opendev.org/t/openstack/build/f3c5a29d19d74ce792403a001ce3de7d : SUCCESS in 29m 04s\n- keystone-tempest-fips https://zuul.opendev.org/t/openstack/build/670a62c406a64b42930ce910ce3fc086 : FAILURE in 13m 21s (non-voting)\n- keystone-tempest-federation https://zuul.opendev.org/t/openstack/build/093cd8946ae14e02baafd74c1342d8a0 : FAILURE in 16m 43s (non-voting)\n- keystone-tempest-federation-k2k https://zuul.opendev.org/t/openstack/build/a215fac47eda433f9f37124ca8b5b60a : SUCCESS in 31m 27s\n- keystone-tempest-oidc-federation https://zuul.opendev.org/t/openstack/build/7799b1984a0a4286b27d14cc0344632d : SUCCESS in 15m 10s\n- keystone-tempest-ldap-domain-specific-driver https://zuul.opendev.org/t/openstack/build/5f3e23d909904beca17dfd04e6eb99a9 : SUCCESS in 34m 25s (non-voting)\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/edcab6b4f9e64ee1aa39adc2aeb574ed : SUCCESS in 35m 53s\n- keystone-protection-functional https://zuul.opendev.org/t/openstack/build/56786b1a15074d6fa3681a57a1174d40 : FAILURE in 32m 00s (non-voting)\n- codegenerator-openapi-identity-tips-with-api-ref https://zuul.opendev.org/t/openstack/build/172256f2e9e44918900fa27447cf9adb : RETRY_LIMIT in 3m 11s (non-voting)","accounts_in_message":[],"_revision_number":2},{"id":"3c5cefdfe57dccee8220356a3d888c4a601f3d60","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-24 12:31:26.000000000","message":"Patch Set 2:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/6ce9013f80ca4d43806ba2c63832bd5d\n\n- openstack-tox-py310-arm64 https://zuul.opendev.org/t/openstack/build/c5086f7a25e543d99357544879250cc9 : SUCCESS in 31m 19s (non-voting)\n- openstack-tox-py313-arm64 https://zuul.opendev.org/t/openstack/build/e20bcf39322241d2b5f2230f62ee29cd : SUCCESS in 21m 23s (non-voting)\n- openstack-tox-py314-arm64 https://zuul.opendev.org/t/openstack/build/7033ebb5166e45d7ace4f724ff50fe98 : SUCCESS in 31m 08s (non-voting)","accounts_in_message":[],"_revision_number":2},{"id":"593ebf4f745dd2b76af048f445c36acc48245f5d","author":{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},"date":"2026-03-25 11:32:07.000000000","message":"Patch Set 2:\n\n(1 comment)","accounts_in_message":[],"_revision_number":2},{"id":"00e05258ec82dec79ddc929dabc40b66428590f4","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-25 12:31:34.000000000","message":"Patch Set 2:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/31c91b3b796c48c9b218cf9ecfa2e4a3\n\n- openstack-tox-py310-arm64 https://zuul.opendev.org/t/openstack/build/65014d8dad884543874c571a8ee17101 : SUCCESS in 26m 07s (non-voting)\n- openstack-tox-py313-arm64 https://zuul.opendev.org/t/openstack/build/11dcaa1703d14787a169f0029b967fa2 : SUCCESS in 25m 42s (non-voting)\n- openstack-tox-py314-arm64 https://zuul.opendev.org/t/openstack/build/f9379c0dc5864cc8a42b0026c08952f9 : SUCCESS in 33m 22s (non-voting)","accounts_in_message":[],"_revision_number":2},{"id":"7995e58934fac2963bf56d6d60be069dfcb6b8d2","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-25 13:37:57.000000000","message":"Patch Set 2: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/af13a2e1536f4db8b3cd094ca57bcd75\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/749d90fe782849f5870d145d18b0a35c : SUCCESS in 20m 33s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/77921f2d92694d49b6ba8c982aa02585 : SUCCESS in 7m 48s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/1c06f547c2c94f44860df044691399f2 : SUCCESS in 12m 28s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/3fd929f93307473fb066e5601e174e43 : SUCCESS in 12m 13s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/607eafe536394d4cb694b47fe8116fa0 : SUCCESS in 15m 48s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/db7ceb7721b643848c88f69657dee9bc : SUCCESS in 16m 14s\n- grenade https://zuul.opendev.org/t/openstack/build/15052f3f4748494699cc46e549650f0f : SUCCESS in 1h 02m 07s\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/7bc430e5f0d5456891e2e96b64f81bbc : SUCCESS in 2h 05m 08s\n- keystoneclient-devstack-functional https://zuul.opendev.org/t/openstack/build/e1a33a7c07da4908a6a21e0947125eeb : SUCCESS in 8m 15s (non-voting)\n- keystone-tempest https://zuul.opendev.org/t/openstack/build/be675ad93cb8447fb6c1963141339788 : SUCCESS in 16m 31s\n- keystone-tempest-fips https://zuul.opendev.org/t/openstack/build/629ff41493b24155bed9b7a21d1352b3 : FAILURE in 14m 22s (non-voting)\n- keystone-tempest-federation https://zuul.opendev.org/t/openstack/build/28ea70fb02c2423da031dc8c39dd3024 : FAILURE in 26m 22s (non-voting)\n- keystone-tempest-federation-k2k https://zuul.opendev.org/t/openstack/build/9e3a8c27fb0e48ebace6ed749cad89d7 : SUCCESS in 32m 08s\n- keystone-tempest-oidc-federation https://zuul.opendev.org/t/openstack/build/44d95665375a47b2890e47580c6e5a34 : SUCCESS in 15m 56s\n- keystone-tempest-ldap-domain-specific-driver https://zuul.opendev.org/t/openstack/build/d91932f6066f4aecb2b9a0f804cc4b20 : SUCCESS in 41m 21s (non-voting)\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/1c0e18e341a341bcb600fb1a75e5363e : SUCCESS in 57m 45s\n- keystone-protection-functional https://zuul.opendev.org/t/openstack/build/5c805d2778ee4ae0853802f75be4f218 : FAILURE in 42m 49s (non-voting)\n- codegenerator-openapi-identity-tips-with-api-ref https://zuul.opendev.org/t/openstack/build/1e9de9d1bc02421a9c391b9e040e78a3 : POST_FAILURE in 8m 56s (non-voting)","accounts_in_message":[],"_revision_number":2},{"id":"028ad842dad7c05d17e92961b507bfe1dc0e4055","author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"date":"2026-03-25 22:06:54.000000000","message":"Patch Set 2:\n\n(1 comment)","accounts_in_message":[],"_revision_number":2},{"id":"7bf1601ebc5bbd553bcfa08158420703016b1ef9","author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"date":"2026-03-25 22:32:32.000000000","message":"Patch Set 2: Code-Review-1\n\n(3 comments)","accounts_in_message":[],"_revision_number":2},{"id":"7ac21f2496e47e790b7b4af81d22ff6afb999467","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},"date":"2026-03-30 10:34:35.000000000","message":"Uploaded patch set 3.\n\nOutdated Votes:\n* Code-Review-1 (copy condition: \"changekind:TRIVIAL_REBASE OR is:MIN\")\n* Verified+1\n","accounts_in_message":[],"_revision_number":3},{"id":"c2605c423a3b70cf9feda54cff70cc9049403037","author":{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},"date":"2026-03-30 10:37:26.000000000","message":"Patch Set 3:\n\n(3 comments)","accounts_in_message":[],"_revision_number":3},{"id":"63e4c118e1134f832be7269e217be950f6f0c78b","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},"date":"2026-03-30 10:38:12.000000000","message":"Uploaded patch set 4.","accounts_in_message":[],"_revision_number":4},{"id":"866348401d03039a51f145392a0396baac1778e9","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-30 11:36:28.000000000","message":"Patch Set 4: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/f68fbb7fe8a143fbb6c728b01ce17d85\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/4cc52dec070143d099875ebc232dfc90 : SUCCESS in 11m 35s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/2d42fc31e2534bafb7a8661360340213 : SUCCESS in 3m 10s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/f60becec1a2245b59ae3d2fe5e8833f6 : SUCCESS in 12m 08s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/4fcdef2cdf744a2baf7e3947d4ab5f11 : SUCCESS in 10m 29s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/1c6651deb44245b88b9ebb1857a9c833 : SUCCESS in 9m 11s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/262566f243a0433e8cfb54a2cd831c8a : SUCCESS in 7m 08s\n- grenade https://zuul.opendev.org/t/openstack/build/cbf72166f8824ce19a5794eb238f1c70 : SUCCESS in 35m 54s\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/7e6e1820ad49472f929b23df84b6eef3 : SUCCESS in 56m 57s\n- keystoneclient-devstack-functional https://zuul.opendev.org/t/openstack/build/2fce1accf85b44cfbad7c1f92160ac19 : SUCCESS in 10m 37s (non-voting)\n- keystone-tempest https://zuul.opendev.org/t/openstack/build/683e529ed5b54239a6e30dc95ad6e05e : SUCCESS in 16m 26s\n- keystone-tempest-fips https://zuul.opendev.org/t/openstack/build/11c93f9935634ec3a5319f8171e91a35 : FAILURE in 11m 47s (non-voting)\n- keystone-tempest-federation https://zuul.opendev.org/t/openstack/build/cbffedb49dc64041b931438c9224f02b : FAILURE in 15m 30s (non-voting)\n- keystone-tempest-federation-k2k https://zuul.opendev.org/t/openstack/build/01b394c2fe7f4ab6ae798a1a85de48eb : SUCCESS in 16m 40s\n- keystone-tempest-oidc-federation https://zuul.opendev.org/t/openstack/build/c9cbb7ed0eb84fdd9fbe1808876599c9 : SUCCESS in 16m 56s\n- keystone-tempest-ldap-domain-specific-driver https://zuul.opendev.org/t/openstack/build/54c737621992423786fce1af894b8135 : SUCCESS in 24m 02s (non-voting)\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/e6aa4b41370f43ceaa423b5aed57694a : SUCCESS in 44m 38s\n- keystone-protection-functional https://zuul.opendev.org/t/openstack/build/a4deb674d6a94346a09e6978985f005f : FAILURE in 22m 37s (non-voting)\n- codegenerator-openapi-identity-tips-with-api-ref https://zuul.opendev.org/t/openstack/build/e17ffef4b93e4cde97575e31f120fe0e : POST_FAILURE in 3m 54s (non-voting)","accounts_in_message":[],"_revision_number":4},{"id":"e7f373eff048f100396558ecd835ee81de4e0c80","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-30 11:48:23.000000000","message":"Patch Set 4:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/5015133996604748a3056a5cb54dabf3\n\n- openstack-tox-py310-arm64 https://zuul.opendev.org/t/openstack/build/d34cb31483564ad0ae163ef0891685a2 : SUCCESS in 42m 09s (non-voting)\n- openstack-tox-py313-arm64 https://zuul.opendev.org/t/openstack/build/0402e03bf3104fc192608777d955f9d9 : SUCCESS in 33m 24s (non-voting)\n- openstack-tox-py314-arm64 https://zuul.opendev.org/t/openstack/build/b128b6295aab42188154bddb68267a30 : SUCCESS in 58m 15s (non-voting)","accounts_in_message":[],"_revision_number":4},{"id":"b1d711d8cbbcbff20b704df99a0dcd041e36b3d0","author":{"_account_id":7414,"name":"David Wilde","email":"dwilde@redhat.com","username":"d34dh0r53"},"date":"2026-03-30 17:31:12.000000000","message":"Patch Set 4: Code-Review+2","accounts_in_message":[],"_revision_number":4},{"id":"e25e6c885904e1a3efdc7e821a3eefd9d0bb663d","author":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"date":"2026-03-30 19:11:52.000000000","message":"Patch Set 4: Code-Review+1","accounts_in_message":[],"_revision_number":4},{"id":"c0ea4832bc63bc31a893f6db2ce8fddc7f03ab15","author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"date":"2026-03-30 21:34:40.000000000","message":"Patch Set 4: Code-Review+1","accounts_in_message":[],"_revision_number":4},{"id":"521dd362cdc1744dce8d93109ab0cde6cae05076","author":{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},"date":"2026-03-31 07:57:13.000000000","message":"Patch Set 4: Code-Review+2 Workflow+1","accounts_in_message":[],"_revision_number":4},{"id":"a5a8b10727defe45b46d87f56bba99d6590c04ad","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-31 07:57:57.000000000","message":"Patch Set 4: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":4},{"id":"a4ed0734b1207144bbc97c909721e99807debc5d","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-31 09:47:37.000000000","message":"Patch Set 4: Verified+2\n\nBuild succeeded (gate pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/3e963de409dd48a790aa52ee558876db\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/438c3902c6b5450795956a2834c6d8fe : SUCCESS in 5m 24s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/62ca75eecddc42ff8211bce487dd334b : SUCCESS in 9m 14s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/5b01a0115fa44b8aaf5e179f476a4f9c : SUCCESS in 10m 02s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/013763d7efc14636afdcc0e155d6a7c9 : SUCCESS in 7m 31s\n- grenade https://zuul.opendev.org/t/openstack/build/727c72a9db74415f9232b71020c6ad43 : SUCCESS in 1h 10m 45s\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/04307eca9db348a3aa8ae7b1ce62e6f0 : SUCCESS in 1h 44m 32s\n- keystone-tempest https://zuul.opendev.org/t/openstack/build/c99480dcdaf8401083dd2c8d16f0edba : SUCCESS in 35m 11s\n- keystone-tempest-federation-k2k https://zuul.opendev.org/t/openstack/build/40c8237d329743b4a819cd9e18a7bf38 : SUCCESS in 31m 37s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/a63ed5ca0a124f58a587bd09d2aef3a2 : SUCCESS in 1h 00m 31s\n- keystone-protection-functional https://zuul.opendev.org/t/openstack/build/33a616e1ff8c49bc9c8aa6b8041831da : FAILURE in 17m 55s (non-voting)","accounts_in_message":[],"_revision_number":4},{"id":"c4f849da1dd4697b103a8363fbe10a848d9d50f1","tag":"autogenerated:gerrit:merged","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-31 09:47:37.000000000","message":"Change has been successfully merged","accounts_in_message":[],"_revision_number":4},{"id":"7857c20d2979fc384c16b61d059fd8c99a0e923c","tag":"autogenerated:zuul:promote","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-03-31 09:49:15.000000000","message":"Patch Set 4:\n\nBuild succeeded (promote pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/11cd6e949c6f41a28b670360f1cda040\n\n- promote-openstack-tox-docs https://zuul.opendev.org/t/openstack/build/386b1e32e2ff45dd9efd415d00fb7409 : SUCCESS in 1m 11s","accounts_in_message":[],"_revision_number":4}],"current_revision_number":4,"current_revision":"1678987b74658ae86d6b80a5c3092a0ad2b5c5bd","revisions":{"7ea3bcc4a9935e2aa7c82ba946a5f6906c41a8b7":{"kind":"REWORK","_number":1,"created":"2026-03-23 14:07:50.000000000","uploader":{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},"ref":"refs/changes/77/981777/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/keystone","ref":"refs/changes/77/981777/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/keystone refs/changes/77/981777/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/keystone refs/changes/77/981777/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/keystone refs/changes/77/981777/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/keystone refs/changes/77/981777/1"}}},"commit":{"parents":[{"commit":"3526925ae34a66e626bec985628a421a7694168e","subject":"Merge \"Keystone identity mapping to support project definition as a JSON\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/3526925ae34a66e626bec985628a421a7694168e"}]}],"author":{"name":"Grzegorz Grasza","email":"xek@redhat.com","date":"2026-03-23 14:03:09.000000000","tz":60},"committer":{"name":"Grzegorz Grasza","email":"xek@redhat.com","date":"2026-03-23 14:07:28.000000000","tz":60},"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: OSPRH-27721\nAssisted-by: Claude Opus (Anthropic)\nSigned-off-by: Grzegorz Grasza \u003cxek@redhat.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/7ea3bcc4a9935e2aa7c82ba946a5f6906c41a8b7"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/7ea3bcc4a9935e2aa7c82ba946a5f6906c41a8b7"}]},"branch":"refs/heads/master"},"4440a2c4ccbaf95815b783287c6c79d7176daf07":{"kind":"REWORK","_number":2,"created":"2026-03-24 11:22:10.000000000","uploader":{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},"ref":"refs/changes/77/981777/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/keystone","ref":"refs/changes/77/981777/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/keystone refs/changes/77/981777/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/keystone refs/changes/77/981777/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/keystone refs/changes/77/981777/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/keystone refs/changes/77/981777/2"}}},"commit":{"parents":[{"commit":"3526925ae34a66e626bec985628a421a7694168e","subject":"Merge \"Keystone identity mapping to support project definition as a JSON\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/3526925ae34a66e626bec985628a421a7694168e"}]}],"author":{"name":"Grzegorz Grasza","email":"xek@redhat.com","date":"2026-03-23 14:03:09.000000000","tz":60},"committer":{"name":"Grzegorz Grasza","email":"xek@redhat.com","date":"2026-03-24 11:12:26.000000000","tz":60},"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: OSPRH-27721\nAssisted-by: Claude Opus (Anthropic)\nSigned-off-by: Grzegorz Grasza \u003cxek@redhat.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/4440a2c4ccbaf95815b783287c6c79d7176daf07"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/4440a2c4ccbaf95815b783287c6c79d7176daf07"}]},"branch":"refs/heads/master"},"df96fbd54ae15464975801d919ddeab227e3a1bb":{"kind":"REWORK","_number":3,"created":"2026-03-30 10:34:35.000000000","uploader":{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},"ref":"refs/changes/77/981777/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/keystone","ref":"refs/changes/77/981777/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/keystone refs/changes/77/981777/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/keystone refs/changes/77/981777/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/keystone refs/changes/77/981777/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/keystone refs/changes/77/981777/3"}}},"commit":{"parents":[{"commit":"3526925ae34a66e626bec985628a421a7694168e","subject":"Merge \"Keystone identity mapping to support project definition as a JSON\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/3526925ae34a66e626bec985628a421a7694168e"}]}],"author":{"name":"Grzegorz Grasza","email":"xek@redhat.com","date":"2026-03-23 14:03:09.000000000","tz":60},"committer":{"name":"Grzegorz Grasza","email":"xek@redhat.com","date":"2026-03-30 10:28:53.000000000","tz":120},"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","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/df96fbd54ae15464975801d919ddeab227e3a1bb"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/df96fbd54ae15464975801d919ddeab227e3a1bb"}]},"branch":"refs/heads/master"},"1678987b74658ae86d6b80a5c3092a0ad2b5c5bd":{"kind":"REWORK","_number":4,"created":"2026-03-30 10:38:12.000000000","uploader":{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},"ref":"refs/changes/77/981777/4","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/keystone","ref":"refs/changes/77/981777/4","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/keystone refs/changes/77/981777/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/keystone refs/changes/77/981777/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/keystone refs/changes/77/981777/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/keystone refs/changes/77/981777/4"}}},"commit":{"parents":[{"commit":"3526925ae34a66e626bec985628a421a7694168e","subject":"Merge \"Keystone identity mapping to support project definition as a JSON\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/3526925ae34a66e626bec985628a421a7694168e"}]}],"author":{"name":"Grzegorz Grasza","email":"xek@redhat.com","date":"2026-03-23 14:03:09.000000000","tz":60},"committer":{"name":"Grzegorz Grasza","email":"xek@redhat.com","date":"2026-03-30 10:36:26.000000000","tz":120},"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","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/1678987b74658ae86d6b80a5c3092a0ad2b5c5bd"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/1678987b74658ae86d6b80a5c3092a0ad2b5c5bd"}]},"branch":"refs/heads/master"}},"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":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"}},{"label":"Workflow","status":"MAY","applied_by":{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"}}]}],"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":{}}}]}
