appsup-dart / openid_client

Library for working with OpenID Connect and implementing clients.
BSD 3-Clause "New" or "Revised" License
90 stars 118 forks source link

Bugfix: Enable non-ascii characters in JWT #79

Open tom-010 opened 1 year ago

tom-010 commented 1 year ago

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.

zigapovhe commented 1 year ago

@rbellens Can this be merged please? Thanks!

bvoq commented 1 year ago

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

rbellens commented 1 year ago

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.