Невозможно войти в приложение Hybris Mobile iOS B2B
Я не могу войти в Hybris Mobile App SDK для iOS. Я использую пример приложения B2B по умолчанию, предоставляемый Hybris в iOS SDK.
Я установил платформу Hybris на своем компьютере и установил IP-адрес, порт и имя пользователя в файл Environments.plist. Имя пользователя по умолчанию для B2B - mark.rivers@pronto-hw.com и пароль: 12341234
Ниже приведена ошибка:
2016-09-07 18: 19: 45: 445 yB2BApp [20152:70b] Нажата кнопка входа...
2016-09-07 18: 19: 47.197 yB2BApp [20152: 291779] Получение первого токена для пользователя mark.rivers@pronto-hw.com
2016-09-07 18: 19: 47: 198 yB2BApp [20152:70b] injectAuthorizationHeader Basic bWFyay5yaXZlcnNAcHJvbnRvLWh3LmNvbToxMjM0MTIzNA ==
2016-09-07 18: 19: 47: 198 yB2BApp [20152:70b] url https: //: 9002 / сервер авторизации / oauth/ token 2016-09-07 18: 19: 47: 198 yB2BApp [20152:70b] params
{
"client_id" = "mobile_android";
"client_secret" = secret;
"grant_type" = password;
password = 12341234;
username = "mark.rivers@pronto-hw.com";
}
2016-09-07 18: 19: 47: 317 yB2BApp [20152:70b] Ошибка при получении токена: Ошибка Domain=com.alamofire.error.serialization.response Code=-1011 "Запрос не выполнен: неавторизован (401)" UserInfo = 0x7b86e6e0
{com.alamofire.serialization.response.error.response = {URL: https://:9002/authorizationserver/ oauth/ token} {код состояния: 401, заголовки {
"Content-Type" = "application/json;charset=UTF-8";
Date = "Wed, 07 Sep 2016 12:49:47 GMT";
Server = "Apache-Coyote/1.1";
"Transfer-Encoding" = Identity;
"X-Frame-Options" = SAMEORIGIN;
}}, NSErrorFailingURLKey = HTTPS://:9002/authorizationserver/ OAuth/ маркер, NSLocalizedDescription= Не удалось выполнить запрос: несанкционированный (401), com.alamofire.serialization.response.error.data=<7b0d0a20 20202265 72726f72 7322203a 205b207b 0d0a2020 20202020 73616765 226d6573 22203a20 22556e6b 6e6f776e 20636c69 656e7420 6d6f6269 6c655f61 6e64726f 6964222c 0d0a2020 20202020 22747970 6522203a 2022556e 61757468 6f72697a 6564457 7d02020 020 020 020 020 020 020 020 0202 02 02 02>022
2016-09-07 18:19:47:318 yB2BApp[20152:70b] Проблемы при извлечении маркера авторизации, причина: запрос не выполнен: не авторизован (401)
2016-09-07 18: 19: 47: 630 yB2BApp [20152:70b] Ошибка получена...
Также в коде есть метод applyBasicAuth, который добавляет authorizationHeader и BASIC_AUTH является константой, основанной на пароле. Это должно измениться:
- (void)applyBasicAuth {
if(self.restEngine) {
NSString *authorizationHeader = [NSString stringWithFormat:@"Basic %@", BASIC_AUTH];
[self.restEngine injectAuthorizationHeader:authorizationHeader];
} else {
DDLogError(@"!!! RestEngine not set !!!");
}
}
BASIC_AUTH - это:
#define BASIC_AUTH @"bW9iaWxlX2FuZHJvaWQ6c2VjcmV0"
Скриншот Environments.plist:
Скриншот ошибки:
Почтальон Результаты:
Журналы консоли Hybris:
ОШИБКА [hybrisHTTP20] [xx.xxx.xx.xxx] [ClientCredentialsTokenEndpointFilter] Произошла внутренняя ошибка при попытке аутентификации пользователя. org.springframework.security.authentication.InternalAuthenticationServiceException: неизвестный клиент mobile_ios в org.springframework.security.authentication.dao.DaoAuthenticationProvider.retrieveUser(DaoAuthenticationProvider.java:110) ~[spring-security-core-3.2 -E аз. 3.2.5.RELEASE] at org.springframework.security.authentication.dao.AbstractUserDetailsAuthenticationProvider.authenticate(AbstractUserDetailsAuthenticationProvider.java:132) ~[spring-security-core-3.2.5.RELEASE.jar: atg.authentication.ProviderManager.authenticate(ProviderManager.java:156) ~[spring-security-core-3.2.5.RELEASE.jar:3.2.5.RELEASE] в org.springframework.security.oauth2.provider.client.ClientCredentialsTokenEndpointFilter.atter (ClientCredentialsTokenEndpointFilter.java:123) ~[spring-security-oauth2-2.0.6.RELEASE at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:2) pring-security-web-3.2.5.RELEASE.jar:3.2.5.RELEAS at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) [spring-security-web-3.2.5.RELEASE.jar:3.2.5.RELEASE] at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:50) [spring-security-web-3.2ASE.ar.: 3.2.5.RELE в org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.1.7.RELEASE.jar:4.1.7.RELEASE] в org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy.java:342) [spring-security-web-3.2.5.RELEASE.jar: 3.2.5.RELEASE] в org.springframework.security.web.context.SecurityContextPersistenceFirst (SecurityContextPersistenceFilter.java:87) [spring-security-web-3.2.5.RELEASE.jar:3.2.5.RELEASE] в org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy.java:3) 42) [spring-security-web-3.2.5.RELEASE.jar: 3.2.5.RELEASE] в org.springframework.security.web.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:144) [spring-security-web-3.2.5.RELEASE.jar:3.2.5.RELEASE] в org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy.java:342) [spring-security-web-3.2.5.RELEASE.jar: 3.2.5.RELEASE] в org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192) [spring-security-web-3.2.5.RELEASE.jar:3.2.5.RELEASE] в org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160) [spring-security-web-3.2.5.RELEASE.jar:3.2.5.RELEASE] по адресу de.hybris.platform.servicelayer.web.AbstractPlatformFilterChain$InternalFilterChain.doFilter(AbstractPlatformFilterChain.java:224) [coreserver.jar:?] at de.hybris.platform.webservicescommons.filter.AnonymousClientFilter.doFilter(AnonymousClientcomserserserserserserserserserserserserserserserserserserserserserserserserver)_server.jser).jj).jer.serser.jser.jser.serser.serser.serser.serser.serser.serser.serser.serser.serser.serser.serser.dll) jer.dll). hybris.platf orm.servicelayer.web.:?] at de.hybris.platform.servicelayer.web. Java:89) [coreserver.jar:?] at de.hybris.platform.servicelayer.web.AbstractPlatformFilterChain$InternalFilterChain.doFilter(AbstractPlatformFilterChain.java:224) [coreserver.jar:?] at de.hybrserlayerplat.web.Log4JFilter.doFilter(Log4JFilter.java:45) [coreserver.jar:?] at de.hybris.platform.servicelayer.web.AbstractPlatformFilterChain$InternalFilterChain.doFilter(AbstractPlatformFilterChain.jar: at: jer: atser: jer: jser): j2 de.hybris.platform.servicelayer.web.AbstractPlatformFilterChain.doFilterInternal(AbstractPlatformFilterChain.java:154) [coreserver.jar:?] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.1.7.RELEASE.jar:4.1.7.RELEASE] в org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344) [spring-web-4.1.7.RELEASE.jar:4.1.7.RELEASE] в org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261) [spring-web-4.1.7.RELEASE.jar:4.1.7.RELEASE] в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.javaal241).jar:7.0.59] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) [catalina.jar:7.0.59] at org.springframework.web.filter.CharacterEncodingFilterFilterF.java:85) [spring-web-4.1.7.RELEASE.jar:4.1.7.RELEASE] в org.springframework.web.filter.OncePerRequestFilter.doFilter (OncePerRequestFilter.java:107) [spring-web-4.1.7.RELEA SE.jar: 4.1.7.RELEASE] в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) [catalina.jar:7.0.59] в org.apache.catalina.core.ApplicationFilterChaindo (ApplicationFilterChain.java:208) [catalina.jar:7.0.59] at de.hybris.platform.webservicescommons.filter.SessionHidingFilter.doFilter(SessionHidingFilter.java:44) [webservicescommonsserver.jar:?] в org.apache.cat.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) [catalina.jar:7.0.59] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) [7.0.0jar]:7.0.jar на de.hybris.platform.servicelayer.web.XSSFilter.processPatternsAndDoFilter(XSSFilter.java:293) [coreserver.jar:?] на de.hybris.platform.servicelayer.web.XSSFilter.doFilter(XSSFil7.jpg [XavaFilter.j] coreserver.jar:?] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) [catalina.jar:7.0.59] на org.apache.catalina.core. ApplicationFilterChain.doFilter (ApplicationFilterChain.java:208) [catalina.jar:7.0.59] в org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) [catalina.jar:7.0.59] в apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) [catalina.jar:7.0.59] в org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170.alina:7alina:7: каталожный:7.59] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) [catalina.jar:7.0.59] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:) [catalina.jar:7.0.59] в org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) [catalina.jar:7.0.59] в org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421) [catalina.jar:7.0.59] at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1074) [tomcat-coyote.jar:7.0.59] в org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611) [tomcat-coyote.jar:7.0.59] в org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314) [tomcat-coyote.jar:7.0.59] в java.util.concurrent.ThreadPoolExecutor.runWorker(неизвестный источник) [?:1.8.0_102] в java.util.concurrent.ThreadPoolExecutor$Worker.run(неизвестный источник) [?:1.8.0_102] в org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-coyote.jar:7.0.59] на java.lang.Thread.run(неизвестный источник) [?: 1.8. 0_102] Причина: org.springframework.security.oauth2.provider.NoSuchClientException: неизвестный клиент:?] at de.hybris.platform.webservicescommons.oauth2.client.impl.DefaultClientDetailsService.loadClientByClientId (DefaultClientDetailsService.java:42) ~[webservicescommonsserver.jar:?] at org.springmerauth2.provider.client.ClientDetailsUserDetailsService.loadUserByUsername(ClientDetailsUserDetailsService.java:44) ~[spring-security-oauth2-2.0.6.RELEASE.jar:?] в org.springframework.utheader.java:102) ~[spring-security-core-3.2.5.RELEASE.jar:3.2.5.RELEASE] ... еще 54
2 ответа
Вот что у меня было для Hybris 5.6:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Defaults</key>
<dict>
<key>CURRENT_CATALOG_VERSION_ATTRIBUTE_KEY</key>
<string>Online</string>
<key>USE_CACHE_ATTRIBUTE_KEY</key>
<string>true</string>
<key>CURRENT_STORE_ATTRIBUTE_KEY</key>
<string>electronics</string>
<key>CURRENT_CATALOG_ATTRIBUTE_KEY</key>
<string>electronicsProductCatalog</string>
<key>REST_URL_ATTRIBUTE_KEY</key>
<string>rest/v2</string>
<key>CURRENT_ROOT_CATEGORY_KEY</key>
<string>1</string>
<key>YULM00574455A</key>
<string>empty</string>
</dict>
<key>Debug</key>
<dict>
<key>HOST_ATTRIBUTE_KEY</key>
<string>xx.xx.xx.xx</string>
<key>PORT_ATTRIBUTE_KEY</key>
<string>9002</string>
</dict>
<key>Release</key>
<dict>
<key>HOST_ATTRIBUTE_KEY</key>
<string>xx.xx.xx.xx</string>
<key>PORT_ATTRIBUTE_KEY</key>
<string>9002</string>
</dict>
</dict>
</plist>
Я помню, что мне пришлось добавить ключ YULM00574455A, чтобы он работал.