Linux 环境中的 Kerberos 身份验证 NGINX 返回 403 未授权



我正在尝试在Ubuntu(18.04(上设置一个nginx服务器(1.19.0(,该服务器使用当前版本的spnego-http-auth-nginx-module

我成功地用 spnego 模块构建了 nginx,它在没有启用auth_gss的情况下按预期工作。

我按照农发基金的分支中所述设置了我的密钥表文件。

使用此密钥表文件,当我运行命令时

kinit -5 -V -k -t /usr/local/nginx/krb5.keytab HTTP/deneme.aaa.com

我已成功收到消息

Using default cache: /tmp/krb5cc_1000
Using principal: HTTP/deneme.aaa.com@DOMAIN.COM.TR
Using keytab: krb5.keytab
Authenticated to Kerberos v5

和 klist -k krb5.keytab 命令显示

Keytab name: FILE:krb5.keytab
KVNO Principal
---- --------------------------------------------------------------------------
4 host/deneme.aaa.com@DOMAIN.COM.TR
6 HTTP/deneme.aaa.com@DOMAIN.COM.TR
user  root root;                                             
worker_processes  1;                                         

#pid        logs/nginx.pid;                                  

events {                                                     
worker_connections  1024;                                
}                                                            

http {                                                       
include       mime.types;                                
default_type  application/octet-stream;                  

sendfile        on;                                      

# HTTPS server                                           
#                                                        
server {                                                 
listen       443 ssl;                                
server_name  deneme.aaa.com;              

ssl_certificate      /home/user/public.crt;  
ssl_certificate_key  /home/user/private.rsa; 

ssl_session_cache    shared:SSL:1m;                  
ssl_session_timeout  5m;                             

location / {                                         
root   html;                                     
index  index.html index.htm;                     
auth_gss on;                                     
auth_gss_allow_basic_fallback off;               
}                                                    
}                                                        
}                                                            

使用上面的配置,当我点击页面 https://deneme.aaa.com 时,我收到 403 未经授权的错误,没有任何登录提示。日志/错误.log中没有日志。在访问中.log

192.168.106.1 - - [24/Jun/2020:11:26:29 +0300] "GET / HTTP/1.1" 401 581 "-" "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36"
192.168.106.1 - - [24/Jun/2020:11:26:29 +0300] "GET / HTTP/1.1" 403 555 "-" "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36"

当我制作

auth_gss_allow_basic_fallback on;      

出现登录提示,使用正确的凭据,我可以访问索引页,但这是因为基本身份验证有效。

当我从浏览器点击页面并在客户端计算机上运行 klist 时,我可以看到 Kerberos 票证已发出。

可能是什么原因?我应该使用旧版本的nginx吗?

亲切问候

密钥表文件包括使用AES256-SHA1加密创建的主体。但是,我忘了选中活动目录用户和计算机中的此帐户支持kerberos aes256位加密复选框。因此,客户试图将RC4-HMAC加密的Kerberos票证发送到NGINX。

选中此选项解决了问题。

希望这有帮助。

最新更新