Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 以编程方式验证用户_Java_Lotus Domino - Fatal编程技术网

Java 以编程方式验证用户

Java 以编程方式验证用户,java,lotus-domino,Java,Lotus Domino,我有一个类似Domino登录表单的servlet。通过目录协助对LDAP进行身份验证 服务器首先检查密码是否过期。如果未过期,则继续验证用户。然后,验证过程从servlet开始,通过发送模仿Domino默认登录页面的HTML,代码如下。它不是很安全 Java中是否有一个Domino方法,我可以调用它从servlet中验证用户 我想写一篇文章,但不确定这是否安全 有什么想法吗 private void logUserIntoNotes(HttpServletResponse response

我有一个类似Domino登录表单的servlet。通过目录协助对LDAP进行身份验证

服务器首先检查密码是否过期。如果未过期,则继续验证用户。然后,验证过程从servlet开始,通过发送模仿Domino默认登录页面的HTML,代码如下。它不是很安全

Java中是否有一个Domino方法,我可以调用它从servlet中验证用户

我想写一篇文章,但不确定这是否安全

有什么想法吗

   private void logUserIntoNotes(HttpServletResponse response) throws IOException
   {
    String action = "/names.nsf?Login";

    System.out.println("Action=" + action);
    System.out.println("Username=" + username);
    //System.out.println("Password=" + password);
    System.out.println("RedirectTo=" + redirectTo);


    response.setContentType("text/html");

    ServletOutputStream out = response.getOutputStream();
    out.println("<html><head><title>Login Page</title></head><body>");
    out.println("Logging in. Please wait ...");
    out.println("<form method=\"post\" name=\"login\" action=\"" + action + "\">");
    out.println("<input type=\"hidden\" name=\"Username\" value=\"" + username + "\">");
    out.println("<input type=\"hidden\" name=\"Password\" value=\"" + password + "\">");
    out.println("<input type=\"hidden\" name=\"RedirectTo\" value=\"" + redirectTo + "\">");
    out.println("</form>");
    out.println("<SCRIPT LANGUAGE=\"JavaScript\"> document.forms[\"login\"].submit(); </SCRIPT>");
    out.println("</body></html>");
}
private void LogUserInNotes(HttpServletResponse响应)引发IOException
{
String action=“/names.nsf?Login”;
System.out.println(“Action=“+Action”);
System.out.println(“用户名=”+用户名);
//System.out.println(“Password=“+Password”);
System.out.println(“RedirectTo=“+RedirectTo”);
response.setContentType(“text/html”);
ServletOutputStream out=response.getOutputStream();
out.println(“登录页面”);
out.println(“登录,请稍候…”);
out.println(“”);
out.println(“”);
out.println(“”);
out.println(“”);
out.println(“”);
out.println(“document.forms[\“login\”].submit();”;
out.println(“”);
}

我将从servlet开始。我想你要找的是servlet。它提供了许多在服务器上启动用户身份验证会话的方法。我一直在用它。有关Java中Domino对象的更多详细信息,还包括身份验证。尽管已经有几年的历史了,JavaAPI仍然是相关的

在我的servlet中工作的快速代码片段

        NotesThread.sinitThread();
        try {
            session = NotesFactory.createSession("", sUsr, sPwd);
        } catch(NotesException ne) {
            // invalid username/password or something else horrible happened.
            NotesThread.stermThread();
            if (ne.id!=4486){
                System.out.println("Notes Error:" + ne.id);
                ne.printStackTrace();   
            }


        }

但您的问题是,您需要将凭据安全地发送到服务器。您可以使用SSL,然后添加(SSL加密头),并使用从servlet中提取值。如果您不想复制默认的Domino头名称,则不需要复制,因为您有一个servlet处理数据。您可以做任何您想做的事情,而不必特别需要复制Domino中的默认登录表单。

您能解释一下为什么要这样做吗?为什么用户不以正常方式登录Domino服务器?@Richard。这是一个合理的问题,但是一旦涉及servlet,任何事情都可能发生。@Bruce,你说你检查密码是否过期了。这意味着您已经在使用某种身份验证。很抱歉没能早点回来@Richard,我不只是登录的原因是我首先需要检查PW是否过期。这就是servlet正在做的事情。Domino将继续让您登录,直到所有grace登录过期。@giulo。用户存储在LDAP服务器上。正在使用Domino目录服务在LDAP中对用户进行身份验证。有没有示例说明如何进行身份验证?我必须承认,may java技能并没有那么强,Domino Designer帮助文件中有许多示例将详细介绍CreateSession方法。我在回答中添加了一个代码snioppet