0

У нас есть адаптер MobileFirst с тестом безопасности wl_unprotected, чтобы использовать его из бэкэнд-процесса.Как защитить адаптер MobileFirst для бэкэнд-процесса?

Мы применили следующие решения для защиты его вызова через нормальный URL

  • Security Team Restricted URL, который будет вызван из Outside клиентского приложения.

Есть ли лучшее решение, которое может быть применено для защиты этого адаптера?

ответ

2

В блоге разработчиков Developers Center IBM MobileFirst есть очень хорошая статья о том, как это сделать. Защита процедур адаптера для доступа к бэкэндhttps://developer.ibm.com/mobilefirstplatform/2015/02/04/protect-adapter-backend/

Для получения более подробной информации, пожалуйста, перейдите к статье, но здесь приведено краткое описание статьи.

Для защиты этого адаптера вы можете использовать базовую проверку подлинности HTTP. Обновите authenticationConfig.xml файл с securityTest, области действия и LoginModule, как показано ниже:

authenticationConfig.xml

<securityTests> 
    <!-- your other security tests --> 
    <customSecurityTest name="BackendAccessSecurity"> 
    <test realm="BackendAccessRealm" isInternalUserID="true"/> 
    </customSecurityTest> 
    </securityTests> 

    <realms> 
    <!-- your other realms --> 
    <realm name="BackendAccessRealm" loginModule="BackendAccessLogin"> 
     <className>com.worklight.core.auth.ext.BasicAuthenticator</className> 
     <parameter name="basic-realm-name" value="Private"/> 
    </realm> 
    </realms> 
    <loginModules> 
    <!-- your other login modules --> 
    <loginModule name="BackendAccessLogin"> 
     <className>com.sample.auth.ConfiguredIdentityLoginModule</className> 
     <parameter name="username-property" value="backend.username"/> 
     <parameter name="password-property" value="backend.password"/> 
    </loginModule> 
    </loginModules> 

worklight.properties

## 
# Backend access credentials 
## 
backend.username=user 
backend.password=password 

ConfiguredIdentityLoginModule.java

@Override 
    public void init(Map<String, String> options) throws MissingConfigurationOptionException { 
    String usernameProperty = options.remove(USERNAME_PROPERTY_CONF); 
    if (usernameProperty == null) throw new MissingConfigurationOptionException(USERNAME_PROPERTY_CONF); 
    String passwordProperty = options.remove(PASSWORD_PROPERTY_CONF); 
    if (passwordProperty == null) throw new MissingConfigurationOptionException(PASSWORD_PROPERTY_CONF); 
    super.init(options); 

    WorklightConfiguration conf = WorklightConfiguration.getInstance(); 
    configuredUsername = conf.getStringProperty(usernameProperty); 
    configuredPassword = conf.getStringProperty(passwordProperty); 

    if (configuredUsername == null || configuredUsername.length() == 0) { 
     throw new IllegalStateException("ConfiguredIdentityLoginModule cannot resolve property " + usernameProperty + ". Please check project configuration properties."); 
    } 

    if (configuredPassword == null || configuredPassword.length() == 0) { 
     throw new IllegalStateException("ConfiguredIdentityLoginModule cannot resolve property " + usernameProperty + ". Please check project configuration properties."); 
    } 

    } 

    @Override 
    public boolean login(Map<String, Object> authenticationData) { 
    populateCache(authenticationData); 
    return configuredUsername.equals(username) && configuredPassword.equals(password); 
    } 

Наконец, защитить адаптер с BackendAccessSecurity.