在asp中好像可以使用windows的登录帐号自动登录的asp系统中,但是在java中怎么使用windows NT帐号自动登录系统。
比如我登录了我的windows系统,当我访问我的java应用时,不需要再次登录了,同时能够显示当前用户的信息,如用户名,邮箱,经理名字等。哪位同学能够提供好的解决方案,谢谢
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
你说的这个需要应该是单点登录吧(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操作系统的用户名就可以了吧。。