openid_client icon indicating copy to clipboard operation
openid_client copied to clipboard

Bugfix: Enable non-ascii characters in JWT

Open tom-010 opened this issue 2 years ago • 3 comments

Problem: When processing the response from an OpenID-Provider, the string is not decoded using UTF-8. Therefore, no non-ascii characters like german "Umlaute" (like ä, ü, ö) are possible in the JWT and therefore in the name in the JWT (like Jürgen).

Fix: in lib/src/http_util.dart _processResponse: before calling json.decode of the response, first decode it via utf8.decode.

Result: Umlaute and other non-ascii characters are now possible in the JWT and its fields like the name.

tom-010 avatar Feb 20 '23 10:02 tom-010

@rbellens Can this be merged please? Thanks!

zigapovhe avatar Jun 27 '23 13:06 zigapovhe

+1 I believe the change needs to be: var body = isJson ? json.decode(utf8.decode(response.body.codeUnits)) : response.body; instead...

bvoq avatar Jul 20 '23 10:07 bvoq

As @bvoq mentions, utf8.decode takes an List<int>, not a String, so this PR will not work. Can you update accordingly and also add a unit test.

rbellens avatar Oct 13 '23 09:10 rbellens