wl_unprotected
バックエンド・プロセスから使用するためのセキュリティー・テストを備えた MobileFirst アダプターがあります。
通常の URL からの呼び出しを保護するために、次のソリューションを適用しました。
- セキュリティ チーム 外部クライアント アプリケーションから呼び出されるように制限された URL。
このアダプターを保護するために適用できるより良い解決策はありますか?
wl_unprotected
バックエンド・プロセスから使用するためのセキュリティー・テストを備えた MobileFirst アダプターがあります。
通常の URL からの呼び出しを保護するために、次のソリューションを適用しました。
このアダプターを保護するために適用できるより良い解決策はありますか?
その方法について、IBM MobileFirst Platform Developers Center ブログに非常に優れた記事があります。バックエンド アクセス用の保護アダプター手順 https://developer.ibm.com/mobilefirstplatform/2015/02/04/protect-adapter-backend/
詳しくは記事をご覧くださいが、記事のまとめはこちら。
基本 HTTP 認証を使用して、そのアダプターを保護できます。以下に示すように、authenticationConfig.xml
ファイルをsecurityTest、realm、および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
。