From d79aaded14a3276a7806c18799edcf8573302e4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BD=97=E8=AF=9A?= <6802646+luoch@users.noreply.github.com> Date: Fri, 5 Jun 2020 18:16:25 +0800 Subject: [PATCH] Update oic_session.rb MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Keycloak will encode the User info with url safe encoder using ‘-’ instead of ‘+’ and ‘_’ instead of ‘/’. When the base64encoded string contains '-' or '_' , orignal code will throw `500 JSON::ParserError`. This change will fix it. --- app/models/oic_session.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/oic_session.rb b/app/models/oic_session.rb index 8a62c09..9bf538f 100644 --- a/app/models/oic_session.rb +++ b/app/models/oic_session.rb @@ -162,7 +162,7 @@ def user if id_token? @user = JSON::parse(Base64::decode64(id_token.split('.')[1])) else # keycloak way... - @user = JSON::parse(Base64::decode64(access_token.split('.')[1])) + @user = JSON::parse(Base64::urlsafe_decode64(access_token.split('.')[1])) end return @user end