前段时间因为项目需要在Ubuntu+Apache的环境下配置了基本Active Directory的Kerberos验证, 主要为了实现WEB应用基于AD的单点登陆SSO(即SingleSignOn).
下面将配置过程做简单记录:
0. 先说一下我的环境
Ubuntu9.04 + Apache2.2x + Win2k8 & AD
1. 因为Apache本身是不支持Kerberos的, 所以我们第一步是安装Kerberos Module for Apache即Mod_auth_kerb , 关于这个mod的文档资料和下载可以在官网找到. 在Ubuntu下不需要编译安装, 执行下面的apt-get搞定mod的安装. 安装后Apache的配置中会自动加载mod_auth_kerb.so, 不需要手工修改配置文件.
LINUX
# sudo apt-get install libapache2-mod-auth-kerb
2. 装好Mod_auth_kerb后, 我们来对Kerberos进行配置, 编辑/etc/krb5.conf, 这里建议将原配置文件备份(cp /etc/krb5.conf /etc/krb5_bak.conf), 然后清空原配置文件内容, 贴入如下配置信息并按实际需求进行相应修改(default_realm, kdc, example.com).
CONF
[libdefaults]
ticket_lifetime = 24000
default_realm = EXAMPLE.COM
dns_lookup_realm = false
dns_lookup_kdc = false
[realms]
EXAMPLE.COM = {
kdc = dc-01.example.com:88
kdc = dc-02.example.com:88
}
[domain_realm]
.example.com = EXAMPLE.COM
example.com = EXAMPLE.COM
[appdefaults]
pam = {
debug = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
krb4_convert = false
}
3. 修改好配置文件后, 我们先来对Kerberos进行一个测试, 验证一下配置是否正确.命令行下执行kinit , 按提示输入AD用户的密码. 再在命令行下执行klist命令, 如果出现如下提示, 表示Kerberos验证成功.
CONF
# kinit Username
Password for Username @ EXAMPLE.COM:
# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: Username @ EXAMPLE.COM
Valid starting Expires Service principal
07/23/10 15:57:06 07/23/10 22:37:06 krbtgt/ EXAMPLE.COM @ EXAMPLE.COM
4. 在WinServer端生成.Keytab文件, 然后将生成的.keytab文件copy到ubuntu上.
CONF
C:\Program Files\Support Tools>ktpass -princ HTTP/apache.server.fqdn@ EXAMPLE.COM -mapuser apache_server -crypto DES-CBC-MD5 -ptype KRB5_NT_PRINCIPAL -mapop set +desonly -pass apache_password -out name.keytab
5. 接下来配置Apahe的http.conf, 使所有或全部的WEB应用通过Kerberos进行登陆验证. Location项即作用路径, 这里我用通配符设置了webroot/krb和webroot/test两个路径. Krb5Keytab项后添上一步生成的keytab文件的及存放路径. 具体如下
CONF
<Location ~ "/(krb|test)">
AuthName "Kerberos Login"
AuthType Kerberos
Krb5Keytab /etc/auth_kerb.keytab
KrbAuthRealm EXAMPLE.COM
KrbMethodNegotiate off
KrbSaveCredentials off
KrbVerifyKDC off
Require valid-user
</Location>
6. 重启Apahce
LINUX
# /etc/init.d/apache2 restart
7. 到这里配置过程就全部完成了, 下面我们可以测试一下. 在webroot/krb下建index.php, 写入如下内容.
PHP
<?php
echo "<table border=\"1\">";
foreach($_SERVER as $k=>$v){
echo "<tr><td>".$k."</td><td>".$v."</td></tr>";
}
echo "</table>"
?>
浏览器上访问http://hostaddress/krb. 这时浏览器会弹出如下的登陆框, 用AD账号登陆试一下吧, 登陆成功的话页面上会显示$_SERVER信息, 并$_SERVER中会多出个[‘REMOTE_USER’]来.
整个配置过程算是比较顺利, 参考文档如下, 欢迎有兴趣的朋友与我交流 leon@nerrsoft.com
http://sivel.net/2007/05/sso-apache-ad-1/
http://support.microsoft.com/kb/555092/en
http://stackoverflow.com/questions/389175/kerberos-authentification-in-php
http://modauthkerb.sourceforge.net/install.html
https://help.ubuntu.com/community/SingleSignOn
http://www.midgard-project.org/documentation/kerberos-single-sign-on-with-active-directory/
http://michele.pupazzo.org/diary/?p=460
分享到:
相关推荐
赠送jar包:apacheds-kerberos-codec-2.0.0-M15.jar; 赠送原API文档:apacheds-kerberos-codec-2.0.0-M15-javadoc.jar; 赠送源代码:apacheds-kerberos-codec-2.0.0-M15-sources.jar; 赠送Maven依赖信息文件:...
Kerberos 集成使得 ApacheDS 能够支持基于 Kerberos 的安全认证,这对于大型企业或组织来说尤其重要,因为它们需要在多台服务器之间进行安全的身份验证。 Kerberos 协议的工作原理是基于密钥分发中心(Key ...
在使用Kerberos验证时,需要在OpenLDAP中配置SASL机制,使用GSSAPI认证方法,来实现Kerberos身份验证。 配置OpenLDAP使用Kerberos验证需要了解Kerberos和SASL的基本概念,安装相关软件包,配置Kerberos server和...
赠送jar包:apacheds-kerberos-codec-2.0.0-M15.jar; 赠送原API文档:apacheds-kerberos-codec-2.0.0-M15-javadoc.jar; 赠送源代码:apacheds-kerberos-codec-2.0.0-M15-sources.jar; 包含翻译后的API文档:...
在开始加入 AD 域的操作之前,需要确保 Ubuntu 系统中的一些基础服务配置正确无误。 1. **主机名配置**:主机名是识别机器的重要标识。使用 `hostnamectl` 命令或手动编辑 `/etc/hostname` 文件为 Ubuntu 主机设置...
Kerberos在分布式环境中提供了强大的身份验证功能,确保数据的安全性。对于Hadoop这样的大数据处理平台而言,Kerberos能够提供必要的安全保障,防止未授权访问和数据泄露。 #### 二、Linux环境下安装Kerberos KDC...
在实际应用中,为了正确使用apacheds-protocol-kerberos-1.0.1.jar,开发者还需要对Kerberos配置有深入理解,包括设置KDC、创建principal(主体)、配置客户端和服务器的Kerberos配置文件等。此外,还可能涉及到与...
CentOS 7 PyHive 连接 Hive(基于 Kerberos 安全验证) CentOS 7 PyHive 连接 Hive(基于 Kerberos 安全验证)是指使用 PyHive 库连接 Hive 服务器,并使用 Kerberos 进行身份验证。Kerberos 是一种广泛使用的身份...
在Windows Server AD中,Kerberos是默认的身份验证机制,确保了用户在访问网络资源时的安全性。Kerberos通过加密票证进行工作,允许经过身份验证的用户在一个安全的环境中相互交互,而无需再次输入密码。以下是...
Kerberos是一种广泛使用的安全协议,主要用于网络环境下的身份验证(Authentication)。身份验证的目的在于确认一个人或实体是否确实如其所声称的身份那样。这一过程涉及三个关键要素: 1. **Secret(秘密)的表示**...
在你希望进行身份验证的虚拟主机或者特定目录下,添加以下内容: ```apacheconf AuthType Basic AuthName "auth user" # 这里可以自定义认证提示信息 AuthUserFile /etc/shadow require group wangxu work # ...
这是自主做的实验 是参考网上资料及学院老师引导做出来的实验 但是网上是不会这么详细的资料的 像这样的配置实验室没有这么具体的实现步骤的 但是由于是我们的课程设计报告 我们话费了很多时间来实现过程的验证 现在...
在配置 Kerberos 之前,需要安装和部署 Kerberos 服务。安装和部署 Kerberos 服务的过程请参考相关博客文章。 在 Kerberos 中,为 Namenode 和 Datanode 分别新建 principal:nn/admin@psy.com、dn/admin@psy.com ...
二是仅在 Zookeeper 的配置目录 `zkconf` 下添加服务端配置,而将 Zookeeper 客户端的配置文件添加到 Kafka 的服务器端配置文件中。 #### 三、安装 Kerberos 服务 首先,我们需要在选定的一台主机上安装 Kerberos ...
本文将指导您如何在Ubuntu系统上安装和配置Kerberos,以便您可以在自己的系统中实现安全的身份验证。 一、Kerberos的基本概念 Kerberos是一种基于 ticket 的身份验证协议,能够提供强有力的身份验证和加密服务。它...
#### 二、AD域控制器下的Kerberos配置 **1. 创建域控制器** 本文以Windows Server 2008为例创建域控制器。具体步骤如下: - **启动dcpromo工具**:点击“开始”菜单,输入“dcpromo”命令。 - **创建活动目录**:...
在Ubuntu 20.04系统中离线安装Kerberos是一项重要的任务,尤其是在没有互联网连接的环境中。Kerberos是一种网络认证协议,它通过提供安全的身份验证服务,确保了用户和服务器之间的通信安全。本资源包正是为了解决...
Java中的Kerberos支持主要体现在Java的`javax.security.auth.kerberos`包中,提供了与Kerberos协议交互的一系列类和接口。这些类允许Java应用进行认证过程,包括获取票据授予票据(Ticket-Granting Ticket, TGT)...
在IT领域,特别是企业级应用开发中,"C# AD域验证"是一个常见的主题,它涉及到Windows活动目录(Active Directory, AD)与C#编程语言的集成。活动目录是Microsoft提供的一种目录服务,用于管理网络资源,如用户、...