kerberos KDC HTTP代理WSGI模块。
项目描述
欢迎使用kdcdaili!
此包包含一个WSGI模块,用于通过遵循[MS-KKDCP]协议在HTTP上代理KDC请求。它旨在简单部署,配置最小化。
部署kdcdaili
kdcdaili模块遵循标准WSGI协议来部署Python网络应用程序。这使得配置变得简单。只需加载您喜欢的WSGI启用型网络服务器,并将其指向该模块。例如,如果您想使用mod_wsgi,可以尝试以下操作
WSGIDaemonProcess kdcproxy processes=2 threads=15 maximum-requests=1000 \ display-name=%{GROUP} WSGIImportScript /usr/lib/python3.6/site-packages/kdcproxy/__init__.py \ process-group=kdcproxy application-group=kdcproxy WSGIScriptAlias /KdcProxy /usr/lib/python3.6/site-packages/kdcproxy/__init__.py WSGIScriptReloading Off <Location "/KdcProxy"> Satisfy Any Order Deny,Allow Allow from all WSGIProcessGroup kdcproxy WSGIApplicationGroup kdcproxy </Location>
[MS-KKDCP]建议/KdcProxy作为端点。有关更多信息,请参阅您的WSGI服务器的文档。
配置kdcdaili
当kdcdaili接收到请求时,它需要知道将其代理到哪里。这是配置的目的:发现将kerberos请求发送到何处。
重要提示:如果底层配置未指定TCP或UDP,则将尝试两者。TCP将优先于UDP尝试,因此对于kdcproxy本身而言,无需设置udp_preference_limit = 1(尽管krb5可能仍需要它)。这允许使用更长的超时时间,并防止当KDC数据包包含OTP令牌代码(这些代码应优先发送到单个服务器)时的可能锁定。
自动配置
默认情况下,无需配置。在这种情况下,kdcproxy将使用REALM DNS SRV记录查找来确定远程KDC位置。
主配置文件
如果您希望进行更详细的配置,您可以在主配置文件中配置kdcproxy。该文件位于环境变量KDCPROXY_CONFIG指定的位置。如果没有指定此变量,默认位置为/usr/local/etc/kdcproxy.conf或/etc/kdcproxy.conf。此配置文件优先于所有其他配置模块。这是一个ini风格的配置文件,包含一个特殊部分[global]。此部分中有两个参数:configs和use_dns。
use_dns参数允许您启用或禁用DNS SRV记录查找的使用。
configs参数允许您加载其他配置模块以在其他位置查找配置。此处指定的配置模块将按照列出的顺序具有优先级。例如,如果您希望从MIT libkrb5读取配置,您将设置以下内容:
[global] configs = mit
除了[global]部分之外,您还可以为领域指定手动配置。在这种情况下,每个部分是领域的名称,参数是kerberos或kpasswd。这些指定了krb5 AS请求和kpasswd请求的远程服务器位置。例如:
[EXAMPLE.COM] kerberos = kerberos+tcp://kdc.example.com:88 kpasswd = kpasswd+tcp://kpasswd.example.com:464
领域配置参数可以列出多个服务器,它们由空格分隔。kdcproxy将按照指定的顺序尊重领域。端口号是可选的。可能的方案包括:
kerberos://
kerberos+tcp://
kerberos+udp://
kpasswd://
kpasswd+tcp://
kpasswd+udp://
MIT libkrb5
如果您在主配置文件中加载了mit配置模块,kdcproxy还将使用libkrb5(通常位于/etc/krb5.conf)读取配置。如果使用此模块,kdcproxy将尊重[libdefaults]部分中的DNS设置以及[realms]部分中的领域配置。
有关更多信息,请参阅MIT的krb5.conf文档。
配置重新加载
kdcproxy在导入包和实例化全局WSGI应用程序对象时读取其配置文件。目前,kdcproxy既不监视其配置文件的变化,也不支持运行时更新。您必须重新启动WSGI进程才能使修改生效。使用Apache HTTP和mod_wsgi时,服务器的重新加载也会重新启动所有WSGI守护进程。
配置kdcproxy客户端
自Kerberos 5发布1.13以来,HTTPS代理支持可用。一些供应商已将该功能回滚到krb5的旧版本。要使用HTTPS代理,只需将kdc和kpasswd选项指向代理URL,如[HTTPS代理]配置指南中所述。您的/etc/krb5.conf可能如下所示:
[libdefaults] default_realm = EXAMPLE.COM [realms] EXAMPLE.COM = { http_anchors = FILE:/etc/krb5/cacert.pem kdc = https://kerberos.example.com/KdcProxy kpasswd_server = https://kerberos.example.com/KdcProxy }
要调试此功能,将环境变量KRB5_TRACE设置为/dev/stdout。当此功能配置正确时,您应在WSGI服务器的访问日志中看到两个POST请求,并在kinit的调试输出中看到包含Sending HTTPS request的一行。
$ env KRB5_TRACE=/dev/stdout kinit user [1037] 1431509096.26305: Getting initial credentials for user@EXAMPLE.COM [1037] 1431509096.26669: Sending request (169 bytes) to EXAMPLE.COM [1037] 1431509096.26939: Resolving hostname kerberos.example.com [1037] 1431509096.34377: TLS certificate name matched "kerberos.example.com" [1037] 1431509096.38791: Sending HTTPS request to https 128.66.0.1:443 [1037] 1431509096.46387: Received answer (344 bytes) from https 128.66.0.1:443 [1037] 1431509096.46411: Terminating TCP connection to https 128.66.0.1:443 ...
如果kinit仍然连接到端口88/TCP或端口88/UDP,则系统安全服务守护进程的Kerberos定位器插件可能会覆盖/etc/krb5.conf中的设置。使用环境变量SSSD_KRB5_LOCATOR_DEBUG=1,kinit和sssd_krb5_locator_plugin将打印出额外的调试信息。要禁用KDC定位器功能,请编辑/etc/sssd/sssd.conf并将krb5_use_kdcinfo设置为False
[domain/example.com] krb5_use_kdcinfo = False
别忘了重新启动SSSD!
[MS-KKDCP]: http://msdn.microsoft.com/en-us/library/hh553774.aspx
[HTTPS代理]: http://web.mit.edu/kerberos/krb5-current/doc/admin/https.html
项目详情
kdcproxy-1.0.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 064386498125794dddbf710fc33fdc4d75a10b5ebe322f8dd8fd1c3e5edab2cb |
|
MD5 | 18685632042966d40e580232c5907722 |
|
BLAKE2b-256 | 4bba162c891980ca48dc1c5f2ca9bd54e45acd8edb047d25577d24f7d45ef371 |