2012-05-15 70 views
0

我是OAuth的新手,并且难以将工作过程背后的过程可视化。OAuth和握手混淆

据我所知,当我尝试通过OAuth验证凭据时,我向登录服务器发送了一个请求,该请求接管并让用户在网站上登录。如果凭据有效,则会访问OAuth请求的回调URL,并将令牌附加到回调URL。该令牌必须与所有未来的HTTP请求一起传递给服务器,并用作用户证书的验证。

我困惑的地方是,如何使这个过程适应没有服务器的桌面应用程序?我如何使用回调URL,以及如何在桌面上运行.NET应用程序时如何检索令牌?

谢谢!

回答

2

这取决于您想要支持的服务提供商。

谷歌对如何使用OAuth 2.0“安装的应用程序”这里一个很好的说明: https://developers.google.com/accounts/docs/OAuth2InstalledApp

在一般情况下,有几个不同的策略:

  1. 执行OAuth的流程,你如上所述 - 使用标准URL处理程序弹出浏览器,但要求用户将授权码从浏览器复制/粘贴回您的应用程序。这需要提供商支持urn:ietf:wg:oauth:2.0:oob的redirect_url。
  2. 打开浏览器窗口,并自动从浏览器的标题窗口中捕获服务器返回的授权码,而不需要复制/粘贴。这也需要支持OOB redirect_url。
  3. 在您的应用程序中将OAuth请求作为嵌入式浏览器窗口执行,并捕获#2中的授权代码。

如果您的OAuth 2.0提供程序不支持OOB,也可以重定向到您自己的Web服务器来完成类似的任务。

最大的问题是你是否正在进行身份验证(获取用户身份)或授权(通过Web API访问用户数据)。如果您尝试对用户进行身份验证,则需要一些您可信任的服务器端逻辑来传递授权码或访问令牌进行验证。

+0

