找回密码
 立即注册

QQ登录

只需一步,快速开始

RRD_GCDN

中级会员

46

主题

133

帖子

675

积分

中级会员

积分
675
RRD_GCDN
中级会员   /  发表于:2021-6-7 10:37  /   查看:2556  /  回复:7
1金币
我有一个将内网站点通过反向代理发布到外网的需求。目前已经已经有了固定的公网IP及域名,并且在反向代理服务器中已经完成了配置。目前已经能通过公网域访问内部的站点,但是目前的问题是对于公开的站点访问没有任何问题,但是对于一些通过AD验证登录的系统,通过外网的域名打开时,会提示输入帐号和密码,但是无论怎么输入都提示不对,不知道哪里还需要做什么样的配置?请教给个方法,感谢!


附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

最佳答案

查看完整内容

已电话沟通, 问题跟踪: 通过Nginx进行反向代理,反向代理服务器在DMZ区中, 需要先和网络工程师进一步沟通具体的实现方式,DMZ区的服务器是否能通过AD认证,Nginx通过AD认证的可行性,后续根据具体的实现方式提供相关支持。

7 个回复

倒序浏览
最佳答案
最佳答案
Chelsey.Wang讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:2021-6-7 10:37:28
来自 4#
已电话沟通,
问题跟踪:
通过Nginx进行反向代理,反向代理服务器在DMZ区中,
需要先和网络工程师进一步沟通具体的实现方式,DMZ区的服务器是否能通过AD认证,Nginx通过AD认证的可行性,后续根据具体的实现方式提供相关支持。
回复 使用道具 举报
Joe.xu讲师达人认证 悬赏达人认证 活字格认证
超级版主   /  发表于:2021-6-7 11:38:56
2#
您好,域认证是指当前的访问者要跟访问的服务器在同一个域内,才能拿到当前用户的信息并加以验证,反向代理之后网络改变了,所以域认证就用不了,这是网络层面的问题,我们也不是特别懂,您可以咨询一下您们公司的网络相关人员哦
回复 使用道具 举报
RRD_GCDN
中级会员   /  发表于:2021-6-7 12:38:40
3#
能方便电话咨询一下吗?因为有一些详细的信息需要了解一下,谢谢!
回复 使用道具 举报
RRD_GCDN
中级会员   /  发表于:2021-6-10 09:41:24
5#
该问题目前已经通过对Nginx的配置解决,并已经实现通过反代完成域身份验证。我稍后会把相关的操作方法贴出来,谢谢支持!
回复 使用道具 举报
Tracy.Liu讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:2021-6-10 09:53:17
6#
RRD_GCDN 发表于 2021-6-10 09:41
该问题目前已经通过对Nginx的配置解决,并已经实现通过反代完成域身份验证。我稍后会把相关的操作方法贴出 ...


太厉害啦~~~期待大佬的分享
回复 使用道具 举报
RRD_GCDN
中级会员   /  发表于:2021-6-10 15:22:23
8#
问题背景:此次需求是由于公司需要将一些应用通过Internet进行访问,但是这些应用都是基于活字格的AD认证开发的(都运行于内网),也就是说用户需要在Internet环境下需要通过域认证实现系统登录。后续可能会有多个应用将运行于Internet之上,但这些系统需要都统一实现AD认证,基于该需求我采用的Nginx反向代理服务器将内网应用映射到Internet环境(其中内网反代IP与公网IP已经通过NAT实现地址及端口映射),并已经通过公网域名可以访问到内网的匿名网站及活字格的普通用户认证网站。

问题现象:对于AD认证的网站,可以通过公网域名去访问,但是访问时始终提示需要输入帐号和密码,但是无论如何输入帐号和密码都会不断的提示输入无法进入系统,由于有较多的业务应用后续需要使用该方案,所以该问题对后续能不能使用活字格开发相关系统有非常关键的作用。

问题分析:从这个问题的现象分析,感觉是帐号没有传递到KDC服务器去认证,完全没有解决问题的思路(活字格技术支持提供的信息,WEB站点的AD认证流程是活字格服务器从用户端获取认证信息后,将该认证信息转发到AD服务器去认证,完成认证后即可完成访问,这个信息给了很大的启发和帮助,非常感谢技术支持。)。

后来通过Linux下访问AD验证的站点时看到了如下两个信息,就想到了使用AD验证的站点都会使用Negotiate及NTLM两种方式(这两种方式,熟悉AD的应该都会比较清楚),如果当Negotiate不可用时,会自动使用NTLM的方式,即输入用户名和密码的方式。这个原理我说的可能也不清楚,如果需要了解详细原理的,还是查看原始文档吧,这个文档写的不错。(链接:https://support.citrix.com/article/CTX221693



解决方案:因为采用的是Nginx进行反向代理,所以根据以上思路在Google上找了一大堆Nginx与NTLM验证的相关文档,最终查找到如果需要在Nginx进行NTLM验证信息的转发,需要单独安装该验证模块并进行配置。所以立即动手安装,详细操作如下:

1.Nginx NTLM模块安装 (如果Nginx是通过Yum方式安装的,则可以直接按照如下操作进行,如果是单独下载的nginx安装包进行安装的,关于模块的安装部分自行百度一下).
(1)通过如下命令查看当前Nginx的版本
     /usr/sbin/nginx -v
(2)下载与原始安装版本相同的Nginx源码包文件,并将期解压到当前用户目录中。
     tar -zxvf nginx-1.20.1.tar.gz

(3)下载NTLM模块,下载当前用户目录中
     git clone https://github.com/gabihodoroaga/nginx-ntlm-module.git
(4)进入Nginx源码包目录中,执行编译该模块
     ./configure  --add-module=../nginx-ntlm-module
(5)编译完成后进行模板的安装,执行如下命令
     make install

2.打开Nginx的配置文件后,完成如下配置。
(1)在HTTP区域做如下配置:
     upstream http_backend {
                        server 活字格服务器地址;
                        ntlm;
     }
(2)在Server区域如下配置:
    server {
                listen 443 ssl;
                server_name 公网域名或IP;
                ssl_certificate  SSL证书文件;
                ssl_certificate_key SSL证书KEY;       
                location /应用名称/ {
                        proxy_pass http://http_backend;
                        proxy_http_version 1.1;
                        proxy_set_header Connection "";
                }
      }


以上完成后重启Nginx服务,就可以直接在Internet环境中输入AD帐号进行认证并正常登录应用系统了。 以上此次问题的解决方法,希望能给大家提供个方法。如果各位有好的方案或方法也可以提供给我参考或指导,感谢!

评分

参与人数 2金币 +1332 收起 理由
Erik.Xue + 666 朱工厉害啊!
Joe.xu + 666 很给力!

查看全部评分

回复 使用道具 举报
Joe.xu讲师达人认证 悬赏达人认证 活字格认证
超级版主   /  发表于:2021-6-10 16:05:59
9#
感谢大佬的分享
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部