目前有一个需求:用户通过域帐号登录了电脑,打开网站(PHP开发的),不需要用户再次输入用户名和密码,而是直接获取本机的域帐号登录系统。
也就是说网站上的用户帐号和本机的域帐号一致的,只要我登录了电脑,我打开浏览器登录网站时,网站不会提示用户输入账号和密码登录,直接登录网站
PHP能实现这样的功能吗?如果不行的话,有没有其他的技术可以支持?比如java, python, c之类的
我也了解过,php有个ladp的扩展,但是这个扩展还是需要接收用户名和密码
现在有些OA系统实现了这样的功能,又是怎么做到的呢?
LDAP扩展跟MySQL扩展一样,本质上是从后端存储系统读取用户名和密码的,只不过它的速度特别快。你的问题关键在浏览器端,如何向服务器端提交一个身份证明(代替客户手工输入用户名和密码)。
这个身份证明可以是:
1。URL中的随机串(或者HEADER中也行),这就是前面@JohnLui 的解决方案了。你可以理解为一个有效期非常长的Session ID。在某些网站的WAP版,就是这么干的,如以前的kaixin001.com,因为那个年代手机浏览器的Cookie经常不靠谱,而手机私密性较好,所以采用这种方式。
2。$_SERVER['REMOTE_ADDR'],如果你们内网的IP是固定的,且对安全要求不是特别高,可以用这种方式临时顶一顶,取到客户端IP之后,去IP-员工对应表里查一下员工名,然后赋予此员工已登录的状态。
3.$_SERVER['REMOTE_ADDR'] + LDAP Log,或者Active Directory Log。如果你们的员工电脑都必须通过域账号才能登录,那么,取到客户端IP之后,去LDAP/AD的日志里查一下,刚刚从这个IP登录的是哪个员工。由于他在操作系统桌面登录时已经通过了域账号验证,所以这种方法比上面那种安全很多。
B/S架构编程限制了,你只能通过$_GET, $_POST, $_SERVER等变量向服务器端提交身份证明(说白了,你绕不过HTTP),而浏览器里JS的权限非常低,不在浏览器上装点啥,能做的就上面三种了。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。