Mobilefirst 平台与 NETIQ IDAM 的集成

Posted

技术标签:

【中文标题】Mobilefirst 平台与 NETIQ IDAM 的集成【英文标题】:integration of Mobilefirst Platform with NETIQ IDAM 【发布时间】:2018-04-27 10:37:16 【问题描述】:

我尝试通过 NetIq 在 IDAM-LDAP 上验证移动用户。但为此我们需要一些服务或机制,我们可以在其中验证直接发送我们的用户名和密码,并将由 NetIq 通过 LDAP 进行验证。

我尝试使用简单的 Java 连接到 LDAP 进行用户身份验证。

使用以下参数

INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); \n 
PROVIDER_URL, "ldap:// IP ADDRESS :10389");
SECURITY_PRINCIPAL, "CN=Testnetiq.O=IBOM_test");
SECURITY_CREDENTIALS, "PASSWORD");

除了我们可以使用哪些参数来成功测试,以便我们可以在java适配器中实现。

package com.wipro.ibm;

import java.util.Properties;

import javax.naming.Context;
import javax.naming.NamingEnumeration;
import javax.naming.directory.InitialDirContext;
import javax.naming.directory.SearchControls;

public class Testing 

    public static void main(String[] args) throws Exception 
    Properties props = new Properties();
    props.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
    props.put(Context.PROVIDER_URL, "ldap:// ldap ip :10389");
    props.put(Context.SECURITY_PRINCIPAL, "CN=Testnetiq.O=IBOM_test");
    props.put(Context.SECURITY_CREDENTIALS, "Wipro@123");

    InitialDirContext context = new InitialDirContext(props);

    SearchControls ctrls = new SearchControls();
    ctrls.setReturningAttributes(new String[]  "givenName", "sn", "memberOf" );
    ctrls.setSearchScope(SearchControls.SUBTREE_SCOPE);

    NamingEnumeration<javax.naming.directory.SearchResult> answers = context.search("o=IBOM_test",
            "(uid=" + "Test123" + ")", ctrls);
    javax.naming.directory.SearchResult result = answers.nextElement();
    String user = result.getNameInNamespace();

    try 
        props = new Properties();
        props.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
        props.put(Context.PROVIDER_URL, "ldap://ldap ip :10389");
        props.put(Context.SECURITY_PRINCIPAL, user);
        props.put(Context.SECURITY_CREDENTIALS, "Test@123");

        context = new InitialDirContext(props);
         catch (Exception e) 
            System.out.println("false");
        
        System.out.println("True");
    


【问题讨论】:

您的具体查询是什么?您当前的代码是否失败?或者 LDAP 没有响应?如果您的独立代码有效,那么您也可以在 Java 适配器中实现它。将用户名和密码发送到负载正文中的适配器。 通过使用我们得到的 ablove 代码 ** javax.naming.AuthenticationNotSupportedException: [LDAP: error code 13 - Confidentiality Required] 从独立 Java 代码尝试时,您是否遇到同样的问题?此异常与 MFP 无关。 【参考方案1】:

错误 javax.naming.AuthenticationNotSupportedException: [LDAP: error code 13 - Confidentiality Required 表示您需要使用 TLS/SSL 进行连接,而不是连接到明文端口。

通常是 636 端口,但在你的情况下它可能是 10636,因为你的非加密端口是 10389。

【讨论】:

在通过 636 连接之前是否有任何其他方法可以检查它? 通过 636 prt 连接时出现连接关闭错误。你能分享一些独立的方法来检查功能吗? 尝试连接10636端口。否则请询问IDM系统管理员使用哪个端口以及是否在防火墙中打开。您可以尝试下载 Apache Directory Studio LDAP Browser 并尝试与之连接。 感谢您推荐 Apache Studio 浏览器,但如何在 java 程序中连接。 发布当您尝试使用您的代码连接到端口 636 和端口 10636 时获得的堆栈跟踪。您可能需要添加 props.put(Context.SECURITY_PROTOCOL, "ssl");

以上是关于Mobilefirst 平台与 NETIQ IDAM 的集成的主要内容,如果未能解决你的问题,请参考以下文章

403禁止错误mobilefirst平台

Mobilefirst 平台处理客户端事件

Cordova Mobilefirst Android 平台无法导出登录 APK 二进制文件

MobileFirst 可以用于 Web 应用程序吗

推送通知在 mobilefirst 平台 7.1 服务器上不起作用

如何避免自启动 API 调用 Mobilefirst 平台服务器 V7.1