Фиксация сеанса и токена в IBM MobileFirst Platform 7.1

#security #ibm-mobilefirst

#Безопасность #ibm-mobilefirst

Вопрос:

Мы разрабатываем гибридное приложение на базе cordova с использованием MFP 7.1 Было замечено, что приложение использует идентификатор клиента в качестве идентификатора сеанса. Как показано в красном поле

Идентификатор клиента Было обнаружено, что идентификатор клиента не будет изменен до переустановки приложения. Всякий раз, когда пользователь входит в систему на устройстве, его идентификатор будет связан с идентификатором клиента. С помощью идентификатора клиента он может получить другой идентификатор WL-Instance-ID с сервера приложений. С действительным идентификатором клиента и идентификатором экземпляра WL злоумышленник сможет получить доступ к приложению с правами пользователя-жертвы.

Как отделить идентификатор клиента и идентификатор сеанса? т. Е. Не должно быть возможности получить действительный идентификатор сеанса / токен только по идентификатору клиента. И идентификатор сеанса / токен должны быть изменены во время изменения контекста безопасности.

Мы следуем инструкциям здесь для реализации аутентификации https://mobilefirstplatform.ibmcloud.com/tutorials/en/foundation/7.1/authentication-security/custom-authentication/

  • Создайте mobileSecurityTest для защиты процедур адаптера; это в разделе SecurityTests.

    <mobileSecurityTest name="LoginAdapter-securityTest">
    <testUser realm="LoginAdapterRealm" />
    <testDeviceId provisioningType="none" />
    <testDirectUpdate mode="disabled"/>
    </mobileSecurityTest>

  • Используйте AdapterAuthenticator для обработки идентификатора пользователя и определите два метода LoginAdapter.onAuthRequired, LoginAdapter.onLogout в LoginAdapter для обработки запроса безопасности.

    <realm loginModule="LoginAdapterModule" name="LoginAdapterRealm">
    <className>com.worklight.integration.auth.AdapterAuthenticator</className>
    <parameter name="login-function" value="LoginAdapter.onAuthRequired" />
    <parameter name="logout-function" value="LoginAdapter.onLogout" />
    </realm>

  • Определите модуль для создания и хранения идентификаторов пользователей, который используется LoginAdapterRealm; он находится в разделе LoginModules.

    <loginModule name="LoginAdapterModule" expirationInSeconds="1800">
    <className>com.worklight.core.auth.ext.NonValidatingLoginModule</className>
    </loginModule>

Комментарии:

1. Не могли бы вы указать, к чему привязан сеанс пользователя? Связано ли это с X_WL_ClientId или X-WL-Session или с обоими?

2. @Juxhin Я еще не проверил X-WL-Session заголовок. Единственное, что я знаю, это то, что идентификатор клиента не представляет сеансы пользователя, но его можно использовать для ссылки на текущий активный сеанс. Таким образом, если у злоумышленника есть идентификатор клиента и на том же устройстве доступен сеанс, он / она может получить доступ к проверенным процедурам.