感谢您的回应!我现在面临的最大问题是,我的OAuth提供程序似乎不支持OOB。我没有尝试进行身份验证,我只是试图授权我的应用程序,以便它可以通过服务的Web API访问用户数据。这与在浏览器中登录用户并在浏览器窗口中搜索数据功能相同,只是从后端而不是前端。如果我的提供程序不支持OOB,它看起来像嵌入式浏览器窗口是我唯一的选择。 ( 编辑:无论如何,我必须进行身份验证,但这不是我的应用程序的要点 – sichinumi

+0

只要你有一个Web服务器,你的应用程序可以使用授权,你仍然可以使用其他技术之一,你只需要自己建立一个页面,上面写着“复制并粘贴下面的内容”,或者把它放到HTML 中,以供你的应用抓取。 刚刚找到另一个资源: http://wiki.oauth.net/w/页/ 27249271/OAuth的202%%20for%20Native%20Apps – <span class="text-secondary"> <small> <span></span> </small> </span> </p> </div> </div> </div> </div> </div> </article> <div> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-6208739752673518" data-ad-slot="1038284119" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> </div> <div class="clearfix"> </div> <div class="relative-box"> <div class="relative">相关问题</div> <ul class="relative_list"> <li> 1. <a href="http://www.uwenku.com/question/p-nujptolv-bmo.html" target="_blank" title="WebSocket草案76握手混淆"> WebSocket草案76握手混淆 </a> </li> <li> 2. <a href="http://www.uwenku.com/question/p-bblrerry-zz.html" target="_blank" title="OAuth 2.0中redirect_uri的混淆"> OAuth 2.0中redirect_uri的混淆 </a> </li> <li> 3. <a href="http://www.uwenku.com/question/p-orcvdoic-rq.html" target="_blank" title="Spring社交.NET OAuth混淆"> Spring社交.NET OAuth混淆 </a> </li> <li> 4. <a href="http://www.uwenku.com/question/p-ymdvvpcp-ra.html" target="_blank" title="libGDX新手混淆"> libGDX新手混淆 </a> </li> <li> 5. <a href="http://www.uwenku.com/question/p-korkzjvd-rc.html" target="_blank" title="SproutCore新手混淆"> SproutCore新手混淆 </a> </li> <li> 6. <a href="http://www.uwenku.com/question/p-fuogheng-cs.html" target="_blank" title="双向握手和三次握手"> 双向握手和三次握手 </a> </li> <li> 7. <a href="http://www.uwenku.com/question/p-ziwluabt-bcq.html" target="_blank" title="路由和Url助手混淆"> 路由和Url助手混淆 </a> </li> <li> 8. <a href="http://www.uwenku.com/question/p-xbhswqsv-bmk.html" target="_blank" title="的Rails:混淆块帮手和意见"> 的Rails:混淆块帮手和意见 </a> </li> <li> 9. <a href="http://www.uwenku.com/question/p-gxviadua-bkp.html" target="_blank" title="OAuth的握手复制错误"> OAuth的握手复制错误 </a> </li> <li> 10. <a href="http://www.uwenku.com/question/p-njcrpvwo-bek.html" target="_blank" title="手动混淆代码?"> 手动混淆代码? </a> </li> <div> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <ins class="adsbygoogle" style="display:block; text-align:center;" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-6208739752673518" data-ad-slot="4606349252"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <li> 11. <a href="http://www.uwenku.com/question/p-kzpxrccn-ev.html" target="_blank" title="sql助手类的混淆"> sql助手类的混淆 </a> </li> <li> 12. <a href="http://www.uwenku.com/question/p-gcfqzjan-nt.html" target="_blank" title="手稿定义混淆"> 手稿定义混淆 </a> </li> <li> 13. <a href="http://www.uwenku.com/question/p-msukeofs-zg.html" target="_blank" title="WordPress - 新手混淆提醒"> WordPress - 新手混淆提醒 </a> </li> <li> 14. <a href="http://www.uwenku.com/question/p-xcnhwhnx-hz.html" target="_blank" title="Yammer Oauth /应用程序混淆"> Yammer Oauth /应用程序混淆 </a> </li> <li> 15. <a href="http://www.uwenku.com/question/p-ngyxeuel-bbr.html" target="_blank" title="Twitter流媒体API - OAuth签名混淆"> Twitter流媒体API - OAuth签名混淆 </a> </li> <li> 16. <a href="http://www.uwenku.com/question/p-rcfmduig-us.html" target="_blank" title="混淆和jOOQ"> 混淆和jOOQ </a> </li> <li> 17. <a href="http://www.uwenku.com/question/p-blxiygoe-tr.html" target="_blank" title="混淆和SHA?"> 混淆和SHA? </a> </li> <li> 18. <a href="http://www.uwenku.com/question/p-orrbzuhi-wg.html" target="_blank" title="混淆和GPL"> 混淆和GPL </a> </li> <li> 19. <a href="http://www.uwenku.com/question/p-kbuylcms-bu.html" target="_blank" title="Rails和REST混淆"> Rails和REST混淆 </a> </li> <li> 20. <a href="http://www.uwenku.com/question/p-edmdkfsf-bmh.html" target="_blank" title="javascript和silverlight混淆!"> javascript和silverlight混淆! </a> </li> <li> 21. <a href="http://www.uwenku.com/question/p-eposgooz-bmy.html" target="_blank" title="WebApiRequestLifestyle和BackgroundJob混淆"> WebApiRequestLifestyle和BackgroundJob混淆 </a> </li> <li> 22. <a href="http://www.uwenku.com/question/p-euqzcjnd-bcp.html" target="_blank" title="Proguard混淆和Renderscript"> Proguard混淆和Renderscript </a> </li> <li> 23. <a href="http://www.uwenku.com/question/p-tilaessa-wv.html" target="_blank" title="IIS7和WCF混淆"> IIS7和WCF混淆 </a> </li> <li> 24. <a href="http://www.uwenku.com/question/p-yiavnypb-up.html" target="_blank" title="caliburn微和混淆"> caliburn微和混淆 </a> </li> <li> 25. <a href="http://www.uwenku.com/question/p-kquarnrp-bdu.html" target="_blank" title="HeapCreate和HeapAlloc混淆"> HeapCreate和HeapAlloc混淆 </a> </li> <li> 26. <a href="http://www.uwenku.com/question/p-tficxmcl-bko.html" target="_blank" title="BEGIN_MSG_MAP和BEGIN_MSG_MAP_EX混淆"> BEGIN_MSG_MAP和BEGIN_MSG_MAP_EX混淆 </a> </li> <li> 27. <a href="http://www.uwenku.com/question/p-xjhrffrc-zt.html" target="_blank" title="isset和$ _GET混淆"> isset和$ _GET混淆 </a> </li> <li> 28. <a href="http://www.uwenku.com/question/p-epwqzqoj-bnb.html" target="_blank" title="C#混淆和XAML"> C#混淆和XAML </a> </li> <li> 29. <a href="http://www.uwenku.com/question/p-ntvkbdqp-bcu.html" target="_blank" title="SQLServer2008:混淆或混淆"> SQLServer2008:混淆或混淆 </a> </li> <li> 30. <a href="http://www.uwenku.com/question/p-wrhmdewl-yk.html" target="_blank" title="灰烬把手混淆传递价值"> 灰烬把手混淆传递价值 </a> </li> </ul> </div> <div> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <ins class="adsbygoogle" style="display:block" data-ad-format="autorelaxed" data-ad-client="ca-pub-6208739752673518" data-ad-slot="1575177025"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <div class="padding-top-10"></div> </div> </div> <script type="text/javascript" src="http://img.uwenku.com/uwenku/script/side.js?t=1644592048176"></script> <script type="text/javascript" src="http://img.uwenku.com/uwenku/plugin/highlight/highlight.pack.js"></script> <link href="http://img.uwenku.com/uwenku/plugin/highlight/styles/docco.css" media="screen" rel="stylesheet" type="text/css" /> <script type="text/javascript"> $('pre').each(function(i, e) { hljs.highlightBlock(e, "<span class='indent'> </span>", false) }); </script> <div class="col-lg-3 col-md-4 col-sm-5"> <div id="rightTop"> <div class="row sidebar panel panel-default"> <div class="panel-heading font-bold"> 每日一句 </div> <div class="panel-body m-b-sm m-t-sm clearfix"> 每一个你不满意的现在,都有一个你没有努力的曾经。 </div> </div> <div class="row"> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-6208739752673518" data-ad-slot="5415218910" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <div class="row sidebar panel panel-default"> <div class="panel-heading font-bold"> 最新问题 </div> <div class="m-b-sm m-t-sm clearfix"> <ul class="side_article_list"> <li class="side_article_list_item"> 1. <a href="http://www.uwenku.com/question/p-yqndqgqw-bgc.html" target="_blank" title="jquery循环条件"> jquery循环条件 </a> </li> <li class="side_article_list_item"> 2. <a href="http://www.uwenku.com/question/p-apzouooa-bev.html" target="_blank" title="为什么SQLAlchemy关联对象中的外键标记为主键?"> 为什么SQLAlchemy关联对象中的外键标记为主键? </a> </li> <li class="side_article_list_item"> 3. <a href="http://www.uwenku.com/question/p-navhsyjn-bgs.html" target="_blank" title="为什么我的禁用/启用复选框在JQuery中不起作用?"> 为什么我的禁用/启用复选框在JQuery中不起作用? </a> </li> <li class="side_article_list_item"> 4. <a href="http://www.uwenku.com/question/p-ujuawspd-bmt.html" target="_blank" title="将自定义表格行添加到PHP中的HTML表格中"> 将自定义表格行添加到PHP中的HTML表格中 </a> </li> <li class="side_article_list_item"> 5. <a href="http://www.uwenku.com/question/p-hletfehz-bmn.html" target="_blank" title="如何防止对php或mysql级别的双表单提交?"> 如何防止对php或mysql级别的双表单提交? </a> </li> <li class="side_article_list_item"> 6. <a href="http://www.uwenku.com/question/p-pxyajeqb-boc.html" target="_blank" title="PostgreSQL中的时间序列有很大的查询需求"> PostgreSQL中的时间序列有很大的查询需求 </a> </li> <li class="side_article_list_item"> 7. <a href="http://www.uwenku.com/question/p-qdabqehu-bnq.html" target="_blank" title="如何模拟上下文(ActorContext)?"> 如何模拟上下文(ActorContext)? </a> </li> <li class="side_article_list_item"> 8. <a href="http://www.uwenku.com/question/p-kgedkfos-bnh.html" target="_blank" title="包括恢复提交的Rebase"> 包括恢复提交的Rebase </a> </li> <li class="side_article_list_item"> 9. <a href="http://www.uwenku.com/question/p-pweweabj-bdc.html" target="_blank" title="如何从存储在邮件Laravel"> 如何从存储在邮件Laravel </a> </li> <li class="side_article_list_item"> 10. <a href="http://www.uwenku.com/question/p-arjezbvg-bdn.html" target="_blank" title="阅读Csv到namedtuple"> 阅读Csv到namedtuple </a> </li> </ul> </div> </div> </div> <p class="article-nav-bar"></p> <div class="row sidebar article-nav"> <div class="row box_white visible-sm visible-md visible-lg margin-zero"> <div class="top"> <h3 class="title"><i class="glyphicon glyphicon-th-list"></i> 相关问题</h3> </div> <div class="article-relative-content"> <ul class="side_article_list"> <li class="side_article_list_item"> 1. <a href="http://www.uwenku.com/question/p-nujptolv-bmo.html" target="_blank" title="WebSocket草案76握手混淆"> WebSocket草案76握手混淆 </a> </li> <li class="side_article_list_item"> 2. <a href="http://www.uwenku.com/question/p-bblrerry-zz.html" target="_blank" title="OAuth 2.0中redirect_uri的混淆"> OAuth 2.0中redirect_uri的混淆 </a> </li> <li class="side_article_list_item"> 3. <a href="http://www.uwenku.com/question/p-orcvdoic-rq.html" target="_blank" title="Spring社交.NET OAuth混淆"> Spring社交.NET OAuth混淆 </a> </li> <li class="side_article_list_item"> 4. <a href="http://www.uwenku.com/question/p-ymdvvpcp-ra.html" target="_blank" title="libGDX新手混淆"> libGDX新手混淆 </a> </li> <li class="side_article_list_item"> 5. <a href="http://www.uwenku.com/question/p-korkzjvd-rc.html" target="_blank" title="SproutCore新手混淆"> SproutCore新手混淆 </a> </li> <li class="side_article_list_item"> 6. <a href="http://www.uwenku.com/question/p-fuogheng-cs.html" target="_blank" title="双向握手和三次握手"> 双向握手和三次握手 </a> </li> <li class="side_article_list_item"> 7. <a href="http://www.uwenku.com/question/p-ziwluabt-bcq.html" target="_blank" title="路由和Url助手混淆"> 路由和Url助手混淆 </a> </li> <li class="side_article_list_item"> 8. <a href="http://www.uwenku.com/question/p-xbhswqsv-bmk.html" target="_blank" title="的Rails:混淆块帮手和意见"> 的Rails:混淆块帮手和意见 </a> </li> <li class="side_article_list_item"> 9. <a href="http://www.uwenku.com/question/p-gxviadua-bkp.html" target="_blank" title="OAuth的握手复制错误"> OAuth的握手复制错误 </a> </li> <li class="side_article_list_item"> 10. <a href="http://www.uwenku.com/question/p-njcrpvwo-bek.html" target="_blank" title="手动混淆代码?"> 手动混淆代码? </a> </li> </ul> </div> </div> </div> </div> </div> </div> </div><!-- wrap end--> <!-- footer --> <footer id="footer"> <div class="bg-simple lt"> <div class="container"> <div class="row padder-v m-t"> <div class="col-xs-8"> <ul class="list-inline"> <li><a href="http://www.uwenku.com/contact">联系我们</a></li> <li>© 2020 UWENKU.COM</li> <li><a target="_blank" href="https://beian.miit.gov.cn/">沪ICP备13005482号-4</a></li> <li><script type="text/javascript" src="https://v1.cnzz.com/z_stat.php?id=1280101193&web_id=1280101193"></script></li> <li><a href="http://www.uwenku.com/" target="_blank" title="优文库">简体中文</a></li> <li><a href="http://hk.uwenku.com/" target="_blank" title="優文庫">繁體中文</a></li> <li><a href="http://ru.uwenku.com/" target="_blank" title="поле вопросов и ответов">Русский</a></li> <li><a href="http://de.uwenku.com/" target="_blank" title="Frage - und - antwort - Park">Deutsch</a></li> <li><a href="http://es.uwenku.com/" target="_blank" title="Preguntas y respuestas">Español</a></li> <li><a href="http://hi.uwenku.com/" target="_blank" title="कार्यक्रम प्रश्न और उत्तर पार्क">हिन्दी</a></li> <li><a href="http://it.uwenku.com/" target="_blank" title="IL Programma di chiedere Park">Italiano</a></li> <li><a href="http://ja.uwenku.com/" target="_blank" title="プログラム問答園区">日本語</a></li> <li><a href="http://ko.uwenku.com/" target="_blank" title="프로그램 문답 단지">한국어</a></li> <li><a href="http://pl.uwenku.com/" target="_blank" title="program o park">Polski</a></li> <li><a href="http://tr.uwenku.com/" target="_blank" title="Program soru ve cevap parkı">Türkçe</a></li> <li><a href="http://vi.uwenku.com/" target="_blank" title="Đáp ứng viên">Tiếng Việt</a></li> <li><a href="http://fr.uwenku.com/" target="_blank" title="Programme interrogation Park">Française</a></li> </ul> </div> </div> </div> </div> </div> </footer> <!-- / footer --> <script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?f78a970f17b19a79fc477a3378096f29"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script> </body> </html>