#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
заголовок. Единственное, что я знаю, это то, что идентификатор клиента не представляет сеансы пользователя, но его можно использовать для ссылки на текущий активный сеанс. Таким образом, если у злоумышленника есть идентификатор клиента и на том же устройстве доступен сеанс, он / она может получить доступ к проверенным процедурам.