前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Apache Httpd服务器之认证与授权

Apache Httpd服务器之认证与授权

作者头像
星哥玩云
发布于 2022-07-04 05:22:33
发布于 2022-07-04 05:22:33
2.2K0
举报
文章被收录于专栏:开源部署开源部署

此篇文章,我们主要探讨下关于Httpd服务器的认证及授权。

所谓认证,在我的理解就是用户通过一个凭证进入服务器的过程,而授权是用户是否有权限获取服务器中的某个资源。认证负责的是整体,授权负责的是局部。

Httpd提供浏览器认证功能,也就是用户在浏览器输入想进入的网址后,浏览器弹出一个要求用户输入用户名及密码的认证框,当用户输入正确的用户名及密码后,即能进入到网站内获取资源。此功能可以脱离应用逻辑达到认证的功能,无需应用层编写专门的认证程序。如果你懒得编写专门的认证代码,又想实现认证功能的话,可以利用此项功能来偷个懒=。=

Httpd提供的授权功能,可以在认证的基础上继续对服务器资源加以保护,它能根据IP、子网、指定用户或环境变量来判断用户是否对某一目录具有读取权限。当然,授权与认证没有必然的联系,即使不用认证,也可以单独设置授权。下面,我们就一起来看看Httpd的认证与授权是如何进行配置的。

首先谈谈认证,Httpd的认证有明文认证与摘要认证两种,明文认证是以明文的方式将用户名与密码发送至服务器,服务器接收到用户名及密码后在认证文件或数据库中进行比对,以此判断是否成功。由于使用明文发送,所以在非SSL链接的情况下具有一定的风险。摘要认证,是将用户输入的密码进行散列算法后发送给服务器,一定程度上提高了用户密码的安全性,但是摘要认证不是每个浏览器都支持,所以在使用摘要算法时需在多个浏览器下测试。

具体的认证过程,Httpd提供了文本、数据库两种方式。也就是我们可以把合法的用户名密码存在文本文件或数据库中。下面我们分别介绍这几种认证的配置方法。

方案1:明文认证+文本认证

首选,我们需要创建我们的“密码本”,由htpasswd脚本创建。它位于你Httpd的安装目录下/bin目录下,与httpd命令在一起。通过./htpasswd -c "密码本路径" "用户名"方法创建。如我想将密码本创建为/usr/local/httpd/users/auth_basic,设置用户名为wangwei,那么该命令格式如下:./htpasswd -c /usr/local/httpd/users/u_basic wangwei。此时会弹出命令提示符要求你输入密码,设置你想要的密码后即可。

假如我们想在服务器文档根目录下设置认证,那么将进行如下配置:

LoadModule unixd_module modules/mod_unixd.so LoadModule alias_module modules/mod_alias.so LoadModule mime_module modules/mod_mime.so LoadModule cgid_module modules/mod_cgid.so LoadModule authz_core_module modules/mod_authz_core.so LoadModule authn_core_module modules/mod_authn_core.so LoadModule auth_basic_module modules/mod_auth_basic.so LoadModule authn_file_module modules/mod_authn_file.so LoadModule authz_user_module modules/mod_authz_user.so LoadModule auth_digest_module modules/mod_auth_digest.so LoadModule authn_dbm_module modules/mod_authn_dbm.so LoadModule dbd_module modules/mod_dbd.so LoadModule authn_dbd_module modules/mod_authn_dbd.so #mod_unixd.so mod_mime.so为Httpd的核心模块,必须加载。以mod_authz,mod_authn为前缀的即是认证模块。 #使用文本认证,我们只需进行一般编译工作即可,但如果使用数据库认证, #则需要重新编译apr-util,是它生成一个名为apr_dbd_mysql.so的动态链接库。 Listen 80 ServerName localhost DocumentRoot "/usr/local/httpd/htdocs" <Directory "/usr/local/httpd/htdocs">        #要在文档根目录下设置认证,那么就在根目录容器下进行认证设置 AuthName auth                                #认证名,可以随便起一个英文字符,在浏览器弹出的认证框上将会显示此名字 AuthType Basic                                #设置认证类型为基本认证 AuthBasicProvider file                        #设置为文本认证 AuthUserFile /usr/local/httpd/users/u_basic        #密码本的位置 Require valid-user                            #指定只有正确的用户才能进入此目录 </Directory>

    我的服务器地址为192.168.1.11,进行配置后,在浏览器输入http://192.168.1.11/index.html后即弹出认证框:

    是不是很简单?输入刚才设置的用户名密码后即进入了页面。

    方案2:明文认证+SDBM认证     SDBM是Linux提供的一种文件型数据库,如果你不想安装MySQL,又有较多的用户需要部署。那么使用SDBM是一个好的选择。SDBM的密码本不能用htpasswd脚本生成,Httpd也提供了它的密码本生成器,名为htdbm。在htpasswd同级目录下即可找到。使用./htdbm-c "密码本路径" "用户名"方法创建。如我想将密码本创建为/usr/local/httpd/users/auth_sdbm ,设置用户名为wangwei,那么该命令格式如下:./htdbm-c /usr/local/httpd/users/auth_sdbm wangwei。此时会弹出命令提示符要求你输入密码,设置你想要的密码后即可。         如果想达到方案1的目的,并使用SDBM认证,则只需改动Directory容器下的配置即可:

