在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操作系统的用户名就可以了吧。。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。