WebApi四种登录验证方法详解:FORM、Windows、Basic与Digest

需积分: 49 9 下载量 131 浏览量 更新于2024-07-17 收藏 229KB DOCX 举报
本文档详细介绍了WebApi中四种常见的登陆验证方式:FORM身份验证、集成WINDOWS验证、Basic基础认证和Digest摘要认证。针对每一种方式,作者给出了具体的实现步骤和示例代码。 1. **FORM身份验证** - FORM身份验证是WebApi中的一种基本验证方式,但需要注意的是,当在ASP.NET应用程序中使用时,由于Cookie的跨域限制,它可能不适用于跨域请求。作者提供了一个自定义的`FormAuthenticationFilterAttribute`,用于检查HTTP请求头中的Cookie来判断用户是否已登录。在需要认证的Controller或Action方法上添加此过滤器,并创建一个专门的登录入口,如`/api/test/login`。 - 测试用法包括直接在浏览器访问需要授权的方法,以及通过HttpClient发起请求,验证登录状态和携带的Cookie。 2. **集成WINDOWS验证** - 这种方式利用Windows操作系统提供的身份验证机制。在`WEB.CONFIG`中开启Windows身份验证,配置了`<authentication>`和`<authorization>`元素。Controller中的Action方法上使用`Authorize`特性来指定需要授权访问。为了使WebApi与IIS协作,需要在IIS中启用Windows身份验证,并将WebApi部署到IIS。 3. **Basic基础认证** - 基本认证允许客户端在HTTP头部发送用户名和密码,WebApi服务器需要解析这些信息进行验证。虽然没有在文档中详述,但在实际开发中,开发者可能会使用HttpBasicAuthModule或者自定义中间件处理这种验证。 4. **Digest摘要认证** - 摘要认证是一种安全的HTTP认证机制,客户端在发送请求时会计算哈希值,WebApi服务器同样计算并验证。这种方式比Basic认证更安全,但实现相对复杂,通常会在安全性要求较高的场景下使用。 总结来说,本文档提供了丰富的实战指导,帮助开发者理解和选择适合的WebApi登录验证方式,并通过示例代码确保开发者能够顺利实施。无论是跨域问题还是Windows集成,都为开发者在实际项目中遇到类似问题时提供了宝贵的参考。
2016-07-19 上传
MVC WebApi 用户权限验证及授权DEMO 前言:Web 用户的身份验证,及页面操作权限验证是B/S系统的基础功能,一个功能复杂的业务应用系统,通过角色授权来控制用户访问,本文通过Form认证,Mvc的Controller基类及Action的权限验证来实现Web系统登录,Mvc前端权限校验以及WebApi服务端的访问校验功能。 1 Web Form认证介绍 Web应用的访问方式因为是基于浏览器的Http地址请求,所以需要验证用户身份的合法性。目前常见的方式是Form认证,其处理逻辑描述如下: 1) 用户首先要在登录页面输入用户名和密码,然后登录系统,获取合法身份的票据,再执行后续业务处理操作; 2) 用户在没有登录的情况下提交Http页面访问请求,如果该页面不允许匿名访问,则直接跳转到登录页面; 3) 对于允许匿名访问的页面请求,系统不做权限验证,直接处理业务数据,并返回给前端; 4) 对于不同权限要求的页面Action操作,系统需要校验用户角色,计算权限列表,如果请求操作在权限列表中,则正常访问,如果不在权限列表中,则提示“未授权的访问操作”到异常处理页面。 2 WebApi 服务端Basic 方式验证 WebApi服务端接收访问请求,需要做安全验证处理,验证处理步骤如下: 1) 如果是合法的Http请求,在Http请求头中会有用户身份的票据信息,服务端会读取票据信息,并校验票据信息是否完整有效,如果满足校验要求,则进行业务数据的处理,并返回给请求发起方; 2) 如果没有票据信息,或者票据信息不是合法的,则返回“未授权的访问”异常消息给前端,由前端处理此异常。 3 登录及权限验证流程 1) 用户打开浏览器,并在地址栏中输入页面请求地址,提交; 2) 浏览器解析Http请求,发送到Web服务器;Web服务器验证用户请求,首先判断是否有登录的票据信息; 3) 用户没有登录票据信息,则跳转到登录页面; 4) 用户输入用户名和密码信息; 5) 浏览器提交登录表单数据给Web服务器; 6) Web服务需要验证用户名和密码是否匹配,发送api请求给api服务器; 7) api用户账户服务根据用户名,读取存储在数据库中的用户资料,判断密码是否匹配; 7.1)如果用户名和密码不匹配,则提示密码错误等信息,然该用户重新填写登录资料; 7.2)如果验证通过,则保存用户票据信息; 8) 接第3步,如果用户有登录票据信息,则跳转到用户请求的页面; 9) 验证用户对当前要操作的页面或页面元素是否有权限操作,首先需要发起api服务请求,获取用户的权限数据; 10). api用户权限服务根据用户名,查找该用户的角色信息,并计算用户权限列表,封装为Json数据并返回; 11). 当用户有权限操作页面或页面元素时,跳转到页面,并由页面Controller提交业务数据处理请求到api服务器; 如果用户没有权限访问该页面或页面元素时,则显示“未授权的访问操作”,跳转到系统异常处理页面。 12). api业务服务处理业务逻辑,并将结果以Json 数据返回; 13). 返回渲染后的页面给浏览器前端,并呈现业务数据到页面; 14). 用户填写业务数据,或者查找业务数据; 15). 当填写或查找完业务数据后,用户提交表单数据; 16). 浏览器脚本提交get,post等请求给web服务器,由web服务器再次解析请求操作,重复步骤2的后续流程; 17). 当api服务器验证用户身份是,没有可信用户票据,系统提示“未授权的访问操作”,跳转到系统异常处理页面。