<Directory "/usr/local/httpd/htdocs"> AuthName auth AuthType Basic AuthBasicProvider dbm    #使用dbm认证 AuthDBMUserFile /usr/local/httpd/users/auth_sdbm #密码本位置 Require valid-user </Directory>

    再次提醒下,如果你要使用数据库认证,必须通过apr编译出apr_dbd_mysql.so动态链接库,并把它放在linux能自动搜索到的lib目录下。

    方案3:明文认证+MySQL认证    要使用MySQL认证,必须先安装MySQL服务器。那么MySQL的“密码本”该如何设置呢?那就是建立数据库和表咯。下面提供一下基本步骤。首先创建一个数据库,名为auth,在auth库内建立一个表,名为users,users内有3个字段,一个id为自增长数字,一个user列,用于存放用户名。一个password列,用来存放密码。然后将你想要设置的用户名密码存放在表内。密码必须是经过CRYPT函数加密过的,可以通过htpasswd脚本获取,如通过/usr/local/httpd/bin/htpasswd -c /usr/local/httpd/users/auth_mysql wangwei 创建一个用户名为wangwei的密码本,输入密码123456后,生成了名为auth_mysql的文件,查看auth_mysql后发现里面有一条记录为wangwei:apr1FXx0wpMP

    Httpd配置文件内的配置如下:

#方案1中的LoadModule指令先加载进来 DBDriver mysql #DB驱动为mysql DBDParams "host=192.168.1.11 port=3306 dbname=auth user=root pass=123456" #连接字符串,懂mysql的应该都认识 DBDMin 1 DBDKeep 2 DBDMax 10 DBDExptime 60 Listen 80 ServerName localhost DocumentRoot "/usr/local/httpd/htdocs" <Directory "/usr/local/httpd/htdocs"> AuthName auth AuthType Basic AuthBasicProvider dbd 设置使用dbd认证 AuthDBDUserPWQuery "SELECT `password` FROM users WHERE `user`=%s" #设置查询SQL Require valid-user </Directory>

    方案4:摘要认证+文本认证     摘要认证的配置与基本认证几乎一样,只有两点不同,一是摘要认证需用htdigest创建密码本,二是摘要认证需配置一个认证域。htdigest脚本与htpasswd脚本在同一目录层次。创建方法如下:./htdigest -c "密码本路径" "域名称" "用户名"。如./htdigest -c /usr/local/httpd/users/auth_digest auth wangwei。域名称必须与配置内的AuthName指令设置的一致。而认证域是一个URI,按照方案1的目的,我们将它设置为/。         配置方法如下:

<Directory "/usr/local/httpd/htdocs"> AuthName auth AuthType Digest #设置为摘要认证 AuthDigestProvider file AuthDigestDomain / #摘要认证域为/ AuthUserFile /usr/local/httpd/users/auth_digest Require valid-user </Directory>

    Httpd的授权     除了使用用户名及密码的方式进行浏览器认证外,我们还可以通过IP、子网的方式进一步对用户进行访问限制。这就需要用到Httpd的授权。为了说明用户,我们设计以下几种情景。     情景1,对用户进行IP限制,让处于192.168.1.0网段的用户访问,但不让192.168.1.254的用户访问。配置方案如下:

