Пользовательский сервис REST Websphere Commerce для входа в систему с использованием входа в социальную сеть не генерирует действительные токены WC, а таблица CTXMGMT не обновляется

На текущем веб-сайте социальный вход реализован с использованием сопоставления в 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 в этом случае использования.


person Akhil B S    schedule 28.12.2019    source источник


Ответы (1)


Если вы используете версию 9, вам может потребоваться изучить вызов REST oauth_validate (/wcs/resources/store//loginidentity/oauth_validate). Дополнительные сведения см. в статье KC: [https://www.ibm.com/support/knowledgecenter/SSZLC2_9.0.0/com.ibm.commerce.integration.doc/tasks/tcv_sociallogin.htm][1].] . Это вызывает несколько команд (OAuthTokenValidationCmdImpl и OpenUserRegisterCmd), отличных от тех, которые вы могли бы использовать, но позволяет вам передавать сторонний токен и генерирует правильные токены.

person Andy    schedule 03.01.2020