Questions tagged «oauth»

3
REST API安全性存储令牌vs JWT vs OAuth
我仍在尝试寻找最佳的安全解决方案来保护REST API,因为移动应用程序和API的数量每天都在增加。 我尝试了不同的身份验证方式,但是仍然存在一些误解,因此我需要经验丰富的人的建议。 让我说说,我如何理解所有这些东西。如果我理解不正确,请告诉我。 就REST API和WEB而言,它都是无状态的,我们需要在每个请求中发送一些auth数据(cookie,令牌...)。我知道三种用于验证用户身份的广泛使用的机制 使用HTTPS的令牌。我已经使用这种方法很多次,对于HTTPS来说已经足够了。如果用户提供正确的密码和登录名,他将收到令牌作为响应,并将其用于其他请求。令牌由服务器生成并存储,例如存储在单独的表中或存储用户信息的表中。因此,对于每个请求服务器,检查用户是否具有令牌,并且该令牌与数据库中的令牌相同。一切都非常简单。 JWT令牌。该令牌是自描述的,它包含有关令牌本身的所有必要信息,用户无法更改(例如到期日期)或任何其他声明,因为该令牌是由服务器使用secret关键字生成(签名)的。这也很清楚。但是对我个人来说,一个大问题是如何使令牌无效。 OAuth2。我不明白为什么直接在服务器和客户端之间建立通信时应使用这种方法。据我了解,OAuth服务器用于发布具有受限范围的令牌,以允许其他应用程序访问用户信息而无需存储密码和登录名。对于社交网络而言,这是一个很好的解决方案,当用户想要在某个页面上进行注册时,服务器可以请求权限以获取用户信息(例如,从Twitter或Facebook获取信息),并使用用户数据等填充注册字段。 考虑将移动客户端用于在线商店。 第一个问题,我应该比第一类令牌更喜欢JWT吗?就我需要在移动客户端上登录/注销用户而言,我需要将令牌存储在某个地方,或者在JWT的情况下,令牌应该在注销时失效。使用不同的方法来使令牌无效,其中之一是创建无效的令牌列表(黑名单)。嗯 表/文件的大小比令牌存储在表中并与用户相关联并且在注销时被删除时要大得多。 那么,JWT令牌的好处是什么? 关于OAuth的第二个问题,如果与服务器直接通信,应该使用它吗?客户端和服务器之间仅发出令牌的另一层的目的是什么,但是通信将不是与oauth服务器,而是与主服务器。据我了解,OAuth服务器仅负责授予第三方应用访问用户私人信息的权限(令牌)。但是我的移动客户端应用程序不是第三方。
104 security  rest  api  oauth  https 

5
如何存储开放源代码桌面Twitter客户端的OAuth v1使用者密钥和机密,而不向用户透露?
我想制作一个胖客户端,桌面,开源Twitter客户端。我碰巧正在使用.NET作为我的语言,并使用Twitterizer作为我的OAuth / Twitter包装,并且我的应用程序很可能会以开源形式发布。 要获得OAuth令牌,需要四项信息: 访问令牌(Twitter用户名) 访问机密(Twitter密码) 消费者密钥 消费者的秘密 后两个信息不应该共享,例如PGP私钥。但是,由于OAuth授权流程的设计方式,这些必须位于本机应用程序上。即使该应用程序不是开源的,并且用户密钥/秘密已加密,一个熟练的用户也可以访问用户密钥/秘密对。 所以我的问题是,如何解决这个问题?桌面Twitter客户端保护其用户密钥和机密的正确策略是什么?

4
我应该如何构建RESTful Web服务以使用第三方(即Google,Facebook,Twitter)进行身份验证?
对于我的工作,我们有一个不错的RESTful Web服务,我们已经建立了该服务,用于驱动我们拥有的几个网站。基本上,Web服务使您可以创建和使用支持凭单,并且网站负责前端。任何网络服务请求都使用auth标头,我们使用该标头来验证用户及其每次呼叫的密码。 今年,我们正在寻求扩展登录选项,以便网站上的用户可以通过Google,Twitter和Facebook(可能还有其他)登录。但是,我在弄清楚如何设计该结构方面很麻烦,因此Web服务可以使用第三方身份验证提供程序来确保用户就是他们所说的。是否有最佳实践来做到这一点? 当前,我们正在考虑让网站处理用户本身的身份验证,然后使用一个新的setSessionId调用来将其当前会话注册到Webservice后端。对Web服务的每个其他请求都将传递该sessionId并将对其进行验证。这些看起来还可以,但是我的内心深处感到我没有考虑透彻,所有浏览和阅读oauth和openid规范的论坛都让我更加困惑。有什么技巧可以解决这个问题吗?

5
适用于公共REST API的OAuth2 ROPC与基本身份验证?
我在这里感兴趣的特定用例是针对可公开使用的服务器端点(例如,公共REST API)对REST客户端进行身份验证。 这里最简单的解决方案是Basic Auth。但是我经常听到OAuth2在几乎所有情况下都被视为一种出色的身份验证解决方案。 事实是,对于REST客户端针对REST服务器进行身份验证的唯一可行的OAuth2授予​​类型是资源所有者密码凭证(ROPC),因为代码授予和隐式授予要求用户界面/网页(由Auth服务器托管)用户登录并手动授权客户端应用。 ROPC的工作方式是,通过发送资源所有者的用户名/密码和客户端ID作为查询字符串参数?这比基本身份验证(IMHO)更为不安全,基本身份验证至少使用base-64对凭据进行编码,然后将其发送到可以由TLS加密的标头中! 所以我问:在公共REST API的上下文中,OAuth2 ROPC是否真的比Basic Auth更好?有什么比OAuth2 ROPC更安全的? 更新资料 我刚刚读了这篇出色的文章,解释了Amazon针对AWS的非基于OAuth2的REST安全性。从本质上讲,这是一个基于私钥的解决方案,其中,每个REST请求的哈希都将生成,并作为sidecar与常规(未加密)请求一起发送。只有客户端和服务器知道私钥,因此,当服务器接收到该请求(再次包含普通请求+散列请求)时,服务器将查找客户端的私钥,将相同的哈希应用于普通请求,并然后比较两个哈希。 这听起来比OAuth2的ROPC更加复杂,复杂和安全!除非我在这里缺少一些重要的东西,否则OAuth2 ROPC只会发送client_id,username并且password作为查询字符串参数...完全完全不安全!这种基于HMAC /哈希的解决方案似乎更加令人印象深刻和安全。 问题是,即使是该文章的作者也继续说: 您[也会]慢慢意识到并接受在某个时候您将必须实现OAuth ... 巴巴巴哇?!?!如果OAuth2的安全性不如此聪明的基于HMAC /哈希的解决方案,那么为什么本文的作者感到在某些时候需要使用OAuth。我很混乱。
21 rest  oauth  https 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.