LoadModule unixd_module modules/mod_unixd.so LoadModule alias_module modules/mod_alias.so LoadModule mime_module modules/mod_mime.so LoadModule cgid_module modules/mod_cgid.so LoadModule authz_core_module modules/mod_authz_core.so LoadModule authz_host_module modules/mod_authz_host.so LoadModule access_compat_module modules/mod_access_compat.so #使用授权时必须加载的库 LoadModule authn_core_module modules/mod_authn_core.so LoadModule auth_basic_module modules/mod_auth_basic.so LoadModule authn_file_module modules/mod_authn_file.so LoadModule authz_user_module modules/mod_authz_user.so LoadModule auth_digest_module modules/mod_auth_digest.so LoadModule authn_dbm_module modules/mod_authn_dbm.so LoadModule dbd_module modules/mod_dbd.so LoadModule authn_dbd_module modules/mod_authn_dbd.so Listen 80 ServerName localhost DocumentRoot "/usr/local/httpd/htdocs" <Directory "/usr/local/httpd/htdocs"> Allow from 192.168.1.0 Deny from 192.168.1.254 Order Allow,Deny    #验证顺序,先允许,后拒绝。 </Directory>

情景2,在认证的基础上进行授权,既需要浏览器验证,又进行IP限制。配置方案如下:

