OAuth2学习及DotNetOpenAuth部分源码研究.docxVIP

OAuth2学习及DotNetOpenAuth部分源码研究.docx

  1. 1、本文档共48页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
OAuth2学习及DotNetOpenAuth部分源码研究

在上篇文章中我研究了OpenId及DotNetOpenAuth的相关应用,这一篇继续研究OAuth2.????? 一.什么是OAuth2????? OAuth是一种开放认证协议,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用.数字2表示现在使用第2代协议.?????? 二.OAuth2中的角色????? OAuth2有四种角色????? resource owner资源所有者:比如twitter用户,他在twitter的数据就是资源,他自己就是这些资源的所有者。????? resource server资源服务器:保存资源的服务器,别人要访问受限制的资源就要出示 Access Token(访问令牌)。????? client客户端:一个经过授权后,可以代表资源所有者访问资源服务器上受限制资源的一方。比如?开发者开发的应用。????? authorization server授权服务器:对资源所有者进行认证,认证通过后,向客户端发放 Access Token(访问令牌)。?????? 三.认证过程????? 用户访问客户端的网站,想操作自己存放在资源服务提供方的资源。????? 客户端将用户引导至授权服务提供方的授权页面请求用户授权,在这个过程中将客户端的回调连接发送给授权服务提供方。????? 用户在授权服务提供方的网页上输入用户名和密码,然后授权该客户端访问所请求的资源。????? 授权成功后,授权服务提供方对客户端授予一个授权码,网站跳回至客户端。????? 客户端获得授权码后,再次从授权服务提供方请求获取访问令牌。????? 授权服务提供方根据授权码授予客户端访问令牌。????? 客户端使用获取的访问令牌访问存放在资源服务提供方上的受保护的资源。?????? 四.获取访问令牌方式????? 从上面可以看到,令牌是串起整个认证流程的核心.OAuth2有四种获取令牌的方式????? Authorization Code授权码方式:这种是推荐使用的,也是最安全的.????? Implicit Grant隐式授权:相比授权码授权,隐式授权少了第一步的取Authorization Code的过程,而且不会返回 refresh_token。主要用于无服务器端的应用,比如?浏览器插件。????? Resource Owner Password Credentials资源所有者密码证书授权:这种验证主要用于资源所有者对Client有极高的信任度的情况,比如操作系统或高权限程序。只有在不能使用其它授权方式的情况下才使用这种方式。????? Client Credentials客户端证书授权:这种情况下 Client使用自己的 client证书(如 client_id及client_secret组成的 http basic验证码)来获取 access token,只能用于信任的client。????? 本文主要讲解第一种获取方式.????? 有能有些人有这样的疑问,为什么授权成功后不直接返回访问令牌,则是获取授权码,然后使用授权码去换访问令牌.这个问题的答案在官方的文档里,原因主要是保障数据安全性.当用户授权成功,浏览器从授权服务器返回客户端时,数据是通过QueryString传递的.如果直接返回访问令牌,则直接在地址栏可见,相关的日志系统也会记录,这会提高令牌被破解的风险.返回授权码,然后客户端通过直接通信使用授权码换取访问令牌,整个过程对用户是不可见的,这样大大提高了安全性.?????? 五.DotNetOpenAuth在OAuth2中的应用????? 官方Sample内包含有OAuth的完整示例,其授权服务器使用Mvc编写,客户端与资源服务器使用WebForm编写,数据层使用了EF.为了更加贴进实际使用,减少无关杂音,本人模仿其重写了一个Sample,本文的讲解将围绕自行编写的Sample展开.Sample示例可于文后下载.????? 1.客户端????? 客户端编程主要围绕三个类展开????? AuthorizationServerDescription,顾名思义,用于对服务端的描述.如下所示privatestatic AuthorizationServerDescription AuthServerDescription; privatestaticreadonly WebServerClient Client; static OAuth2Client() { AuthServerDescription = new AuthorizationServerDescription(); AuthServerDescription.TokenEndpoint

文档评论(0)

dlive45 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档