HTTP认证介绍(Basic基本认证和Digest摘要认证)和搭建windows HTTP服务器

一、HTTP认证介绍和认证方式

HTTP认证是一种用于保护Web应用程序的一种身份验证机制。它通过在HTTP请求的头部添加认证信息,来验证用户的身份和权限。HTTP认证可以用于保护敏感信息,限制访问某些资源,或者在访问某些操作之前要求用户提供凭据。

HTTP认证有几种不同的认证方式,包括:

  1. Basic认证:Basic认证是最常见的HTTP认证方式之一。在Basic认证中,客户端发送请求时,会在请求头中包含一个"Authorization"字段,该字段包含了经过Base64编码的用户名和密码。服务器收到请求后,会解码该字段并验证用户名和密码是否正确。

  2. Digest认证:Digest认证是一种更安全的认证方式。在Digest认证中,服务器会向客户端发送一个随机数(称为"nonce"),客户端根据该随机数和用户密码计算一个摘要,并将其发送给服务器。服务器收到摘要后,会验证其有效性。Digest认证相对于Basic认证而言,更难以被中间人攻击截获密码。

  3. Bearer认证:Bearer认证是一种使用令牌(Token)进行身份验证的方式。在Bearer认证中,客户端在请求头中添加一个"Authorization"字段,该字段包含了一个令牌信息。服务器在接收到请求后,会验证令牌的有效性,并根据令牌来识别用户身份。

  4. OAuth认证:OAuth认证是一种开放标准的身份验证协议,用于授权第三方应用程序访问用户资源。在OAuth认证中,用户可以通过授权服务器授权第三方应用程序访问自己的资源。这种方式可以避免用户将密码直接提供给第三方应用程序。

这些认证方式可以根据具体的需求和安全要求来选择使用。每种认证方式都有其优缺点,需要根据实际情况进行选择和配置。

注意:可借助最新的Postman查看当前有哪些认证方式。

参考资料

digest认证中相关参数含义

  • WWW-Authentication:用来定义使用何种方式(Basic、Digest、Bearer等)去进行认证以获取受保护的资源
  • realm:表示Web服务器中受保护文档的安全域(比如公司财务信息域和公司员工信息域),用来指示需要哪个域的用户名和密码
  • qop:保护质量,包含auth(默认的)和auth-int(增加了报文完整性检测)两种策略,(可以为空,但是)不推荐为空值
  • nonce:服务端向客户端发送质询时附带的一个随机数,这个数会经常发生变化。客户端计算密码摘要时将其附加上去,使得多次生成同一用户的密码摘要各不相同,用来防止重放攻击
  • nc:nonce计数器,是一个16进制的数值,表示同一nonce下客户端发送出请求的数量。例如,在响应的第一个请求中,客户端将发送“nc=00000001”。这个指示值的目的是让服务器保持这个计数器的一个副本,以便检测重复的请求
  • cnonce:客户端随机数,这是一个不透明的字符串值,由客户端提供,并且客户端和服务器都会使用,以避免用明文文本。这使得双方都可以查验对方的身份,并对消息的完整性提供一些保护
  • response:这是由用户代理软件计算出的一个字符串,以证明用户知道口令
  • Authorization-Info:用于返回一些与授权会话相关的附加信息
  • nextnonce:下一个服务端随机数,使客户端可以预先发送正确的摘要
  • rspauth:响应摘要,用于客户端对服务端进行认证
  • stale:当密码摘要使用的随机数过期时,服务器可以返回一个附带有新随机数的401响应,并指定stale=true,表示服务器在告知客户端用新的随机数来重试,而不再要求用户重新输入用户名和密码了

二、windows 搭建http服务器并设置摘要认证

要在Windows上搭建HTTP服务器并设置摘要认证,您可以使用以下步骤:

  1. 安装HTTP服务器软件:您可以选择使用XAMPP、WAMP、EasyPHP或Uniform Server等常用的服务器软件。这些软件都包括了Apache Web服务器、PHP解释器和MySQL数据库等组件,可以方便地在Windows上搭建一个PHP网站。

  2. 配置HTTP服务器:打开HTTP服务器软件的配置文件,找到HTTP服务器的配置选项。您需要启用“mod_auth_digest”模块,并设置摘要认证的相关参数,如认证域、认证用户名和密码等。

  3. 创建认证用户:在HTTP服务器的配置文件中,您需要指定哪些用户可以访问您的网站。您需要创建一个或多个用户,并为每个用户设置一个用户名和密码。

  4. 测试HTTP摘要认证:使用浏览器或HTTP客户端工具,向您的HTTP服务器发送一个HTTP请求。您应该会收到一个401未经授权的错误响应。在请求中包含一个“Authorization”头,该头包含一个摘要认证的用户名和密码。如果您输入了正确的用户名和密码,您应该能够成功访问您的网站。

请注意,HTTP摘要认证并不是最安全的身份验证机制,因为它仍然容易受到中间人攻击和重放攻击的影响。如果您需要更高级别的安全性,建议使用HTTPS和基本身份验证等更安全的身份验证方法。

Z-WAMP或者XAMPP下载地址

你可以通过以下链接下载Z-WAMP或XAMPP:

Z-WAMP下载地址:https://www.z-wamp.com/en/download-z-wamp

XAMPP下载地址:https://www.apachefriends.org/download.html

XAMPP配置和使用详细步骤

