From 24d87f27441ce07ae0d7fca5f758653a9293a09a Mon Sep 17 00:00:00 2001 From: smallbun <2689170096@qq.com> Date: Mon, 14 Aug 2023 20:00:17 +0800 Subject: [PATCH] =?UTF-8?q?:bug:=20=E4=BF=AE=E5=A4=8D=20java.lang.IllegalA?= =?UTF-8?q?rgumentException:=20claims=20cannot=20be=20empty?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../authorization/token/OAuth2TokenCustomizer.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/eiam-protocol/eiam-protocol-oidc/src/main/java/cn/topiam/eiam/protocol/oidc/authorization/token/OAuth2TokenCustomizer.java b/eiam-protocol/eiam-protocol-oidc/src/main/java/cn/topiam/eiam/protocol/oidc/authorization/token/OAuth2TokenCustomizer.java index 4bae21fe..62223622 100644 --- a/eiam-protocol/eiam-protocol-oidc/src/main/java/cn/topiam/eiam/protocol/oidc/authorization/token/OAuth2TokenCustomizer.java +++ b/eiam-protocol/eiam-protocol-oidc/src/main/java/cn/topiam/eiam/protocol/oidc/authorization/token/OAuth2TokenCustomizer.java @@ -18,9 +18,7 @@ package cn.topiam.eiam.protocol.oidc.authorization.token; import java.security.Principal; -import java.util.Objects; -import java.util.Optional; -import java.util.Set; +import java.util.*; import org.apache.commons.lang3.StringUtils; import org.springframework.security.core.Authentication; @@ -64,23 +62,29 @@ public class OAuth2TokenCustomizer implements Optional optional = userRepository.findById(Long.valueOf(principal.getId())); if (optional.isPresent()){ UserEntity user = optional.get(); + boolean hasCustomClaims=false; OidcUserInfo.Builder userInfoBuilder = OidcUserInfo.builder(); // Customize headers/claims for id_token if (authorizedScopes.contains(EMAIL)) { + hasCustomClaims=true; userInfoBuilder.email(StringUtils.defaultString(user.getEmail(), "")); userInfoBuilder.emailVerified(!Objects.isNull(user.getEmailVerified()) && user.getEmailVerified()); } if (authorizedScopes.contains(PHONE)) { + hasCustomClaims=true; userInfoBuilder.phoneNumber(StringUtils.defaultString(user.getPhone(), "")); userInfoBuilder.phoneNumberVerified(!Objects.isNull(user.getPhoneVerified()) && user.getPhoneVerified()); } if (authorizedScopes.contains(PROFILE)) { + hasCustomClaims=true; userInfoBuilder.preferredUsername(StringUtils.defaultString(user.getFullName(), "")); userInfoBuilder.nickname(StringUtils.defaultString(user.getNickName(), "")); userInfoBuilder.updatedAt(user.getUpdateTime().format(DEFAULT_DATE_TIME_FORMATTER)); } - context.getClaims().claims(claims -> - claims.putAll(userInfoBuilder.build().getClaims())); + if (hasCustomClaims){ + context.getClaims().claims(claims -> + claims.putAll(userInfoBuilder.build().getClaims())); + } } } }