可以访问UserAuthenticationSecurityCheck扩展类内部的ConfigurationAPI

问题描述 投票:1回答:1

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

我们正在尝试通过ConfigurationAPI在导入时访问configuartion值在UserAuthenticationSecurityCheck扩展类内部导入com.ibm.mfp.adapter.api.ConfigurationAPI。

但是我们在此过程中得到了空指针异常。我可以通过ConfigurationAPI在java-adapter类内部访问它们,但不能在安全性UserAuthenticationSecurityCheck类内部访问它们。

想访问UserAuthenticationSecurityCheck扩展类内的以下图像属性。

enter image description here

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);
    }
}
ibm-mobilefirst mobilefirst-server
1个回答
0
投票

确实存在一种在适配器的“安全性检查”类型上指定可配置属性的方法,它不同于常规类型的适配器。它记录在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>
© www.soinside.com 2019 - 2024. All rights reserved.