<Directory "/usr/local/httpd/htdocs"> Allow from 192.168.1.0 Deny from 192.168.1.254 Order Allow,Deny AuthName auth AuthType Digest AuthDigestProvider file AuthDigestDomain / AuthUserFile /usr/local/httpd/users/auth_digest Require valid-user Satisfy All #认证与授权需同时满足条件才能通过 </Directory>

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
角力分布式云,腾讯云最强牌面成色如何?
未来十年,计算需求已无处不在,云计算需要保证一致性体验和安全性的前提下,快速响应各种需求和灵活定制。所以,业界经历公有云、私有云、混合云之后,愈发在市场方向上形成共识:分布式云。
大数据在线
2021/11/25
5800
角力分布式云,腾讯云最强牌面成色如何?
腾讯云遨驰能力升级!分布式云操作系统全面助力企业数字化转型
随着数字化转型的深入,各行各业更加需要高效灵活、安全可靠的算力。 11月30日,2022腾讯全球数字生态大会遨驰技术专场召开。会上,腾讯云公布了分布式云操作系统遨驰的最新升级和落地实践,为企业用云提供详实参考。 数实融合,布局未来:绿色、高效、安全可控的云 腾讯云计算产品总经理李力介绍,腾讯分布式云操作系统遨驰在算力、覆盖、安全等方面实现了全新升级,构建起无处不在、触手可及的算力。 在算力方面,遨驰可实现 GPU 算力更优分配和0改造适配的异构硬件迁移。基于银杉智能网卡提供的高达5000万 PPS
腾讯专有云
2022/12/02
8950
腾讯云遨驰能力升级!分布式云操作系统全面助力企业数字化转型
计算进入亿核时代,腾讯云正式发布:遨驰云原生操作系统
2021年11月3日,在腾讯数字生态大会现场,腾讯云首次正式对外公布分布式云战略,同时发布行业首家全域治理的云原生操作系统遨驰Orca。 腾讯副总裁、云与智慧产业事业群COO兼腾讯云总裁邱跃鹏 腾讯副总裁、云与智慧产业事业群COO兼腾讯云总裁邱跃鹏表示:“腾讯云原生操作系统遨驰单集群支持10万级服务器、百万级容器规模,管理的CPU核数超过1亿,计算正式进入亿级时代。在强大的硬件基础设施之上,腾讯云将通过分布式云构建无所不在的云服务。” 据悉,此次公布的腾讯云分布式云是腾讯云为多云、混合云场景提供系列产品能
云头条
2022/03/18
1.3K0
你不知道的分布式云
最近一年,分布式云这个字眼,被太多人提起,简直成了网红。 几乎所有的云巨头,都在猛推这种云计算的新玩法。 AWS整了Outposts,微软云拿出Azure Arc,而谷歌云则有Anthos,虽然叫法不同,形态细节也有区别,但是“内心戏”都大差不差。 大家的目标,就是把自家的公有云,尽最大可能向客户侧延伸。这是分布式云的初衷。 可有同学就问了,公有云都会在全球/全国布下很多“Region”,每个Region又各自包含多个AZ(可用区),而每个AZ,又由多个数据中心组成。这本来不就是分布式的吗?
腾讯云计算产品团队
2021/11/18
1.6K0
腾讯刘颖:从容器到低代码,腾讯云原生技术演进历程
在11月4日举办的2021腾讯数字生态大会 Techo Day 技术峰会上,腾讯云副总裁刘颖正式发布腾讯云原生操作系统遨弛 Orca 以及腾讯云原生分布式云矩阵。
腾讯云开发TCB
2021/11/12
1.6K0
腾讯刘颖:从容器到低代码,腾讯云原生技术演进历程
汽车出行行业云月刊【2022年12月刊】
11月30日,2022腾讯数字生态大会·智慧出行专场上,腾讯智慧出行副总裁李博分享了汽车云场景化应用实践。以云+图+AI+安全为底座,面向研发生产、营销服务、用车出行、企业治理和安全防护五大核心场景,帮助汽车产业“车云一体化”发展。
汽车出行行业云月刊
2022/12/06
9440
汽车出行行业云月刊【2022年12月刊】
腾讯云入选2023 Gartner分布式混合基础设施魔力象限
10月18日,腾讯云入选Gartner最近发布《分布式混合基础设施魔力象限》报告(Magic Quadrant for Distributed Hybrid Infrastructure, September 2023)。
腾讯专有云
2023/10/23
7430
腾讯云入选2023 Gartner分布式混合基础设施魔力象限
腾讯这次能实现“赛道上换轮胎”吗?
从某种意义上,2022年将是分水岭之年,是以速度和规模论英雄的旧时代终结,以及注重内在经营质量的新时代的分野。
科技云报道
2022/04/16
1.2K0
腾讯这次能实现“赛道上换轮胎”吗?
腾讯云发布了一个操作系统,能管理1亿核CPU
今天,在腾讯数字生态大会上,腾讯云首次对外公布分布式云战略,同时发布了遨驰云原生操作系统。 名词有点多,逐个来解释—— 腾讯云分布式云 腾讯云为多云、混合云场景提供系列产品能力的总称。基于分布式云,用户可以通过集中管控,统一管理位于不同位置的云资源和业务应用,也可以在任意位置获取需要的云资源与云服务。 分布式云好在什么地方? 1⃣️延伸云的范围:可以在任何用户需要的环境中,比如边缘计算集群、本地集群等; 2⃣️保留云的优势:不管在什么环境,与公有云管理一致、服务一致、体验一致。 那么,要达到这种完
腾讯云原生
2021/11/05
2.2K0
接连获奖!腾讯云分布式云彰显行业领先地位
12月23-24日,在北京举办的2021首届混合云大会现场上,“树根互联根云平台基于腾讯云 CDC 专属云方案”斩获年度混合云架构创新类优秀案例。这代表腾讯云的分布式云服务能力再获国家权威认可,充分印证了腾讯云在分布式云领域的领导优势。 今年以来,分布式云成为了云计算领域关注的焦点,以腾讯云为代表的云厂商积极布局分布式云生态。今年11月,腾讯云首次正式对外公布分布式云战略,同时发布行业首家全域治理的云原生操作系统遨驰 Orca。其中,腾讯分布式云是为多云、混合云场景提供系列产品能力的总称,旨在为用户在
腾讯云计算产品团队
2022/01/04
2K0
【Techo Day腾讯技术开放日】从大咖眼中读到腾讯云原生发展新机遇
通过周末两天对Techo Day腾讯技术开放日视频的学习,让我对云原生全栈开发的了解进一步加深,原来云原生如此高大上,又或者云原生原来如此 just so so~,无处不在的云原生到底怎样在影响开发者,面对云原生这种时代洪流,我们又应该怎样面对,下面我主要通过对各位专家老师的资料来展开论述,畅谈一下我眼中对云原生的新认识。
炒香菇的书呆子
2022/11/06
1.7K0
【Techo Day腾讯技术开放日】从大咖眼中读到腾讯云原生发展新机遇
分布式云越来越火,它凭什么代表云计算的未来?
2021年,分布式云开始成为云计算领域关注的热点。根据Gartner预测,到2025年,超过50%的组织将选择使用分布式云,从而实现业务转型。
科技云报道
2022/08/31
9670
分布式云越来越火,它凭什么代表云计算的未来?
【Techo Day腾讯技术开放日】“门外汉” 浅谈云原生
其中一张,回顾了本次“第二期Techo Day腾讯技术开放日”关于云原生开发与实践的活动课程。另外一张,则是截自某云原生博客主的文章热门标签。
君子当盘
2022/11/06
9111
【Techo Day腾讯技术开放日】“门外汉” 浅谈云原生
腾讯全球数字生态大会|计算专场与遨驰技术专场邀您共探数实创新
2022腾讯全球数字生态大会将于11月30日-12月1日正式开幕。大会以" 数实创新,产业共进 "为主题,聚焦数字技术与实体经济创新发展,将邀请生态合作伙伴、技术开发者、政府及社会组织共话数字技术与实体产业的前沿趋势,探索全真互联时代的数实融合新机遇。 今年全球数字生态大会采用“大线上+小线下”模式,主要包括1场产业互联网峰会、聚焦大湾区的云湾峰会、聚焦产品技术的产品战略对谈会及Techo前沿技术论坛,以及18场系列行业专场、27场产品专场、6场合作伙伴专场、1场海外专场及数场闭门论坛。此外还将有100+产
腾讯云计算产品团队
2022/11/28
4340
腾讯全球数字生态大会|计算专场与遨驰技术专场邀您共探数实创新
构筑金融发展新底座 着墨数字金融大文章——专访腾讯云副总裁沙开波
党的二十大报告指出,高质量发展是全面建设社会主义现代化国家的首要任务。在10月召开的中央金融工作会议中首次提出“加快建设金融强国”的战略目标,提出做好科技金融、绿色金融、普惠金融、养老金融、数字金融五篇大文章,为牢牢把握推进金融高质量发展这一主题,做好相关金融工作指明了方向。中国人民银行发布的《金融科技发展规划(2022-2025年)》指出,要打造新型数字基础设施,建设云管边端高效协同、灵活调度、弹性部署的新型算力体系。近年来,随着云计算、大数据、AI等新技术广泛应用于金融业,数字金融的未来已来。
腾讯专有云
2023/12/29
5430
构筑金融发展新底座 着墨数字金融大文章——专访腾讯云副总裁沙开波
第一期云原生知识趣味问答获奖名单&答案揭晓!
小伙伴们,还记得上周五的【Friday Ask】问卷吗? (点击图片可跳转至活动介绍) 本次趣味问答活动,大家都踊跃参与。根据答题分数&答题速度,我们统计出了本期获奖名单~一起来看看吧! (为保护个人隐私,部分微信号做了处理) 恭喜以上20位兼顾智慧与速度的同学,获得首期【Friday Ask】的大奖 获奖同学请于12月3日16:00前添加腾小云(微信号:TKEplatform)领奖 本期礼品是可爱Q弹的短鹅~ 公布完获奖名单之后,一起来回顾一下“第一期问卷”吧。 下面是第一期问卷的答
腾讯云原生
2021/12/01
1.4K0
1024程序员节,第二期TechoDay来啦:这次我们讲云原生!
云原生正在成为当下开发者的技术信赖和企业降本增效的利器。今年10月29日,腾讯将举办TechoDay腾讯技术开放日第二期活动,以“云原生全栈开发与实践”为主题,为开发者解析腾讯在云上全栈服务及部署能力,公布最新的云原生产品布局及典型的云原生实践,助力开发者的技术创新与创造!
Techo
2022/10/18
6410
【Techo Day腾讯技术开放日】云原生入门不可不懂的3个问题
最近在回顾腾讯云在Techo Day腾讯技术开放日(吐槽一下这么长的名字真的方便传播不?)举办的《云原生全栈开发与实践》,可惜由于本人对云原生这块不是很熟,所以里面非常多关于云原生的应用案例讲解,包括北极星、CODING、招商云我基本都是跳着看的,不过里面很多嘉宾都顶着“腾讯架构师”的Title,我相信内容还是非常不错的,这一块就留给大家去看了。
向瑶函
2022/11/04
1.2K2
【Techo Day腾讯技术开放日】云原生入门不可不懂的3个问题
重兵集结,腾讯云、华为云齐聚分布式云?
随着技术与架构的快速迭代,继公有云、私有云、混合云后,云计算开始加速向分布式云演进。据Gartner预测,到2025年将有超过50%的组织,选择使用分布式云推动业务转型。
刘旷
2022/07/11
5490
预告 | 腾讯云发布业界首个《分布式云发展白皮书》
6月14日,中国信息通信研究院联合中国通信标准化协会举办的第二届“2022云边协同大会”即将召开。 大会以“开启分布式算力新时代”为主题,围绕分布式云、边缘计算、智能物联网、云边端一体化、行业应用等领域前沿焦点,深入探讨2022行业热门话题,重磅发布产业研究成果,展望未来发展趋势。 随着基础设施、云技术以及云原生的发展,云计算正在从中心云 1.0 迈入分布式云 2.0 时代。在此次大会上,围绕分布式云市场趋势、前沿产品&技术、落地实践、未来展望等,腾讯云将联合中国信通院,共同发布业界首个《分布式云发展白皮
腾讯云原生
2022/06/14
8330
预告 | 腾讯云发布业界首个《分布式云发展白皮书》
推荐阅读
相关推荐
角力分布式云,腾讯云最强牌面成色如何?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档