adapter UserAuthenticationSecurityCheck,我们在securityCheckDefinition之外的adapter.xml文件中引入了一些属性。我可以在mfp控制台的“适配器”->“配置”选项卡中进行配置。
我们正在尝试通过ConfigurationAPI在导入时访问configuartion值在UserAuthenticationSecurityCheck扩展类内部导入com.ibm.mfp.adapter.api.ConfigurationAPI。
但是我们在此过程中得到了空指针异常。我可以通过ConfigurationAPI在java-adapter类内部访问它们,但不能在安全性UserAuthenticationSecurityCheck类内部访问它们。
想访问UserAuthenticationSecurityCheck扩展类内的以下图像属性。
public class userSecurityCheck extends UserAuthenticationSecurityCheck {
@Context
ConfigurationAPI configurationAPI;
@Override
protected boolean validateCredentials(Map<String, Object> credentials){
String instancename = credentials.get("instancename").toString();
// java null pointer exception is happening at the below line
String httpUrl = configurationAPI.getPropertyValue(instancename);
}
}
确实存在一种在适配器的“安全性检查”类型上指定可配置属性的方法,它不同于常规类型的适配器。它记录在here中。我已经证实这种方法有效。该文档省略了一些关键元素,例如包名称,因此下面是一个非常简单的示例代码来演示:
UserAuth.java
:
public class UserAuth extends UserAuthenticationSecurityCheck {
@Override
protected boolean validateCredentials(Map<String, Object> credentials) {
String test_property = ((UserAuthSecurityCheckConfig) this.config).test_property;
LOG.warning("auth test_property=" + test_property);
return true;
}
@Override
public SecurityCheckConfiguration createConfiguration(Properties properties) {
return new UserAuthSecurityCheckConfig(properties);
}
}
UserAuthSecurityCheckConfig.java
:
import java.util.Properties;
import com.ibm.mfp.security.checks.base.UserAuthenticationSecurityCheckConfig;
public class UserAuthSecurityCheckConfig extends UserAuthenticationSecurityCheckConfig {
public String test_property;
public UserAuthSecurityCheckConfig(Properties properties) {
super(properties);
this.test_property = this.getStringProperty("test_property", properties, "defaultValueInCode");
}
}
adapter.xml
:
<securityCheckDefinition name="UserLogin" class="com.xyz.UserAuth">
<property name="test_property" displayName="Test Property Auth" defaultValue="foo_default_in_xml" />
</securityCheckDefinition>