XAMPP是一个免费的、易于安装和使用的服务器集成软件包,它包含Apache、MySQL、PHP和Perl等常用的Web开发工具。以下是XAMPP的配置和使用详细步骤:

  1. 下载XAMPP
    在Apache Friends的官方网站(https://www.apachefriends.org/zh_cn/index.html)下载XAMPP安装包。

  2. 安装XAMPP
    双击下载好的XAMPP安装包进行安装。在安装过程中,你可以选择安装哪些组件,这取决于你个人的需求。通常情况下,建议选择默认安装选项。

  3. 启动XAMPP
    安装完成后,启动XAMPP控制面板,点击"Start"按钮启动Apache和MySQL服务。

  4. 测试XAMPP
    打开浏览器,输入http://localhost/,如果看到"XAMPP for Windows"的欢迎页面,则说明XAMPP已经安装成功。

  5. 配置XAMPP
    如果需要修改Apache或MySQL的配置,可以在XAMPP控制面板中点击"Config"按钮进行修改。例如,你可以通过修改httpd.conf文件来修改Apache的设置。

  6. 创建网站
    在XAMPP的安装目录下,有一个htdocs文件夹,你可以在此文件夹下创建自己的网站。例如,你可以在htdocs文件夹下创建一个名为"mywebsite"的文件夹,并在其中放置自己的网站文件。

  7. 访问网站
    在浏览器中输入http://localhost/mywebsite/,即可访问自己的网站。

总之,XAMPP是一个非常方便的服务器集成软件包,可以帮助你快速搭建并测试自己的网站。

XAMPP配置使用摘要认证

XAMPP是一个方便快捷的集成开发环境,包含Apache、MySQL、PHP和Perl等服务。要在XAMPP上配置使用摘要认证,需要做以下几个步骤:

  1. 打开XAMPP控制面板,启动Apache服务。

  2. 打开Apache配置文件httpd.conf,可以在XAMPP控制面板中点击Apache的Config按钮,再选择Apache(httpd.conf)来打开该文件。

  3. 找到以下几行代码:

    #LoadModule auth_digest_module modules/mod_auth_digest.so
    #LoadModule authn_file_module modules/mod_authn_file.so
    

    将这两行代码的注释去掉,即将#号删除,使其变为以下形式:

    LoadModule auth_digest_module modules/mod_auth_digest.so
    LoadModule authn_file_module modules/mod_authn_file.so
    

    这样就加载了Apache的摘要认证模块。

  4. 在httpd.conf中添加以下代码:(测试单配这里不行,又配置了 httpd-xampp.conf )

    # 目录
    <Directory "/secure">
        AuthType Digest
        AuthName "Protected Area"
        AuthDigestDomain /secure/
        AuthDigestProvider file
        AuthUserFile "/xampp/htdocs/digest/password/.htdigest"
        Require valid-user
    </Directory>
    # 文件
    <Location "/digest/testfile1">
        AuthType Digest
        AuthName "Protected Area"
        AuthDigestDomain /digest/testfile1
        AuthDigestProvider file
        AuthUserFile "/xampp/htdocs/digest/password/.htdigest"
        Require valid-user
    </Location>
    
    # digest 这种没有生效
    <Files "/digest/testfile2">
        AuthType Digest
        AuthName "Protected Area"
        AuthDigestDomain /digest/testfile2
        AuthDigestProvider file
        AuthUserFile "/xampp/htdocs/digest/password/.htdigest"
        Require valid-user
    </Files>
    
    
    

    注意:要有对应文件和目录。

    其中,/secure 为要保护的目录路径,AuthName为认证区域的名称,AuthDigestDomain定义了哪个域名下的请求需要进行认证,AuthDigestProvider指定了认证方式,此处为文件认证,AuthUserFile指定了密码文件的路径,Require valid-user表示只有通过认证的用户才能访问该目录。

    总结起来,Directory指令用于配置特定目录中的身份认证,Location指令用于配置特定URL路径的身份认证,而Files指令用于配置特定文件的身份认证。

  5. 在httpd-xampp.conf文件中添加以下配置:后来验证不需要

    <Location "/secure">
        AuthType Digest
        AuthName "Protected Area"
        AuthDigestDomain /secure/
        AuthDigestProvider file
        AuthUserFile "/xampp/htdocs/digest/password/.htdigest"
        Require valid-user
    </Location>
    

    其中,/secure是您要保护的目录路径,可以根据需要进行修改。AuthName是认证提示信息,可以根据需要进行修改。AuthUserFile是存储用户信息的文件路径,这里使用了XAMPP默认的文件路径。

  6. 创建密码文件。可以使用htdigest工具创建密码文件,命令如下:(htdigest 在安装路径 D:\xampp\apache\bin)

    htdigest -c D:\xampp\htdocs\digest\password\.htdigest "Protected Area" admin
    

    其中,D:\xampp\htdocs\digest\password.htdigest为密码文件路径,"Protected Area"为认证区域名称,username为要添加的用户名,执行命令后会提示输入密码。

  7. 重新启动Apache服务,访问被保护的目录时会弹出认证窗口,输入用户名和密码即可访问。

测试

方式一:浏览器访问下面地址,弹窗提示输入用户名和密码即表示生效:(可wireshark抓包)
http://localhost:8088/secure/

方式二:Postman访问

方式三:curl --digest -u admin:admin http://localhost:8088/secure/

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值