开发者社区> 问答> 正文

在Java系统中,怎么使用Windows的登录帐号密码自动登录:报错

在asp中好像可以使用windows的登录帐号自动登录的asp系统中,但是在java中怎么使用windows NT帐号自动登录系统。

比如我登录了我的windows系统,当我访问我的java应用时,不需要再次登录了,同时能够显示当前用户的信息,如用户名,邮箱,经理名字等。哪位同学能够提供好的解决方案,谢谢

展开
收起
kun坤 2020-06-06 14:15:49 1146 0
1 条回答
写回答
取消 提交回答
  • 你说的这个需要应该是单点登录吧(SSO)。ASP本身就是微软的,使用Windows账户验证肯定是可以的,但是Java就很麻烦,你得启用AD服务,并且连接到LDAP服务器验证。

    至于密码要输入的问题,很显然,Java不可能直接得到操作系统的用户密码,如果能的话,那Windows的还有什么安全性可言。

    给你一段Java代码参考一下:

    import java.util.Hashtable;
    import javax.naming.Context;
    import javax.naming.NamingException;
    import javax.naming.directory.DirContext;
    import javax.naming.directory.InitialDirContext;
    
    public class LDAP {
    	public static final String AD_SERVER_DOMAIN = "MSHOME";
    
    	// 使用LDAP验证密码
    	public static void main(String[] args) {
    		String userName = "user"; // 用户名称
    		String passwd = "123456"; //密码
    		String host = "192.168.1.122"; // AD服务器
    		String port = "389"; // 端口
    		String domain = "@osc.net"; // 邮箱的后缀名
    		String url = new String("ldap://" + host + ":" + port);
    		String user = userName.indexOf(domain) > 0 ? userName : userName + domain;
    		Hashtable<String, String> env = new Hashtable<String, String>();
    		DirContext ctx = null;
    		env.put(Context.SECURITY_AUTHENTICATION, "simple");
    		env.put(Context.SECURITY_PRINCIPAL, user);
    		if ("".equals(passwd.trim())) {
    			passwd = null;
    			System.out.println("密码不能为空!!");
    		}
    		env.put(Context.SECURITY_CREDENTIALS, passwd);
    		env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); // LDAP工厂类
    		env.put(Context.PROVIDER_URL, url);
    		try {
    			ctx = new InitialDirContext(env);
    			ctx.close();
    			System.out.println("验证成功!!");
    		}
    		catch (NamingException e) {
    			e.printStackTrace();
    			System.out.print("验证失败!!");
    		}
    	}
    }

    ######谢谢你的回答,您说的非常的对,但是项目的需求是希望不要再次登录。所以我一直在研究在java环境下是否也有这种可能######我现在的疑问是 你既然已经登陆系统了 那java就不用判断了呀######对,只需要判断windows操作系统的用户名就可以了吧。。
    2020-06-06 14:15:55
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载