ARTIFACTORY:使用Apache和Kerberos配置HTTP单点登录
下面的步骤将帮助您使用Kerberos网络身份验证协议设置Apache的HTTP单点登录:
- Ktpass命令应该用一个域管理
- 的密码通过论证必须遵守Windows Server 2012标准
下面是一个命令示例:
ktpass -princ HTTP/uriahl.com@URIAHL.COM -mapuser apache -crypto All -DesOnly -pass P@ssw0rd -ptype KRB5_NT_PRINCIPAL -out apache.keytab
在哪里
- uriahl.comApache服务器的fqdn是多少
- URIAHL.COM为其生成keytab的Kerberos领域是什么
- apache活动目录是否用于映射键选项卡
- apache.keytab是keytab文件名吗
安装libapache2- mode -auth-kerb
Centos / RHEL:
Yum安装mod_auth_kerb
在安装过程中,将提示您关于几个配置选项。您需要输入您的:
- Kerberos领域名称,按照惯例,这是你的AD域,用大写字母写(例如,如果你的AD域是domain.uriahl.com,你的领域必须命名为domain.uriahl.com)。
- KDC主机(例如,KDC机器的主机名)
- 管理服务器的主机名(请注意:根据您的设置,您可能希望在这里使用与前一个字段相同的值。)
在这一点上,一定要复制你的keytab文件(这是在步骤#1中生成的)Apache机和它的安全这样只有运行Apache的操作系统用户才能访问它。
一个例子全ssl配置的Apache VirtualHost配置代理Artifactory和使用Kerberos身份验证与/ artifactory位置可以如下所示(其中Krb5KeyTab指令指向keytab文件的位置):
听443
< VirtualHost *: 443 >
服务器uriahl@uriahl.com
ServerName apache.server.com
SSLEngine上
SSLCertificateFile /etc/ssl/certs/cert.crt
SSLCertificateKeyFile /etc/ssl/certs/cert.key
SSLProxyEngine上
ErrorLog " /私人/ var / log /输入/ uriahl.com-error_log”
CustomLog "/private/var/log/apache2/uriahl.com-access_log" common
<位置/ artifactory >
AuthType Kerberos
AuthName“Kerberos Login”
KrbMethodNegotiate上
KrbMethodK5Passwd上
KrbAuthRealms DOMAIN.URIAHL.COM
KrbLocalUserMapping上
Krb5KeyTab /usr/local/apache2/keytab/apache.keytab
需要有效的用户
RewriteEngine上
rewritecsecond %{REMOTE_USER} (.+)
RewriteRule。——(E =俄文:% 1)
REMOTE_USER %{RU}e
> < /位置
RewriteEngine上
rewritecsecond %{SERVER_PORT} (.*)
rewriterrule (.*) - [E=my_server_port:%1]
注意:下面的REQUEST_SCHEME头只支持Apache 2.4及以上版本:
rewritecsecond %{REQUEST_SCHEME} (.*)
rewriterrule (.*) - [E=my_scheme:%1]
rewritecsecond %{HTTP_HOST} (.*)
rewriterrule (.*) - [E=my_custom_host:%1]
rewriterrule ^/$ /artifactory/webapp/ [R,L]
RewriteRule ^ / artifactory (/) ?$ /artifactory/webapp/ [R,L]
^/artifactory/webapp$ /artifactory/webapp/ [R,L]
请求头设置主机%{my_custom_host}e
请求头设置X-Forwarded-Port %{my_server_port}
注意:在下面的例子中,{my_scheme}需要一个仅支持Apache 2.4及以上版本的模块:
请求头设置x - forward - proto %{my_scheme}e
RequestHeader设置x - artifactory - overrides - base - url %{my_scheme}e://artifactory_host:8081/artifactory
ProxyPassReverseCookiePath /artifactory /artifactory
ProxyRequests掉
ProxyPreserveHost上
ProxyPass /artifactory/ http://artifactory_host:8081/artifactory/
ProxyPassReverse /artifactory/ http://artifactory_host:8081/artifactory/
< /虚拟主机>
在本例中,您可以看到a根httpd . conf文件,该文件加载mod_auth_kerb模块,指定:
LoadModule auth_kerb_module /usr/lib/apache2/modules/mod_auth_kerb.so
此外,对于mod_auth_kerb模块,下面的模块分别是要求要使上述配置工作:
mod_headers
mod_proxy
mod_ssl
mod_rewrite
mod_prox_http
3.配置Artifactory接受HTTP SSO的身份验证REMOTE_USER头。
调试常见故障
- 错误# 1
[Mon Jun 27 13:54:42.271303 2016] [auth_kerb:error] [pid 2301:tid 140157256722176] [client 192.168.99.1:54417] krb5_get_init_creds_password() failed: KDC不支持加密类型。
这可能意味着你的活动目录尚未配置为支持加密算法在生成keytab文件。在上面的例子中,虽然-值用于指示生成的keytab将支持所有算法,您可能希望将其调整为使用只有的强大的加密类型。
循序渐进的指令关于使各种加密类型支持的AD域可用在这里。信息在这里也可能对你有帮助。
- 错误# 2
[Mon Jun 27 12:25:10.517382 2016] [auth_kerb:error] [pid 1375:tid 140157248329472] [client 192.168.99.1:52174]验证krb5凭据失败:Server not found in Kerberos database .
关于Apache错误日志消息,“Kerberos数据库中找不到服务器”,信息可用在这里可能对你有用。
了解更多