code: @Override
      @FFDCIgnore({ InvalidTokenException.class, TokenExpiredException.class, WSLoginFailedException.class })
      public boolean login() throws LoginException {
          if (isAlreadyProcessed()) {
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                  Tr.debug(tc, "Already processed by other login module, abstaining.");
              }
              return false;
          }
  
          try {
              Callback[] callbacks = getRequiredCallbacks(callbackHandler);
              byte[] token = ((WSCredTokenCallbackImpl) callbacks[0]).getCredToken();
              String jwtToken = ((JwtTokenCallback) callbacks[2]).getToken();
              // If we have insufficient data, abstain.
              if (token == null && jwtToken == null) {
                  return false;
              }
  
              setAlreadyProcessed();
  
              if (jwtToken != null) {
                  setUpTemporaryUserSubjectForJsonWebToken(jwtToken);
              } else {
                  byte[] credToken = AuthenticationHelper.copyCredToken(token);
                  TokenManager tokenManager = getTokenManager();
                  recreatedToken = tokenManager.recreateTokenFromBytes(credToken);
                  accessId = recreatedToken.getAttributes("u")[0];
                  if (AccessIdUtil.isServerAccessId(accessId)) {
                      setUpTemporaryServerSubject();
                  } else {
                      setUpTemporaryUserSubject();
                  }
              }
              updateSharedState();
              return true;
          } catch (InvalidTokenException e) {
              throw new AuthenticationException(e.getLocalizedMessage(), e);
          } catch (TokenExpiredException e) {
              throw new AuthenticationException(e.getLocalizedMessage(), e);
          } catch (WSLoginFailedException e) {
              throw new AuthenticationException(e.getLocalizedMessage(), e);
          } catch (Exception e) {
              throw new AuthenticationException(e.getLocalizedMessage(), e);
          }
      }
docs: {@inheritDoc}