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

JFrog支持
2023-01-22 11:07

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

  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.COMkeytab是为哪个Kerberos领域生成的
  • apache是否正在使用活动目录映射keytab
  • apache.keytabkeytab是文件名吗
2.配置HTTPD虚拟主机使用auth_kerb_module以及相应的指令。请注意HTTPD通常没有已经安装的这个模块,所以你可能需要手动安装它Debian-based附加组件

安装libapache2-mod-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登录”

KrbMethodNegotiate上

KrbMethodK5Passwd上

KrbAuthRealms DOMAIN.URIAHL.COM

KrbLocalUserMapping上

Krb5KeyTab /usr/local/apache2/keytab/apache.keytab

需要有效的用户

RewriteEngine上

重写%{REMOTE_USER} (.+)

RewriteRule。——(E =俄文:% 1)

请求头设置REMOTE_USER %{RU}e

> < /位置

RewriteEngine上

RewriteCond %{SERVER_PORT} (.*)

RewriteRule (.*) - [E=my_server_port:%1]

#注意:在以下情况中,只有Apache 2.4及以上版本支持REQUEST_SCHEME报头:

重写%{REQUEST_SCHEME} (.*)

RewriteRule (.*) - [E=my_scheme:%1]

重写%{HTTP_HOST} (.*)

RewriteRule (.*) - [E=my_custom_host:%1]

RewriteRule ^/$ /artifactory/webapp/ [R,L]

RewriteRule ^ / artifactory (/) ?$ /artifactory/webapp/ [R,L]

RewriteRule ^/artifactory/webapp$ /artifactory/webapp/ [R,L]

RequestHeader设置主机%{my_custom_host}e

设置x - forward - port %{my_server_port}e

#注意:在下面,{my_scheme}需要一个只有Apache 2.4及以上版本支持的模块:

请求头设置X-Forwarded-Proto %{my_scheme}e

RequestHeader set X-Artifactory-Override-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/

< /虚拟主机>

在本例中,您可以看到根httpd . conf文件,该文件加载mod_auth_kerb模块,指定:

LoadModule auth_kerb_module /usr/lib/apache2/modules/ mod_auth_kerb_so .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] failed to verify krb5 credentials: Server not found in Kerberos database .

关于Apache错误日志消息,“在Kerberos数据库中未找到服务器”,信息可用在这里可能对你有用。

了解更多

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