第四十七章 为 Web 应用程序实现 HTTP 身份验证

文章目录

  • 第四十七章 为 Web 应用程序实现 HTTP 身份验证
  • `Apache` 中的标准 `HTTP` 身份验证 (`mod_auth`)
  • 在处理请求的同时在 `CSP` 中进行身份验证。

第四十七章 为 Web 应用程序实现 HTTP 身份验证

Apache 模块(mod_csp*.so/dllCSPa*[Sys].so/dll)允许 IRIS 控制 HTTP 身份验证。

Web 请求的 HTTP 身份验证通常在 Web 服务器和客户端(浏览器)之间进行。因此,通常不可能在 Web 服务器托管的自定义请求处理程序(例如 CGI 程序和基于 Web 服务器 API 的请求处理程序)中实现 HTTP 身份验证。当然,此类扩展可以发出 401 Authorization required 响应标头,并且作为响应,浏览器会显示 HTTP 登录对话框。但是,在后续请求中,Web 服务器会拦截用户的登录详细信息,并尝试使用其自己的内置功能对用户进行身份验证。在 Web 服务器根据自己的条件对用户进行身份验证之前,用户名和密码不会(至少在第一个实例中)传递到请求处理扩展。

此方案给希望在其选择的技术内本地(并以编程方式)执行 HTTP 身份验证的第三方开发技术(例如 CSP)的用户带来了问题。

这里描述的功能克服了这些技术困难,并允许用户在 IRIS 环境中对 Apache 托管的 Web 应用程序执行 HTTP 身份验证。 Apache 用户可以在以下各节中描述的三种方法之间进行选择。

Apache 中的标准 HTTP 身份验证 (mod_auth)

该方法是Apache提供的标准机制(通过mod_auth模块),不涉及Web Gateway。这里提到它是为了完整性。

例如,使用基于 Apache 的身份验证保护 CSP 示例所需的基本参数显示在以下配置块 (httpd.conf) 中:

<Location "/csp/samples/">AuthType BasicAuthName "CSP samples"AuthUserFile conf/csp.pwdrequire valid-user
</Location>

其中:

  • AuthType - AuthType 是所需的授权类型(通常是基本)。
  • AuthName - AuthName 是领域。
  • AuthUserFile - AuthUserFile 是保存用户名及其关联密码(以加密形式)的文件(相对于 Web 服务器根目录)。该文件由 Apache htpasswd 实用程序创建和维护。

require 参数列出了可以访问受保护资源的用户(本例中为 CSP 示例)。 valid-user 参数指示必须在用户名/密码文件中定义用户(如 AuthUserFile 中声明的那样)。

https://httpd.apache.org/docs/2.4/mod/mod_authz_groupfile.html#authgroupfile

在处理请求的同时在 CSP 中进行身份验证。

这是在 Web 应用程序中实现 HTTP 身份验证的首选(也是性能最佳)方法。

使用基于 CSP 的身份验证保护 CSP 示例所需的基本参数显示在以下 Apache 配置块 (httpd.conf) 中:

<Location "/csp/samples/"> AuthType Basic AuthName "CSP samples" require valid-user AuthCSPEnable OnAuthBasicAuthoritative Off
</Location> 

参数 AuthTypeAuthNamerequire 是用于触发身份验证的标准 Apache 参数。

附加的 AuthCSPEnable 参数指示 CSP 模块绕过由 Apache(在 mod_auth 中)执行的身份验证检查,并将用户名和密码以及原始 Web 请求传递到 IRIS 进行身份验证。 Web 应用程序必须使用以下 CGI 环境变量检查用户:

  • AUTH_TYPE:这是基本的。
  • REMOTE_USER:用户名。
  • AUTH_PASSWORD:用户的密码(纯文本)。

如果可以根据这些参数中保存的值成功对用户进行身份验证,则应用程序应继续并处理请求(即返回请求的 CSP 资源)。如果没有,它应该返回一个 HTTP 401 Authorization required 响应,该响应至少应该类似于:

