Questions tagged «oauth-2.0»

OAuth(开放授权)是一个开放协议框架,可通过简单,标准化的方式为桌面,移动和Web应用程序提供安全的API授权。OAuth 2.0是OAuth协议的第二个版本。

2
身份验证与资源服务器之间的OAuth v2通信
我在了解OAUTH-v2的工作方式时遇到了一些麻烦。 该OAuth的版本2的规格如下: 访问受保护的资源 客户端通过向 资源服务器提供访问令牌来访问受保护的资源。资源服务器必须验证 访问令牌,并确保它没有过期,并且其范围涵盖 所请求的资源。资源服务器用来 验证访问令牌(以及任何错误响应)的方法超出了本规范的范围,但通常涉及资源服务器与授权 服务器之间的交互或协调。 在实践中,资源服务器和授权服务器之间的交互如何工作? 资源服务器如何确定接收到的访问令牌有效? 资源服务器如何从令牌中提取允许的作用域,以查看是否应授予对特定资源的访问权限?范围是在访问令牌中编码的,还是资源服务器首先必须与授权服务器联系? 如何在资源服务器和授权服务器之间建立信任? 访问令牌属性和用于访问受保护资源的方法超出了本规范的范围,并由随附规范定义。 有人可以提供令牌属性的示例吗?

9
Java是否有OAuth 2.0提供程序实现?(不是oauth客户端)
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow的主题。 4年前关闭。 改善这个问题 所以基本上我想用OAuth 2.0保护我的API,并实现一个OAuth Provider来启用对accessTokens的获取。 开箱即用JOAuth可以完成吗? 是否有人已经使用开源库(Java)实现了类似的东西?

7
使用CURL设置Bearer令牌的正确方法
我从API端点获取了承载令牌,并设置了以下内容: $authorization = "Bearer 080042cad6356ad5dc0a720c18b53b8e53d4c274" 接下来,我想使用CURL访问安全端点,但是不确定如何或在何处设置Bearer令牌。 我已经尝试过了,但是没有用: curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json' , $authorization )); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POSTFIELDS,$post); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); $result = curl_exec($ch); curl_close($ch); return json_decode($result); 编辑: 根据文档,我应该这样使用承载令牌:https : //apigility.org/documentation/auth/authentication-oauth2 GET /oauth/resource HTTP/1.1 Accept: application/json Authorization: Bearer 907c762e069589c2cd2a229cdae7b8778caa9f07
81 php  http  curl  oauth-2.0 

