ARTIFACTORY:使用Apache和Kerberos配置HTTP单点登录

JFrog支持
2023-01-22 11:07

下面的步骤将帮助您使用Kerberos网络身份验证协议设置Apache的HTTP单点登录:

  1. 生成一个keytab为你的Apache主机使用Ktpass工具,其中:
  • 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文件名吗
2.配置HTTPD虚拟主机要使用auth_kerb_module以及相应的指令。请注意HTTPD通常不附带这个已经安装的模块,所以您可能需要使用以下命令手动安装它Debian-based附加组件

安装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数据库中找不到服务器”,信息可用在这里可能对你有用。

了解更多

  • 一个好的Kerberos概述是可用的在这里
  • 更多有关Apache的Kerberos模块是可用的在这里
  • 可以获得关于配置Apache使用Kerberos身份验证的更多信息在这里