`
hax
  • 浏览: 962953 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Apache与SPNEGO备忘

    博客分类:
  • MISC
阅读更多
过去配置过一次,有很多问题,但是最后似乎搞成了。
最近搞的时候又问题无数。所以还是要做个备忘,以免以后重蹈覆辙。

1. Apache的验证模块:mod_auth_kerb

地址:http://modauthkerb.sourceforge.net/

此模块的问题:

a. 这个模块支持HTTP Negotiation验证(即SPNEGO),但是不支持NTLM只支持Kerberos。而IE似乎在某种情况下会返回NTLM,所以自动的Negotiation验证就会失败(此问题待考)。FF完全按照config所设的来,所以没有问题。

b. 如果Negotiation失败,可以用HTTP Basic验证。但是Basic验证很不安全,必须和HTTPS结合使用。本模块只支持Basic,不支持其他备选的验证方式。Basic验证也可关闭。

c. 如果失败,可以将验证委托给其他模块,但没有试验过,可能需要自己编程。

d. 错误信息不友好,常让人不明所以。

e. 它仅仅是一个验证模块,并不会记录cookie/session来保持验证信息,所以每次访问都会有一次401。

Solaris另有一个模块也支持Negotiation,与前者稍有不同,没有用过,不述。


2. Linux使用Windows Domain作为Kerberos服务器

a. linux上配置/etc/krb5.conf,通常直接设domain就可以了,会根据DNS自动寻找kdc服务器。

b. 时间要同步。最好将domain controller作为ntp服务器。

c. 测试命令:
kinit
kvno
kdestroy
klist


3. 从Windows Domain中导出Kerberos所需的keytab

a. 在domain中建立一个用户,表示一项服务。

b. 到domain controller上用命令行,使用ktpass.exe导出keytab。

注意:Windows 2003 sp1的ktpass有bug(shit M$),导致导出的keytab密码不对!需改用Windows 2003 sp2的ktpass。

ktpass可将用户映射为一个serviceprincipalname,格式为service/fqdn@DOMAIN。对于mod_auth_kerb来说,默认前缀为HTTP。所以假设domain为EXAMPLE.COM(Domain都是全大写的),site的fqdn为mysite.example.com(域名为小写的,并且必须是完全域名),则princ为:HTTP/mysite.example.com@EXAMPLE.COM。ktpass会自动加Domain。需为该映射设定一个密码,这个密码与用户原密码不同,kvno会做对应增加。type需要设定为KERBEROS_SRV_HST。

c. 在linux上测试该keytab

kinit -k -t keytabfile HTTP/mysite.example.com@EXAMPLE.COM


4. 配置apache的conf文件


5. 验证过程需要对上域名,所以

a. 要使用fqdn,如果是CNAME要使用最后的name。

b. 需要PTR记录,从IP指回fqdn。

c. 如无PTR,或许可以在linux上写上hosts文件,内容为IP对应fqdn。


结论:

确实挺烦。而且灵活性不够,比如我怎样只为内网(hostname不含完整域名后缀)启用kerb,而外网用其他验证模式?设成几个vhost有点太过。Basic不安全。每次都401浪费。

当前目标:找一个纯Java的解决方案,然后最好能很灵活的配置。

可以根据条件(如hostname、port、来源IP、时段等)设定不同的验证方案。
可以顺序发出几个不同的auth候选:

Negotiation
Kerberos
NTLM
Digest
Basic

可以选择其中几种,也可以去掉最后的Digest/Basic改转为form-based验证。


这个理想目前还无法实现(不过也许有商业软件已经实现了)。
6
1
分享到:
评论
2 楼 hax 2008-03-25  
又:CAS(强劲的SSO server)的SPNEGO支持貌似也是基于jcifs-ext的。
1 楼 hax 2008-03-23  
经过最近的研究,有以下几个开源的实现涉及auth。
1. jaaslounge
它提供了符合JAAS架构的多种LoginModule,可直接用于Tomcat等container。它也提供了SSO支持,如在Tomcat下是通过自定义Valve和Realm实现的。SSO实现基于jcifs-ext。
2. jGuard
基于JAAS的验证框架,功能全面。
3. acegi
通用的验证框架,尤其与Spring集成。其架构不依赖JAAS。SSO方面似乎通过jcifs集成了NTLM验证支持。
4. jcifs
提供了NTLM验证支持。
5. jcifs-ext
扩展了jcifs,支持HTTP/SPNEGO,Kerberos,NTLM,Basic验证(相当于Windows集成验证)。但似乎已停止更新,与最新版的jcifs有兼容问题。

我所希望的接近于jcifs-ext + jaaslounge + jGuard。此外对acegi研究不够。

相关推荐

    Apache Kerberos/SPNEGO module-开源

    适用于Apache 1.3.26的GSS-API / SPNEGO身份验证模块; SPNEGO API(请参阅fbopenssl);适用于Apache 1.3和2.0的SPNEGO身份验证模块(请参见mod_spnego)

    spnego配置一键审批

    6. **邮件服务器与域的关系**:邮件服务器应被添加到AD域中,以防止因同一IP地址发送大量邮件而被视为攻击,导致邮箱被锁定。同时,可能需要在IP Ranges中排除禁止的IP,确保邮件正常收发。 7. **NTLM登录**:NT ...

    cas spnego认证方式(即加ad域的windows主机应用免登录)高可用集群方案(目前来看国内第一份资料,本人探索出来的)

    ### cas spnego认证方式高可用集群方案 ...该方案不仅解决了传统CAS集群中的常见问题,还针对SPNEGO认证模式下特有的技术难题提供了详尽的解决思路与实践指南,为企业级应用的安全稳定运行提供有力支持。

    cas-server-support-spnego-3.4.2.jar

    cas3.4用到的jar

    Apache 2.4.37-64位Windows

    6. 身份验证改进:加强了身份验证机制,支持更多认证方法,如SPNEGO、JWT等。 7. URL重写:通过mod_rewrite模块,可以方便地进行URL重写,优化SEO,实现动态URL到静态URL的转换。 8. 兼容性提升:支持最新的HTTP/2...

    Apache cas-server 单点登录

    4. **自定义验证器**:Apache CAS支持多种验证机制,包括LDAP、JDBC、SPNEGO等。你可以根据需求编写自定义的验证器,以灵活处理客户端的登录请求。这可能涉及到编写Java代码并将其打包为一个CAS服务提供者模块。 5....

    apache hbase reference guide pdf

    Apache HBase是Apache Software Foundation旗下一个开源的非关系型分布式数据库(NoSQL),它是Apache Hadoop的数据库,用于存储大规模稀疏数据集。HBase参考指南为开发者提供了一个全面的文档,用于理解和使用HBase...

    spnego-http-auth-nginx-module:适用于Nginx的SPNEGO HTTP身份验证模块

    卷曲7.x(GSS协商),7.x(SPNEGO / fbopenssl) 用于这些测试的底层kerberos库是MIT KRB5 v1.8。 安装 下载 提取到目录 将此模块克隆到目录中 遵循,并将--add-module选项传递给nginx configure: ./configure --...

    mod_spnego:在 Windows 上运行的 Apache HTTP Server 的 Kerberos 身份验证-开源

    mod_spnego 允许使用 Kerberos 对在 Windows 上的 Apache HTTP 服务器 (httpd) 上运行的网站的用户进行身份验证。 然后,经过身份验证的用户在服务器变量 AUTH_USER 中可用。 sourceforge 上仅托管下载,来源位于 ...

    apache-tomcat-8.0

    - **下载与解压**:从Apache官方网站获取"apache-tomcat-8.0.23"压缩包,解压后放入服务器的适当目录。 - **环境变量设置**:配置`CATALINA_HOME`环境变量指向Tomcat的安装目录。 - **修改配置文件**:根据需求...

    apache_hbase_reference_guide-3.0.0-SNAPSHOT

    7. Securing Apache HBase 部分提供了关于如何使用安全机制保护 HBase 的指南,例如使用 HTTPS、Kerberos 和 SPNEGO 进行 Web UI 认证,以及如何保护对 HBase 的访问。 8. Security 部分深入探讨了 HBase 的安全性...

    apache-tomcat-8.0.36

    3. **更好的安全管理**:Tomcat 8增强了安全功能,包括支持SPNEGO(Kerberos)身份验证和改进的SSL/TLS配置,可以更好地保护Web应用免受攻击。 4. **Jasper升级**:Jasper是Tomcat的JSP编译器,8.0版本中进行了优化...

    apache_hbase_reference_guide(官网).pdf

    - **使用SPNEGO进行Kerberos认证**,提供了Web界面与Kerberos结合的详细步骤。 - **HBase客户端安全访问**,包括访问控制列表(ACLs)、安全用户认证和授权等。 ### 6. HBase的架构和高级特性 - **区域服务器...

    apache tomcat9

    4. **更好的安全性**:Tomcat 9 引入了更多的安全特性,如支持SPNEGO(Simple and Protected GSSAPI Negotiation Mechanism)身份验证,以及改进的SFTP和HTTPS配置。 5. **性能优化**:通过优化内存管理和线程池,...

    SPNEGO-开源

    Java 中的集成 Windows 身份验证(单点登录)。

    kerberos:启用KDC和SPNEGO的Nginx

    已启用KDC和SPNEGO的Nginx 先决条件 已在以下环境中进行了测试 kdc:Ubuntu 20.04 Intel + Docker稳定版,kerberos客户端:Ubuntu 20.04 Intel kdc:Ubuntu 20.04 Intel + Docker稳定版,kerberos客户端:Macos ...

    cas-server-support-spnego-4.0.0-RC3.zip

    SPNEGO是用于在HTTP环境中实现Kerberos身份验证的协议,常见于Windows域环境与Java应用的集成。 【描述】中的"artisanal-pickle-maker.zip"则是一个与Scala编程语言相关的项目,描述提到这是一个手工制作斯卡拉...

    hbase详解,apache_hbase_reference_guide

    - 使用SPNEGO进行Kerberos认证。 - 为Apache HBase配置安全客户端访问。 - 简单用户对HBase的访问。 - 对HDFS和ZooKeeper访问的安全配置。 综上所述,《Apache HBase Reference Guide》覆盖了HBase从安装、配置到...

Global site tag (gtag.js) - Google Analytics