开源程序做网站,手机有软件做ppt下载网站,世界杯直播观看网站,百度网络营销app下载文章目录 第四十八章 为 Web 应用程序实现 HTTP 身份验证 - 在处理请求之前在 CSP 中进行身份验证在处理请求之前在 CSP 中进行身份验证。 第四十八章 为 Web 应用程序实现 HTTP 身份验证 - 在处理请求之前在 CSP 中进行身份验证
在处理请求之前在 CSP 中进行身份验证。
这是… 文章目录 第四十八章 为 Web 应用程序实现 HTTP 身份验证 - 在处理请求之前在 CSP 中进行身份验证在处理请求之前在 CSP 中进行身份验证。 第四十八章 为 Web 应用程序实现 HTTP 身份验证 - 在处理请求之前在 CSP 中进行身份验证
在处理请求之前在 CSP 中进行身份验证。
这是在 IRIS 中实现 HTTP 身份验证的替代方法。它主要适用于在 Web 应用程序中的请求处理时执行身份验证会很困难或耗时的情况。
在该方法中通过调用专用的认证类来对用户进行认证。 Web 网关在将原始请求分派至 IRIS 之前执行此检查。当身份验证类成功检查用户的详细信息后Web 应用程序无需执行任何进一步的检查。
当然此方法需要承担每个 Web 请求处理两个请求发送至 IRIS的开销一个用于身份验证另一个用于实际处理对 CSP 资源的请求。
实现此身份验证方法所需的基本参数显示在以下 Apache 配置块 (httpd.conf) 中
Location /csp/samples/ AuthType Basic AuthName CSP samples require valid-user AuthCSPEnable On AuthCSPClass /csp/samples/%CSP.HTTPAuthentication.cls AuthBasicAuthoritative Off
/Location
参数AuthType、AuthName、require和AuthCSPEnable与方法(2)相同。
附加的 AuthCSPClass 参数定义执行用户身份验证的类。该类必须继承 %CSP.Page并使用适当的 CGI 环境变量检查用户的登录详细信息如果操作成功则返回 200 OK 响应标头如果操作失败则返回 401 Authorization required 响应标头。
下面显示了一个简单的身份验证类其中根据 %Users 文件中保存的记录检查用户登录详细信息
Class %CSP.HTTPAuthentication Extends %CSP.Page
{ ClassMethod OnPreHTTP() As %Boolean { Set %response.ContentType text/html Set %session.Preserve 0 Quit 1 } ClassMethod OnPage() As %Status { Set crlf$Char(13,10) Set type%request.GetCgiEnv(AUTH_TYPE, ) Set user%request.GetCgiEnv(REMOTE_USER, ) Set pwd%request.GetCgiEnv(AUTH_PASSWORD, ) Set httpauth%request.GetCgiEnv(HTTP_AUTHORIZATION, )If httpauth {Set type$Piece(httpauth, ,1)Set user$system.Encryption.Base64Decode($Piece(httpauth, ,2))Set pwd$Piece(user,:,2)Set user$Piece(user,:,1)}Set auth0 If $ZConvert(type,L)basic Set auth1 If auth0,user,$Get(^%Users(user))pwd Set auth1 If auth1 { Write HTTP/1.1 200 OK_crlf Write Content-Type: text/html_crlf Write Content-Length: 0_crlf Write Connection: close_crlf_crlf } Else { Write HTTP/1.1 401 Authorization Required_crlf Write WWW-Authenticate: Basic realmCSP samples_crlf Write Content-Type: text/html_crlf Write Content-Length: 0_crlf Write Connection: close_crlf_crlf } Quit $$$OK } ClassMethod OnHTTPHeader(ByRef OutputBody As %Boolean) As %Status { Quit $$$OK }
}对于方法 (1) 和 (3)可以使用 Apache ErrorDocument 指令为登录失败指定自定义错误页面。例如
ErrorDocument /error/my_authentication_error.html 当然对于方法 (2)错误消息的文本由 Web 应用程序控制。