【问题标题】:Kerberos Authentication NGINX in Linux Environment returns 403 UnauthorizedLinux 环境中的 Kerberos 身份验证 NGINX 返回 403 Unauthorized
【发布时间】:2020-06-24 08:42:53
【问题描述】:

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

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

我按照ifad's fork 中的说明设置了我的密钥表文件。

使用这个 keytab 文件,当我运行命令时

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未经授权的错误,没有任何登录提示。 logs/error.log 中没有日志。在access.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 吗?

亲切的问候

【问题讨论】:

    标签: nginx kerberos http-status-code-403 spnego


    【解决方案1】:

    Keytab 文件包含使用 AES256-SHA1 加密创建的主体。但是我忘记勾选 Active Directory 用户和计算机中的 此帐户支持 kerberos aes256 位加密 复选框。因此,客户试图将 RC4-HMAC 加密的 Kerberos 票证发送到 NGINX。

    选中此选项解决了问题。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2012-01-28
      • 1970-01-01
      • 1970-01-01
      • 2015-06-22
      • 2018-09-09
      • 1970-01-01
      • 1970-01-01
      • 2010-09-28
      相关资源
      最近更新 更多