HTTP/1.1 401 Authorization Required 
WWW-Authenticate: Basic realm="CSP samples" 
Content-Type: text/html 
Connection: close 
<html> 
<head><title>401 Authorization Required</title>
</head><body> <h1>Authorization Required</h1> 
<p> The server could not verify that you are authorized 
to access the application. Check your username and password. 
</p> 
<hr> 
</body> 
</html> 
```收到此消息后,浏览器将重新显示登录对话框,除非用户已用完所有登录尝试(通常为 `3` 次),在这种情况下,将显示标题后面的消息。用户可以通过修改登录页面来实现这种认证方式。如果收到请求并且用户没有运行应用程序所需的权限,则会调用登录页面,该页面的处理可以从请求中提取身份验证信息(例如 `AUTH_TYPE`、`REMOTE_USER` 和 `AUTH_PASSWORD`)。如果这些参数正确,则登录脚本可以将控制重定向到最初请求的应用程序页面。如果部署了 安全控制层,则无需对所有公共页面重复身份验证过程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/801817.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Go语言中如何实现继承

完整课程请点击以下链接 Go 语言项目开发实战_Go_实战_项目开发_孔令飞_Commit 规范_最佳实践_企业应用代码-极客时间 Go语言中没有传统意义上的类和继承的概念&#xff0c;但可以通过嵌入类型&#xff08;embedded types&#xff09;来实现类似的功能。嵌入类型允许一个结构…

第一部分 Vue讲解(代码版)

1.第一个vue实例 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-w…

Android Activity 介绍

Activity Activity 是一个应用组件&#xff0c;用户可与其提供的屏幕进行交互&#xff0c;以执行拨打电话、拍摄照片、发送电子邮件或查看地图等操作。 每个 Activity 都会获得一个用于绘制其用户界面的窗口。窗口通常会充满屏幕&#xff0c;但也可小于屏幕并浮动在其他窗口之…

系统参数指标:QPS、TPS、PV、UV等

QPS QPS&#xff1a;Queries Per Second 是每秒查询率&#xff0c;是一台服务器每秒能够相应的查询次数&#xff0c;是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准&#xff0c;即每秒的响应请求数&#xff0c;也即是最大吞吐能力。 TPS TPS&#xff1a;Tra…

性能优化 - 你知道开发React项目中,可以做哪些性能优化吗

难度级别:中高级及以上 提问概率:75% 在React项目开发中,面临着比较大的问题就是组件更新以及重复渲染的问题,基于这两点,我们可以在日常开发工作中,可以通过以下几点,来提升React的性能,加快组件更新对比,避免过多的重复渲染问题。 …

MySQL - MySQL数据库的事务(二)

1. SQL标准中对事务的4个隔离级别都是如何规定的? 数据库中多个事务并发时可能产生的问题包括脏写、脏读、不可重复读、幻读几个问题,那么针对这些多事务并发的问题,实际上SQL标准中就规定了事务的集中隔离级别,用来解决这些问题。 在SQL标准中规定了4中事务隔离级别,就…

刷题DAY48 | LeetCode 198-打家劫舍 213-打家劫舍II 337-打家劫舍III

198 打家劫舍&#xff08;medium&#xff09; 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一晚上被小偷闯入&#xff0c;系统…

Linux笔记-对xargs的理解(2023-12-13)

此篇记录在个人笔记库的时间是2023-12-13&#xff0c;公布到互联网上的时间是2024-04-09 这个命令最开始是在5年前看人用过&#xff0c;当时不太理解&#xff0c;最近又看到有人在用&#xff0c;突然间就通了&#xff0c;也查阅了点资料&#xff0c;记录下这个笔记&#xff1a…

吴恩达深度学习笔记:深层神经网络(Deep Neural Networks)4.5-4.8

目录 第一门课&#xff1a;神经网络和深度学习 (Neural Networks and Deep Learning)第四周&#xff1a;深层神经网络(Deep Neural Networks)4.5 为什么使用深层表示&#xff1f;&#xff08;Why deep representations?&#xff09; 第一门课&#xff1a;神经网络和深度学习 (…

CKA 基础操作教程(五)

Kubernetes Ingress 理论学习 Ingress 提供从集群外部到集群内服务的 HTTP 和 HTTPS 路由。 流量路由由 Ingress 资源所定义的规则来控制。 Ingress 资源示例&#xff1a; apiVersion: networking.k8s.io/v1 # 指定 Kubernetes 中使用的 API 版本 kind: Ingress # 指定对象…

c语言 :柔性数组与c/c++内存领域的划分

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一 柔性数组&#xff08;1&#xff09;什么是柔性数组1&#xff09;柔性数组的声明2&#xff09;柔性数组的特性 &#xff08;2&#xff09;柔性数组的使用 二 c/c内…

APx500音频分析仪硬件简介

两通道模拟输出&#xff0c;两通道或以上的模拟输入接口 线性编码数字音频接口&#xff08;AES/EBU,TOSLINK,SPDIF&#xff09;Linear PCM 脉冲密度调制码流&#xff08;需要APx-PDM选件支持&#xff09; Bluetooth蓝牙音频码流&#xff08;需APx-BT选件支持&#xff09; 最…

linux安装docker(可靠)

卸载旧版 首先如果系统中已经存在旧的Docker&#xff0c;则先卸载&#xff1a; yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine2.配置Docker的yum库 首先要安装一个yum工…

企业微信客户联系功能获取token接口走代理报403错误

问题描述:项目中在实现企业微信-客户联系功能时,第一步是调用接口获取企业token. https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpidxxx&corpsecretxxx. 我们的网络架构分为: 外网,DMZ区,内网. 服务部署在内网,访问外网需要走DMZ区代理转发. 我们的DMZ区nginx中配置的…

用二八定律分析零售数据,不就更直观了吗?

20%的商品贡献了80%的销售金额&#xff0c;你会不会想知道这些商品的销售金额、毛利、销售金额累计占比、毛利累计占比&#xff0c;会不会想知道这些商品在各个门店的销售表现&#xff1f;看是否能进一步提高销售金额&#xff0c;提高毛利。这样的报表该怎么做&#xff1f;奥威…

Ceph学习 -4.Ceph组件介绍

文章目录 1.Ceph组件介绍1.1 组件介绍1.2 流程解读1.2.1 综合效果图1.2.2 数据存储逻辑 1.3 小结 1.Ceph组件介绍 学习目标&#xff1a;这一节&#xff0c;我们从组件介绍、流程解读、小结三个方面来学习。 1.1 组件介绍 无论是想向云平台提供 Ceph 对象存储和 Ceph 块设备服务…

【牛客SQL快速入门】SQL基础(一)

一、基础查询 SELECT ... FROM ... 查询所需的列名写在 SELECT 关键字之后&#xff0c;FROM 关键字指出从哪个表中查询数据。 查询多个列 要想从一个表中查询多个列&#xff0c;仍然使用相同的 SELECT 语句。唯一的不同是必须在SELECT 关键字后给出多个列名&#xff0c;列名…

Xinstall助力提升用户体验:一键打开App用户页面

在移动互联网时代&#xff0c;App已经成为我们日常生活中不可或缺的一部分。然而&#xff0c;随着App数量的激增&#xff0c;如何让用户更便捷地打开和使用App&#xff0c;提升用户体验&#xff0c;成为了开发者和广告主们亟待解决的问题。此时&#xff0c;Xinstall作为国内专业…

先安装CUDA后安装Visual Studio的额外配置

VS新建项目中增加CUDA选项 以vs2019 cuda 11.3为例 关闭vs2019解压cuda的windows安装包cuda_11.3.0_465.89_win10.exe进入路径cuda_11.3.0_465.89_win10\visual_studio_integration\CUDAVisualStudioIntegration\extras\visual_studio_integration\CudaProjectVsWizards\拷贝…

[Linux][权限][粘滞位]详细解读,深入了解Linux权限

1.Linux权限的概念 Linux下有两种用户&#xff1a;超级用户(root)、普通用户 超级用户&#xff1a;可以在Linux系统下做任何事情&#xff0c;不受限制普通用户&#xff1a;在Linux下做有限的事情&#xff0c;可以有多个超级用户的命令提示符是**“#”&#xff0c;普通用户的命…