设为首页 收藏本站
查看: 1032|回复: 0

[经验分享] Apache与SPNEGO备忘

[复制链接]

尚未签到

发表于 2017-1-3 06:01:35 | 显示全部楼层 |阅读模式
过去配置过一次,有很多问题,但是最后似乎搞成了。
最近搞的时候又问题无数。所以还是要做个备忘,以免以后重蹈覆辙。

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验证。


这个理想目前还无法实现(不过也许有商业软件已经实现了)。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-322869-1-1.html 上篇帖子: Apache Jakarta Common Lang应用 下篇帖子: 开始研究Apache CXF
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表