4
OWIN安全性-如何实施OAuth2刷新令牌
我正在使用Visual Studio 2013随附的Web Api 2模板,该模板具有一些OWIN中间件来进行用户身份验证等。 在OAuthAuthorizationServerOptionsI中,我注意到OAuth2服务器已设置为发放在14天内到期的令牌 OAuthOptions = new OAuthAuthorizationServerOptions { TokenEndpointPath = new PathString("/api/token"), Provider = new ApplicationOAuthProvider(PublicClientId,UserManagerFactory) , AuthorizeEndpointPath = new PathString("/api/Account/ExternalLogin"), AccessTokenExpireTimeSpan = TimeSpan.FromDays(14), AllowInsecureHttp = true }; 这不适合我的最新项目。我想分发短暂的bearer_tokens,可以使用refresh_token 我已经进行了大量谷歌搜索,找不到任何有用的信息。 这就是我设法取得的成就。我现在已经达到“现在就做WTF”这一点。 我写了一个根据类的属性RefreshTokenProvider实现的:IAuthenticationTokenProviderRefreshTokenProviderOAuthAuthorizationServerOptions public class SimpleRefreshTokenProvider : IAuthenticationTokenProvider { private static ConcurrentDictionary<string, AuthenticationTicket> _refreshTokens = new ConcurrentDictionary<string, AuthenticationTicket>(); …

4
授权凭证已剥离-django,弹性beantalk,oauth
我在django中使用django-rest-framework实现了REST api,并使用oauth2进行身份验证。 我测试了: curl -X POST -d "client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET&grant_type=password&username=YOUR_USERNAME&password=YOUR_PASSWORD" http://localhost:8000/oauth2/access_token/ 和 curl -H "Authorization: Bearer <your-access-token>" http://localhost:8000/api/ 在本地主机上,成功结果与文档一致。 将其推送到现有的AWS Elastic beantalk实例时,我收到了: { "detail" : "Authentication credentials were not provided." }

6
使用Postman访问OAuth 2.0 Google API
我正在尝试使用Postman chrome应用程序访问Proximity Google API。我已经按照邮递员和Google开发人员网站上的教程进行操作,但是仍然收到401错误消息。 我在做什么? 第1步-启用接近API: 为了使用Proximity API,必须首先在Google Dev控制台中启用它。使用本教程,我为我的项目启用了对Proximity API的支持 第2步-获取凭据: 根据本教程,我需要获取客户端ID和密码。这就是我感到困惑的地方。凭据->添加凭据-> OAuth2.0客户端ID->选择Chrome App单选按钮(因为我使用的是Postman)->输入Postman的Chrome Web商店URL的最后一部分[ fhbjgbiflinjbdggehcddcbbddddop] ->点击创建按钮这些步骤将只生成一个客户端ID,而不是一个秘密。.我做错什么了吗? 您可以从Google Dev控制台下载一个JSON文件,其中包含客户端ID,身份验证URI和令牌URI 我下载了此文件,但是如果我使用的是Postman,则无济于事。我猜这个JSON文件可以包含在JS应用程序中。 第3步-使用Postman测试API 我得到什么? 而且,一旦我点击了调试网址,就会看到以下屏幕

7
如何撤销JWT令牌?
我正在使用Spring Security OAuth2和JWT令牌。我的问题是:如何撤销JWT令牌? 如此处 http://projects.spring.io/spring-security-oauth/docs/oauth2.html所述,吊销是通过刷新令牌完成的。但这似乎不起作用。


1
在使用OAuth2的“资源所有者密码凭据”授予类型时,如何对客户端凭据进行保密
我们正在建立一个休息服务,我们想使用OAauth 2进行授权。在目前的草案(5月19日v2-16)描述了4种类型。它们是用于获得授权(访问令牌)的机制或流程。 授权码 隐性补助金 资源所有者凭证 客户凭证 似乎我们需要支持它们全部四个,因为它们有不同的用途。前两个(可能还有最后一个)可以从需要访问API的第三方应用程序中使用。授权代码是对足以幸运地驻留在安全服务器上的Web应用程序进行授权的标准方式,而隐式授予流将是无法完全对其凭据保密的客户端应用程序(例如,移动/台式机)的选择。应用程序,JavaScript客户端等)。 我们希望自己使用第三种机制,以在移动设备上提供更好的用户体验–而不是将用户带到Web浏览器中的登录对话框等,用户只需在应用程序中直接输入其用户名和密码即可。并登录。我们还希望使用“客户端凭据”授予类型来获取访问令牌,该访问令牌可用于查看公共数据,而不与任何用户相关联。在这种情况下,这与其说是授权,不如说是类似于API密钥的一种,我们仅用于授予对已向我们注册的应用程序的访问权限,并为我们提供了在需要时撤消访问权限的选项。 所以我的问题是: 您认为我正确理解了不同赠款类型的目的吗? 您如何对客户凭证保密?在第三种情况和第四种情况下,我们都需要在客户机上的某个位置具有客户机ID和客户机密钥,这听起来不是一个好主意。 即使您使用隐式授予类型并且不公开您的客户端机密,是什么阻止另一个应用程序使用相同的授权机制和您的客户端ID来模拟您的应用程序? 总而言之,我们希望能够使用来自客户端应用程序的客户端凭据和资源所有者凭据流。这两个流程都要求您以某种方式存储客户端机密,但是客户端是移动或JavaScript应用程序,因此很容易被盗。

1
使用OWIN身份从多个API客户端注册Web API 2外部登录
我想要以下架构(在此示例中,我组成了产品名称): 在一台服务器上运行的Web API 2应用程序 http://api.prettypictures.com 在另一台服务器上运行的MVC 5客户端应用程序 http://www.webpics.com 我希望www.webpics.com客户端应用程序使用Pretty Pictures API来: 使用用户名和密码注册新帐户 在Facebook / Google / Twitter / Microsoft注册新帐户 登录 检索图片 以上所有工作,除了在Facebook,Google等处注册外部帐户外。 我无法计算出正确的流程来从API的单独客户端用户创建外部帐户。 我研究了身份验证流程中可用的大多数文档,例如: 我已经阅读了关于OWIN中新Identity模式的几乎所有内容。 我已经检查了Visual Studio 2013中的SPA模板。该模板演示了如何执行我所需的大部分操作,但仅当客户端和API位于同一主机上时才执行。如果我希望多个客户端访问我的API并能够让用户通过Google等进行注册,则无法正常工作,据我所知,OWIN身份验证流程中断了。 到目前为止的流程如下: 用户浏览到www.webpics.com/Login www.webpics.com调用api.prettypictures.com/Account/ExternalLogins(用RETURNURL一套回去在回调www.webpics.com),并显示最终链接到用户 用户点击“ Google” 浏览器使用提供者的名称等重定向到api.prettypictures.com/Account/ExternalLogin。 API的ExternalLogin操作实例化了对google.com的挑战 浏览器被重定向到google.com 用户输入其用户名和密码(如果尚未登录google.com) google.com现在提供安全检查:“ api.prettypictures.com”希望访问您的电子邮件地址,姓名,妻子,子女等。可以吗? 用户单击“是”,并使用Google设置的cookie带回到api.prettypictures.com/Account/ExternalLogin。 这就是我卡住的地方。接下来应该发生的是,应该以某种方式通知客户端应用程序用户已成功通过google.com进行身份验证,并获得一次性使用访问代码,以稍后交换访问令牌。客户端应用应有机会(如有必要)提示用户输入用户名,以与其google.com登录名相关联。 我不知道该怎么做。 实际上,在这一点上,浏览器最终在Google回调后位于api.prettypictures.com/Account/ExternalLogin端点。该API已针对Google登录,但客户端不知道如何处理。我应该将该Cookie传送回www.webpics.com吗? 在SPA应用程序中,这是通过AJAX完成的,并且google.com将返回令牌作为URL片段,并且由于它们都位于一个域中,因此效果很好。但是,这与拥有多个客户端可以完全使用的“ API”的许多观点不符。 救命!

