当前位置: 首页 > 知识库问答 >
问题:

对Oauth两条腿系统进行身份验证

弘志勇
2023-03-14

我正在尝试使用2legged oauth对Web服务进行身份验证。我有下一个使用路标库创建经过身份验证的URL的工作java示例:

 String consumerKey = "KEY";
 String consumerSecret = "SECRET";
 DefaultOAuthConsumer consumer = new DefaultOAuthConsumer(consumerKey, consumerSecret);
 consumer.setTokenWithSecret(consumerKey, consumerSecret);
 return consumer.sign(targetUrl);

http://example.com/my/method?oauth_consumer_key=KEY

我正试图用ruby的oauth重新创建它。我的代码现在看起来像这样:

consumer = OAuth::Consumer.new(@creds[:key], @creds[:secret],
                               :site => "URL",
                               :scheme => :query_string)
token = OAuth::AccessToken.new(consumer)
token.get "METHOD"

并生成如下URL:

http://example.com/my/method?oauth_signature_method=HMAC-沙1

但是我总是得到一个未经授权的错误,即使我手动将oauth_token设置为键(如路标所做的)。看起来nonce是无效的,但是它们都是oauth的有效库

有人能帮我吗?

提前感谢

共有1个答案

饶元章
2023-03-14

我对2条腿的oauth也有同样的问题,我解决了:

consumer = OAuth::Consumer.new(key, secret, { :site => 'http://api.mysite.com' })
access_token = OAuth::AccessToken.from_hash(consumer, :oauth_token => key, :oauth_token_secret => secret)

常见问题来自不同步的时间戳

您的请求必须与服务器系统时钟同步,例如在linkedin中,请求必须在其系统时钟的5分钟内。

希望有帮助;)

 类似资料:
  • OAuth术语已经困扰我很久了。OAuth授权是像一些人建议的那样,还是认证? 如果我错了,请纠正我,但我一直认为授权是允许某人访问某个资源的行为,而OAuth似乎没有任何实际允许用户访问给定资源的实现。OAuth实现所讨论的都是为用户提供一个令牌(签名的,有时是加密的)。然后,每次调用都会将该令牌传递到后端服务endpoint,在后端服务endpoint上检查该令牌的有效性,这也不是OAuth的

  • 问题内容: 解析服务器提供OAuth身份验证。如何使用Parse Server的预定义OAuth模块(例如Facebook)来注册新用户或登录“ _User”类的现有用户? Parse Server 文档提供了有关如何配置OAuth模块的示例。但是,如何在iOS项目中使用它来登录或注册用户? 问题答案: 1,创建一个从NSObject和PFUserAuthenticationDelegate扩展的

  • 直到昨天,我还没有遇到任何关于gsutil工具的问题,我有读写的权限,但昨天每当我尝试运行gsutil命令时,它突然开始说: 我试图与之进行身份验证的用户是项目的所有者。 我希望你能帮助我。

  • 目前用户名总是匿名的。设置调用方主体的正确方法是什么?我在拦截器里做这个吗?还是在豆子本身?我的目标是基本上能够调用一个方法loginUserWithEJBOnJboss(String user,String pass),该方法使用在jboss中配置的登录方法并正确设置主体。 我在这里不知所措,谷歌什么也没找到。也许我只是在寻找错误的单词。

  • 我正在尝试使用urllib3连接到网页。代码如下所示。 如果我们假设url是需要使用用户名和密码进行身份验证的某个网页,那么我是否使用正确的代码进行身份验证? 我使用urllib2做这件事很舒服,但使用urllib3做不到同样的事情。 非常感谢

  • jwt不应该仅仅用于认证用户吗?我读到过可以在里面存储非敏感的东西,比如用户ID。将权限级别之类的东西存储在令牌中可以吗?这样我可以避免数据库调用。