На текущем веб-сайте социальный вход реализован с использованием сопоставления в struts, и он вызывает команду пользовательского контроллера «XYZThirdPartyLoginCmdImpl», которая аутентифицирует переданные данные, и вызывает готовый «LogonCmd» для входа в систему.
Для создания службы REST для вышеуказанной функциональности был создан собственный обработчик REST «XYZThirdPartyLoginHandler» и оттуда вызвана существующая команда «XYZThirdPartyLoginCmdImpl», используя метод executeControllerCommandWithContext. После создания ответа WCToken и WCTrustedToken генерируются с помощью приведенного ниже кода.
ActivityToken token = getActivityToken();
String identitySignature = token.getSignature();
String identityId = token.getActivityGUID().getGUID().toString();
Map<String, Object> identityTokenInfo = new HashMap();
identityTokenInfo.put(MemberFacadeConstants.EC_USERID, new String[] { userId.toString() } );
identityTokenInfo.put(MemberFacadeConstants.ACTIVITY_TOKEN_ID, new String[] { identityId } );
identityTokenInfo.put(MemberFacadeConstants.ACTIVITY_TOKEN_SIGNATURE, new String[] { identitySignature } );
Map<String, String> commerceTokens = CommerceTokenHelper.generateCommerceTokens(identityTokenInfo);
String wcToken = commerceTokens.get(CommerceTokenHelper.WC_TOKEN);
String wcTrustedToken = commerceTokens.get(CommerceTokenHelper.WC_TRUSTED_TOKEN);
Сгенерированные с его помощью токены недействительны. Если мы попытаемся вызвать любую другую службу отдыха, используя этот токен, появится ошибка недопустимого сеанса пользователя. Аутентификация "XYZThirdPartyLoginCmdImpl" выполнена успешно, так как возвращаемый идентификатор пользователя правильный. После выполнения этого контекст пользователя не создается в таблице CTXMGMT. Пожалуйста, объясните, как создать действительные токены в потоке REST в этом случае использования.