Questions tagged «oauth»

OAuth(开放授权)是客户端应用程序代表用户访问受保护资源的规范。它是作为用户将其登录凭据分发给第三方应用程序的替代方法而开发的。



10
OAuth 2与OAuth 1有何不同?
简单来说,有人可以解释OAuth 2和OAuth 1之间的区别吗? OAuth 1现在过时了吗?我们应该实施OAuth 2吗?我看不到OAuth 2的许多实现;大多数人仍在使用OAuth 1,这使我怀疑OAuth 2可以使用了。是吗?

22
设置HttpClient的授权标头
我有一个用于REST API的HttpClient。但是,我在设置Authorization标头时遇到了麻烦。我需要将标头设置为通过执行OAuth请求收到的令牌。我看到了.NET的一些代码,这些代码建议如下: httpClient.DefaultRequestHeaders.Authorization = new Credential(OAuth.token); 但是,WinRT中不存在Credential类。任何人有任何想法如何设置授权标头?

6
如何保护ASP.NET Web API [关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 3年前关闭。 我想使用ASP.NET Web API 构建RESTful Web服务,第三方开发人员将使用该服务访问我的应用程序的数据。 我已经阅读了很多有关OAuth的文章,这似乎是标准的,但是要找到一个很好的示例来说明其工作原理(实际上是有效的!)的文档似乎非常困难(特别是对于使用OAuth的新手)。 是否有一个实际构建和工作的示例,并显示了如何实现此示例? 我下载了许多示例: DotNetOAuth-从新手角度看文档是没有希望的 Thinktecture-无法构建 我也看过博客,提出了一个基于令牌的简单方案(像这样)-好像是在重新发明轮子,但是这样做的确在概念上相当简单。 在SO上似乎有很多类似问题,但没有好的答案。 每个人在这个空间里做什么?

9
JWT和OAuth身份验证之间的主要区别是什么?
我有一个使用JWT的无状态身份验证模型的新SPA。我经常被要求将OAuth用于身份验证流程,例如要求我为每个请求发送“承载者令牌”,而不是简单的令牌头,但是我确实认为OAuth比简单的基于JWT的身份验证复杂得多。主要区别是什么,我应该使JWT身份验证表现得像OAuth吗? 我还使用JWT作为XSRF-TOKEN来防止XSRF,但被要求将它们分开?我应该把它们分开吗?在这里的任何帮助将不胜感激,并可能会导致为社区制定一套准则。

5
当“隐式”流程运行良好时,为什么OAuth2中会有“授权码”流程?
通过“隐式”流程,在资源所有者(即用户)授予访问权限后,客户端(可能是浏览器)将获得访问令牌。 但是,通过“授权码”流程,客户端(通常是Web服务器)仅在资源所有者(即用户)授予访问权限后才获得授权码。然后,客户端使用该授权代码对API进行另一个调用,将client_id和client_secret与授权代码一起传递,以获得访问令牌。一切都在这里描述得很好。 两种流具有完全相同的结果:访问令牌。但是,“隐式”流程要简单得多。 问题:当“隐式”流接缝很好时,为什么还要打扰“授权码”流?为什么不同时对Web服务器使用“隐式”? 对于提供商和客户而言,这都是更多的工作。

3
OAuth 2.0:好处和用例-为什么?
谁能解释OAuth2有什么好处,为什么我们要实现它?我问是因为对此有些困惑-这是我目前的想法: OAuth1(更确切地说是HMAC)请求看起来合乎逻辑,易于理解,易于开发并且非常安全。 相反,OAuth2带来了授权请求,访问令牌和刷新令牌,并且您必须在会话开始时发出3个请求才能获取所需的数据。即使这样,当令牌过期时,您的请求之一最终也会失败。 为了获得另一个访问令牌,您可以使用与访问令牌同时传递的刷新令牌。从安全角度来看,这会使访问令牌无效吗? 另外,正如/ r / netsec最近显示的那样,SSL并不是完全安全的,因此将所有内容都放到TLS / SSL而不是安全的HMAC的推动使我感到困惑。 OAuth争辩说这不是100%的安全性,而是使其发布和完成。从提供商的角度来看,这听起来并不乐观。当提到6种不同的流程时,我可以看到该草案试图达到的目的,但是我的脑袋并没有完全融合在一起。 我认为与实际不喜欢它相比,了解它的好处和推理可能要比我更努力,因此这可能是不必要的攻击,如果这看起来像是咆哮,那就对不起。
256 oauth  oauth-2.0 

12
OAuth 2中隐式授予授权类型的目的是什么?
我不知道我是否只有某种盲点或什么盲点,但是我已经多次阅读了OAuth 2规范并仔细阅读了邮件列表档案,而且我还没有找到关于为何使用“隐式授予”的很好的解释。已经开发了获取访问令牌的流程。与“授权代码授予”相比,它似乎没有太多令人信服的理由就放弃了客户端身份验证。如何“针对使用脚本语言在浏览器中实现的客户端进行优化”(引用规范)? 两种流程的开始都是相同的(来源:http : //tools.ietf.org/html/draft-ietf-oauth-v2-22): 客户端通过将资源所有者的用户代理定向到授权端点来启动流程。 授权服务器(通过用户代理)对资源所有者进行身份验证,并确定资源所有者是授予还是拒绝客户端的访问请求。 假设资源所有者授予访问权限,授权服务器使用之前(在请求中或在客户端注册期间)提供的重定向URI将用户代理重定向回客户端。 重定向URI包含授权码(授权码流) 重定向URI在URI片段中包含访问令牌(隐式流) 这是人流分裂的地方。在这两种情况下,重定向URI都指向客户端托管的某个端点: 在授权代码流中,当用户代理使用URI中的授权代码访问该端点时,该端点处的代码将授权代码及其客户端凭据交换为访问令牌,然后可以根据需要使用该访问令牌。例如,它可以将其写入网页上的脚本可以访问的网页。 隐式流程完全跳过了此客户端身份验证步骤,仅使用客户端脚本加载网页。URL片段在这里有一个可爱的技巧,可以防止访问令牌传递过多,但是最终结果基本上是相同的:客户端托管的站点提供了一个页面,其中包含一些可以捕获访问令牌的脚本。 。 因此,我的问题是:跳过客户端身份验证步骤在这里获得了什么?

28
Facebook OAuth“此URL的域不包含在应用程序的域中”
首先,我要说我已经搜索了这个问题已有相当一段时间了... 我正在尝试将Facebook OAuth设置为与我的计算机上本地开发的应用程序一起使用。直到我从使用localhost更改为另一个域名(仍在我的计算机本地)开始,使用Facebook授权一切都正常。现在,我遇到以下错误。 无法加载URL:此URL的域未包含在应用程序的域中。为了能够加载此URL,请将应用程序的所有域和子域添加到应用程序设置的“应用程序域”字段中。 我的主机文件包含127.0.0.1 photovote.dev (完美) 我在应用中的重定向(使用Socialite)是 http://photovote.dev/auth/facebook/callback 在我的Facebook应用程序设置中... 我的应用程序域是 photovote.dev 我的网站网址是 http://photovote.dev/ 我的有效OAuth重定向URI是 http://photovote.dev/auth/facebook/callback 错误消息时的URL是.. https://www.facebook.com/v2.5/dialog/oauth?client_id=XXXXXXXXXXXXXXX&redirect_uri=http%3A%2F%2Fphotovote.dev%2Fauth%2Ffacebook%2Fcallback&scope=email&response_type=code&state=0ztcKhmWwFLtj72TWELDUOKTCF65Zme 我不知道是什么问题... 屏幕截图1 屏幕截图2

6
REST身份验证方案的安全性
背景: 我正在为REST Web服务设计身份验证方案。这并不是“真正”需要安全的(它更多是一个个人项目),但我想使其与练习/学习经验一样安全。我不想使用SSL,因为我不想麻烦,而在大多数情况下,它不需要设置它。 这些SO问题对于帮助我入门特别有用: RESTful身份验证 保护REST API /网络服务的最佳做法 最佳SOAP / REST / RPC Web API的示例?你为什么喜欢他们?那他们怎么了? 我正在考虑使用Amazon S3身份验证的简化版本(我喜欢OAuth,但对于我的需求而言似乎太复杂了)。我在请求中添加了服务器提供的随机生成的随机数,以防止重放攻击。 要解决这个问题: S3和OAuth都依赖于对请求URL以及一些选定的标头进行签名。他们都没有在 POST或PUT请求的请求主体上签名。这难道不容易受到中间人攻击,这种中间人攻击会保留url和标头并用攻击者想要的任何数据替换请求正文? 似乎我可以通过在请求的字符串中包含请求主体的哈希值来防止这种情况发生。这样安全吗?

4
为什么访问令牌过期?
我刚刚开始使用Google API和OAuth2。当客户授权我的应用程序时,我会得到一个“刷新令牌”和一个短暂的“访问令牌”。现在,每次访问令牌过期时,我都可以将刷新令牌发布到Google,他们会给我一个新的访问令牌。 我的问题是访问令牌到期的目的是什么?为什么不能只有持久的访问令牌而不是刷新令牌? 另外,刷新令牌会过期吗? 有关Google OAuth2工作流程的更多信息,请参见使用OAuth 2.0访问Google API。

9
OAuth(开放授权)到底是什么?
OAuth(开放授权)到底是什么? 我从中收集了一些信息 OAuth Twitter教程:什么是OAuth,这对您意味着什么 什么是OAuth 但是我想学习和了解更多。我正在寻找有关生命周期的信息。为什么大多数社交网络都依赖此开放协议? 各种技术(例如ASP.NET)在不久的将来会成为事实吗?
201 oauth 

5
为移动应用程序创建API-身份验证和授权
总览 我正在为我的应用程序创建一个(REST)API。最初/主要目的是供移动应用程序(iPhone,Android,Symbian等)使用。我一直在研究基于Web的API的身份验证和授权的不同机制(通过研究其他实现)。我已经把大部分基本概念都束之高阁,但仍在一些方面寻求指导。我想做的最后一件事是重新发明轮子,但是我没有找到任何适合我标准的标准解决方案(但是我的标准可能会被误导,因此也随时可以批评我)。另外,我希望所有使用它的平台/应用程序的API都相同。 oAuth 我会继续反对oAuth,因为我知道这可能是第一个提供的解决方案。对于移动应用程序(或更确切地说是非Web应用程序),离开应用程序(转到Web浏览器)进行身份验证似乎是错误的。另外,浏览器无法(我知道)将回调返回给应用程序(尤其是跨平台)。我知道有几个应用程序可以做到这一点,但是感觉不对,并中断了应用程序UX。 要求 用户在应用程序中输入用户名/密码。 每个API调用均由调用应用程序标识。 开销降至最低,并且对于开发人员而言,auth方面很直观。 该机制对于最终用户(不公开其登录凭据)和开发人员(不公开其应用程序凭据)都是安全的。 如果可能,则不需要https(绝不是硬要求)。 我当前的实施思想 外部开发人员将请求一个API帐户。他们将获得一个apikey和apisecret。每个请求至少需要三个参数。 apikey-在注册时提供给开发人员 时间戳-兼用作给定apikey的每个消息的唯一标识符 hash-时间戳+ apisecret的哈希 需要apikey来标识发出请求的应用程序。时间戳记的行为与oauth_nonce类似,并且避免/减轻了重播攻击。哈希确保请求实际上是从给定apikey的所有者发出的。 对于经过身份验证的请求(代表用户的请求),我仍然不确定要使用access_token路由还是使用用户名和密码哈希组合。无论哪种方式,在某个时候都将需要用户名/密码组合。因此,当这样做时,将使用多个信息(apikey,apisecret,时间戳)和密码的哈希。 我希望在这方面提供反馈。 仅供参考,他们必须先对密码进行哈希处理,因为我不会在不进行哈希处理的情况下将密码存储在系统中。 结论 仅供参考,这并不是要求通常如何构建/结构化API,而仅仅是要求如何仅从应用程序内部处理身份验证和授权。 随机想法/奖金问题 对于仅要求将apikey作为请求的一部分的API,如何防止apikey所有者以外的其他人看到apikey(因为是明文发送的),并提出过多的请求以使它们超过使用限制?也许我只是在考虑这个问题,但是不应该有什么东西可以验证对apikey所有者进行了验证的请求吗?在我的情况下,这是apisecret的目的,它不会被散列而不会显示/传输。 说到哈希,md5 vs hmac-sha1呢?当所有值都用足够长的数据(即apisecret)进行哈希处理时,真的重要吗? 我以前一直在考虑向用户密码哈希添加每用户/行盐。如果要这样做,应用程序如何能够在不知道使用盐的情况下创建匹配的哈希?

5
使用CAS或OAuth进行SSO?
我想知道我是否应该使用CAS协议或OAuth +一些身份验证提供程序进行单点登录。 方案示例: 用户尝试访问受保护的资源,但未通过身份验证。 该应用程序将用户重定向到SSO服务器。 如果蜜蜂通过了身份验证,则用户将从SSO服务器获取令牌。 SSO重定向到原始应用程序。 原始应用程序针对SSO服务器检查令牌。 如果令牌正常,则将允许访问,并且应用程序知道用户ID。 用户执行注销,并同时从所有连接的应用程序中注销(单次注销)。 据我了解,这正是CAS发明的目的。CAS客户端必须实现CAS协议才能使用身份验证服务。现在,我想知道要在客户端(消费者)站点上使用CAS还是OAuth。OAuth是否可以替代CAS的那部分?是否应首选OAuth作为事实上的新标准?是否有易于使用的(不是Sun OpenSSO!)替代CAS的身份验证部分,支持不同的方法,如用户名/密码,OpenID,TLS证书...? 内容: 不同的应用程序应依赖SSO服务器的身份验证,并应使用类似于会话的内容。 这些应用程序可以是GUI Web应用程序或(REST)服务。 SSO服务器必须提供一个用户ID,这对于从中央用户信息存储中获取有关用户的更多信息(例如角色,电子邮件等)是必需的。 单点退出应该是可能的。 大多数客户端都是用Java或PHP编写的。 我刚刚发现WRAP,它可以成为OAuth的后续产品。它是Microsoft,Google和Yahoo指定的新协议。 附录 我了解到,即使OAuth可以用于实现SSO,也不是为身份验证而设计的,而只能与OpenID之类的SSO服务一起使用。 在我看来,OpenID是“新CAS”。CAS具有一些OpenID遗漏的功能(例如单点注销),但是在特定情况下添加遗漏的部分并不难。我认为OpenID已被广泛接受,最好将OpenID集成到应用程序或应用程序服务器中。我知道CAS也支持OpenID,但是我认为CAS与OpenID无关。

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.