Аутентичность Worklight

Мы разрабатываем гибридное приложение для Worklight, и нам необходимо реализовать аутентификацию приложения. Мы используем Worklight Enterprise edition 6.2.0.1 с центром приложений IBM. Тем не менее, мы видим следующую ошибку в журнале сервера при запуске приложения на Android (iOs тоже самое, но предоставит журнал Android).

[1/19/15 15:25:05:388 EST] 00000254 WLNewAuthenti E com.worklight.core.auth.ext.appauth.WLNewAuthenticityScheme isInvalidAndroidParams FWLSE0260E: Отсутствует или пустой packageName для проверки подлинности Android, не может проверить подлинность Android. Если для проверки подлинности приложения не задано значение "Отключено" или "Включено, обслуживание" в Worklight Console, запрос не будет выполнен. [project MobileApp] [19.01.15, 15:25:05:388 EST] 00000254 WLNewAuthenti E com.worklight.core.auth.ext.appauth.WLNewAuthenticityScheme isInvalidAndroidParams FWLSE0260E: Отсутствует или пуста проверка подлинности открытого ключа подписи, андроида, Если для проверки подлинности приложения не задано значение "Отключено" или "Включено, обслуживание" в Worklight Console, запрос не будет выполнен. [проект MobileBanking].

Тест безопасности для authenticationConfig.xml:

<securityTests>
    <mobileSecurityTest name="MobileAppTestMobile">
        <testAppAuthenticity/>
        <testDeviceId provisioningType="auto" />
        <testUser realm="MobileAppRealm" />
        <testDirectUpdate mode="perSession" />
    </mobileSecurityTest>

    <webSecurityTest name="MobileAppTest">
        <testUser realm="MobileAppRealm" />
    </webSecurityTest>
    <customSecurityTest name="SubscribeServlet">
        <test realm="SubscribeServlet" isInternalUserID="true"/>
    </customSecurityTest>           

</securityTests> 

Приложение-descriptor.xml:

<iphone bundleId="ca.company.MobileApp" securityTest="MobileAppTestMobile" version="1.0">
    <worklightSettings include="false"/>
    <security>
        <encryptWebResources enabled="true"/>
        <testWebResourcesChecksum enabled="true" ignoreFileExtensions="png, jpg, jpeg, gif, mp4, mp3"/>
    </security>
</iphone>
<android securityTest="MobileAppTestMobile" version="1.0">
    <worklightSettings include="false"/>
    <security>
        <encryptWebResources enabled="true"/>
        <testWebResourcesChecksum enabled="true" ignoreFileExtensions="png, jpg, jpeg, gif, mp4, mp3"/>
        <publicSigningKey>"We have added our public signing key here by extracting it from our keystore file"</publicSigningKey>
    </security>
</android>

Мы развернули все приложение с нуля после обновления файла WAR. Консоль Worklight отображает три значения для аутентичности "Отключено - Включено, Обслуживание - Включено, Блокировка"

Когда мы ставим "Включено, Блокировка" или "Включено, обслуживание", мы получаем журнал ошибок на сервере, который размещен в верхней части сообщения. На экране приложения появляется сообщение об ошибке "При обработке запроса из приложения произошла ошибка".

Пожалуйста, порекомендуйте. Спасибо

2 ответа

Решение

Проблема была исправлена.

Решение:

1- мы изменили MobileSecurityTest в authenticationConfig.xml, чтобы он был customSecurityTest, как показано ниже, и повторно развернули файл WAR:

<customSecurityTest name="MobileSecurityTest">
        <test realm="wl_antiXSRFRealm" step="1"/>
        <test realm="wl_authenticityRealm" step="1"/>
        <test realm="wl_remoteDisableRealm" step="1"/>
        <test realm="wl_directUpdateRealm" mode="perSession" step="1"/>
        <test realm="wl_anonymousUserRealm" isInternalUserID="true" step="1"/>
        <test realm="wl_deviceNoProvisioningRealm" isInternalDeviceID="true" step="2"/>
    </customSecurityTest>

2- В application-descriptor.xml:

Для андроида я использовал то, что сказал Идан о добавлении <packageName> имущество.

<android securityTest="MobileSecurityTest" version="1.0">
    <worklightSettings include="false"/>
    <security>
        <encryptWebResources enabled="true"/>
        <testWebResourcesChecksum enabled="true" ignoreFileExtensions="png, jpg, jpeg, gif, mp4, mp3"/>
        <publicSigningKey>"Our public signing Key placed here"</publicSigningKey>
        <packageName>ca.company.MobileTest</packageName>
    </security>
</android>

Для iOS проблема была в applicationId, мы думали, что значение applicationId является последним разделом bundleId,

Например: если bundleId - это "com.company.Myapp", это означает, что applicationaiotnId - это "Myapp", что неверно.

Это неверное определение:

<iphone bundleId="ca.company.MobileTestiPhone" applicationId="MobileTestiPhone" securityTest="MobileSecurityTest" version="1.0" >

ApplicationId - это значение в файле worklight.plist, который находится внутри собственной папки iPhone или iPad, и этот файл создается после выполнения сборки. И для нашего приложения это имеет совершенно другое значение.

Правильный был:

<iphone bundleId="ca.company.MobileTestiPhone" applicationId="MobileTest" securityTest="MobileSecurityTest" version="1.0" >

Вот почему приложение блокировалось с нашего сервера WL, когда мы установили значение аутентификации приложения "Включить, блокировка".

Спасибо @Idan за вашу помощь.

Согласно сообщению об ошибке, вам не хватает имени пакета Android (в application-descriptor.xml).

Это учебник по аутентичности для гибридных приложений для v6.3, но то же самое для 6.2. Из инструкции Android:

Возьмите значение имени пакета приложения из атрибута пакета узла манифеста в AndroidManifest.xml. Если вы решите изменить значение на другое, убедитесь, что вы изменили его в обоих местах. Вы также можете напрямую отредактировать application-descriptor.xml и добавить packageName:

<android version="1.0">
        <worklightSettings include="false"/>
        <security>
            <encryptWebResources enabled="false"/>
            <testWebResourcesChecksum enabled="false" ignoreFileExtensions="png, jpg, jpeg, gif, mp4, mp3"/>
            <publicSigningKey>MIGff ...</publicSigningKey>
            <packageName>com.MyBankApp</packageName>
        </security>
</android>
Другие вопросы по тегам