Ibm mobilefirst 是否有可能在UserAuthenticationSecurityCheck扩展类中访问ConfigurationAPI

Ibm mobilefirst 是否有可能在UserAuthenticationSecurityCheck扩展类中访问ConfigurationAPI,ibm-mobilefirst,mobilefirst-server,Ibm Mobilefirst,Mobilefirst Server,adapter UserAuthenticationSecurityCheck,我们在securityCheckDefinition之外的adapter.xml文件中引入了一些属性。我可以在mfp控制台的适配器->配置选项卡中配置它 我们正在尝试通过导入的ConfigurationAPI访问配置值 在UserAuthenticationSecurityCheck扩展类内导入com.ibm.mfp.adapter.api.ConfigurationAPI 但是在这个过程中我们得到了一个空指针异常。

adapter UserAuthenticationSecurityCheck,我们在securityCheckDefinition之外的adapter.xml文件中引入了一些属性。我可以在mfp控制台的适配器->配置选项卡中配置它

我们正在尝试通过导入的ConfigurationAPI访问配置值 在UserAuthenticationSecurityCheck扩展类内导入com.ibm.mfp.adapter.api.ConfigurationAPI

但是在这个过程中我们得到了一个空指针异常。我可以通过ConfigurationAPI在java适配器类中访问它们,但不能在security UserAuthenticationSecurityCheck类中访问它们

想要访问UserAuthenticationSecurityCheck扩展类中的以下图像属性

公共类userSecurityCheck扩展了UserAuthenticationSecurityCheck{
@上下文
配置API配置API;
@凌驾
受保护的布尔validateCredentials(映射凭据){
字符串instancename=credentials.get(“instancename”).toString();
//java空指针异常发生在下一行
字符串httpUrl=configurationAPI.getPropertyValue(instancename);
}
}

确实有一种方法可以指定适配器“安全检查”风格的可配置属性,它与常规类型的适配器不同。这是有案可查的。我已经验证了这种方法的有效性。文档中省略了一些关键元素,如包名,因此下面是非常简单的示例代码:

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);
  }
}
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>


听起来您真正想要的是一个扩展点,用于扩展UserAuthenticationSecurityCheck中的可配置元素。这是一个公平的描述吗?我不知道MFP是否支持子类化这些对象。不过我会尽力帮你找出答案。@JohnGerken请查看更新后的问题
<securityCheckDefinition name="UserLogin" class="com.xyz.UserAuth">
    <property name="test_property" displayName="Test Property Auth" defaultValue="foo_default_in_xml"  />
</securityCheckDefinition>