6
Facebook OAuth:自定义callback_uri参数
我想为我的Facebook OAuth2集成提供一个动态重定向URL。例如,如果我的重定向URL在我的Facebook应用程序中是: http://www.mysite.com/oauth_callback?foo=bar 我希望特定请求的重定向URL像这样,以便在服务器上,我具有有关如何处理身份验证代码的上下文: http://www.mysite.com/oauth_callback?foo=bar&user=6234 提交授权对话框后,我的重定向被调用,并且我返回了身份验证代码,但是当我尝试获取访问令牌时,我从Facebook返回了OAuthException错误。我的请求如下所示(为清楚起见添加了换行符): https://graph.facebook.com/oauth/access_token ?client_id = MY_CLIENT_ID &redirect_uri = http%3A%2F%2Fwww.mysite.com%2Foauth_callback%3Ffoo%3Dbar%26user%3D6234 &client_secret = MY_SECRET &code = RECEIVED_CODE 我所有的参数都是URL编码的,并且代码看起来有效,所以我唯一的猜测是问题参数是我的redirect_uri。我尝试将redirect_uri以下所有设置都无济于事: 请求到我的网站的实际URL 到我的网站的请求的网址,减去code参数 我的Facebook应用程序配置中指定的URL 是否支持自定义重定向URI参数?如果是这样,我是否正确指定了它们?如果没有,我是否会被迫设置cookie,或者是否有一些更好的模式来为我的网站提供上下文?


11
Salesforce身份验证失败
我正在尝试使用OAuth身份验证来获取Salesforce身份验证令牌,因此我引用了wiki文档,但是在获取授权代码后,当我发出带有5个必需参数的Post请求时,出现了以下异常 {"error":"invalid_grant","error_description":"authentication failure"} CODE 400 JSON = {"error":"invalid_grant","error_description":"authentication failure"} 我想这是一个不好的要求。 PostMethod post = new PostMethod("https://login.salesforce.com/services/oauth2/token"); post.addParameter("code",##############); post.addParameter("grant_type","authorization_code"); post.addParameter("redirect_uri","#################"); post.addParameter("client_id",this.client_id); post.addParameter("client_secret",this.client_secret); httpclient.executeMethod(post); String responseBody = post.getResponseBodyAsString(); System.out.println(responseBody+" CODE "+post.getStatusCode()); 请答复,如果知道例外情况?

8
尝试通过邮递员调用OWIN OAuth安全的Web Api来获取JWT时,出现“错误”:“ unsupported_grant_type”
我已关注本文以实现OAuth授权服务器。但是,当我使用邮递员获取令牌时,响应中出现错误: “错误”:“ unsupported_grant_type” 我读到某处需要使用来发布Postman中的数据Content-type:application/x-www-form-urlencoded。我已经在Postman中准备了所需的设置: 但是我的标题是这样的: 这是我的代码 public class CustomOAuthProvider : OAuthAuthorizationServerProvider { public override Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context) { context.Validated(); return Task.FromResult<object>(null); } public override Task MatchEndpoint(OAuthMatchEndpointContext context) { if (context.OwinContext.Request.Method == "OPTIONS" && context.IsTokenEndpoint) { context.OwinContext.Response.Headers.Add("Access-Control-Allow-Methods", new[] { "POST" }); context.OwinContext.Response.Headers.Add("Access-Control-Allow-Headers", new[] { "accept", "authorization", "content-type" }); context.OwinContext.Response.StatusCode = 200; …

11
Facebook OAuth 2.0的“代码”和“令牌”
为什么在Facebook OAuth2身份验证流程中同时需要“代码”和“令牌”,如此处所述:https : //developers.facebook.com/docs/authentication/? 如果您查看OAuth对话框参考(https://developers.facebook.com/docs/reference/dialogs/oauth/),似乎您只曾经使用令牌来获取有关用户的信息,并且如果您指定了response_type参数astoken或code,token,那么您将在第一时间获得令牌。 为什么您需要获取一个“代码”,然后使用该代码获取一个“令牌”,而不是直接获取令牌? 我猜我对OAuth的工作原理有一些误解,但是https://graph.facebook.com/oauth/access_token如果您第一次在对话框中获得令牌,似乎可以完全避免请求。

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.