@@ -160,19 +160,26 @@ public OAuthTokens validate(final OAuthTokens saved) throws BackgroundException
160160 public OAuthTokens save (final OAuthTokens tokens ) throws LocalAccessDeniedException {
161161 log .debug ("Save new tokens {} for {}" , tokens , host );
162162 credentials .setOauth (tokens ).setSaved (new LoginOptions ().save );
163- try {
164- final DecodedJWT jwt = JWT .decode (tokens .getIdToken ());
165- // Standard claims
166- for (String claim : new String []{"preferred_username" , "email" , "name" , "nickname" , "sub" }) {
167- final String value = jwt .getClaim (claim ).asString ();
168- if (StringUtils .isNotBlank (value )) {
169- credentials .setUsername (value );
170- break ;
163+ switch (flowType ) {
164+ case PasswordGrant :
165+ // Skip modifying username used for password grant
166+ break ;
167+ default :
168+ try {
169+ final DecodedJWT jwt = JWT .decode (tokens .getIdToken ());
170+ // Standard claims
171+ for (String claim : new String []{"preferred_username" , "email" , "name" , "nickname" , "sub" }) {
172+ final String value = jwt .getClaim (claim ).asString ();
173+ if (StringUtils .isNotBlank (value )) {
174+ credentials .setUsername (value );
175+ break ;
176+ }
177+ }
171178 }
172- }
173- }
174- catch ( JWTDecodeException e ) {
175- log . warn ( "Failure {} decoding JWT {}" , e , tokens . getIdToken ()) ;
179+ catch ( JWTDecodeException e ) {
180+ log . warn ( "Failure {} decoding JWT {}" , e , tokens . getIdToken ());
181+ }
182+ break ;
176183 }
177184 if (credentials .isSaved ()) {
178185 store .save (host );
0 commit comments