开发者社区> 问答> 正文

php如何实现获取本地域帐号而不用输入用户名和密码登录网站?

目前有一个需求:用户通过域帐号登录了电脑,打开网站(PHP开发的),不需要用户再次输入用户名和密码,而是直接获取本机的域帐号登录系统。

也就是说网站上的用户帐号和本机的域帐号一致的,只要我登录了电脑,我打开浏览器登录网站时,网站不会提示用户输入账号和密码登录,直接登录网站

PHP能实现这样的功能吗?如果不行的话,有没有其他的技术可以支持?比如java, python, c之类的

我也了解过,php有个ladp的扩展,但是这个扩展还是需要接收用户名和密码

现在有些OA系统实现了这样的功能,又是怎么做到的呢?

展开
收起
落地花开啦 2016-06-16 11:03:11 4493 0
1 条回答
写回答
取消 提交回答
  • 喜欢技术,喜欢努力的人

    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的权限非常低,不在浏览器上装点啥,能做的就上面三种了。

    2019-07-17 19:40:33
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
阿里云栖开发者沙龙PHP技术专场-直面PHP微服务架构挑战-高驰涛 立即下载
PHP安全开发:从白帽角度做安全 立即下载
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载