0

wl_unprotectedバックエンド・プロセスから使用するためのセキュリティー・テストを備えた MobileFirst アダプターがあります。

通常の URL からの呼び出しを保護するために、次のソリューションを適用しました。

  • セキュリティ チーム 外部クライアント アプリケーションから呼び出されるように制限された URL。

このアダプターを保護するために適用できるより良い解決策はありますか?

4

1 に答える 1

2

その方法について、IBM MobileFirst Platform Developers Center ブログに非常に優れた記事があります。バックエンド アクセス用の保護アダプター手順 https://developer.ibm.com/mobilefirstplatform/2015/02/04/protect-adapter-backend/

詳しくは記事をご覧くださいが、記事のまとめはこちら。

基本 HTTP 認証を使用して、そのアダプターを保護できます。以下に示すように、authenticationConfig.xmlファイルをsecurityTestrealm、および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

構成済みIdentityLoginModule.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

于 2015-02-25T17:32:53.560 に答える