首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何对Last.fm接口的请求进行可靠的签名?

如何对Last.fm接口的请求进行可靠的签名?
EN

Stack Overflow用户
提问于 2010-05-09 02:38:07
回答 1查看 1.1K关注 0票数 6

我正在尝试通过Last.fm实现授权。我将我的论点作为字典提交,以使签名更容易。这是我用来签署我的呼叫的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public static string SignCall(Dictionary<string, string> args)
{
    IOrderedEnumerable<KeyValuePair<string, string>> sortedArgs = args.OrderBy(arg => arg.Key);
    string signature = 
        sortedArgs.Select(pair => pair.Key + pair.Value).
        Aggregate((first, second) => first + second);
    return MD5(signature + SecretKey);
}

我已经检查了调试器中的输出,它确实应该是这样的,但是,我每次尝试都会得到WebExceptions,这意味着API返回“无效的方法签名”。这意味着它不接受SignCall生成的签名。

下面是我用来生成URL的代码,以防万一它会有帮助:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public static string GetSignedURI(Dictionary<string, string> args, bool get)
{
    var stringBuilder = new StringBuilder();
    if (get)
        stringBuilder.Append("http://ws.audioscrobbler.com/2.0/?");
    foreach (var kvp in args)
        stringBuilder.AppendFormat("{0}={1}&", kvp.Key, kvp.Value);
    stringBuilder.Append("api_sig="+SignCall(args));
    return stringBuilder.ToString();
}

以及获取SessionKey的示例用法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var args = new Dictionary<string, string>
                       {
                           {"method", "auth.getSession"},
                           {"api_key", ApiKey},
                           {"token", token}
                       };
string url = GetSignedURI(args, true);

编辑:

哦,代码引用了一个实现如下的MD5函数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public static string MD5(string toHash)
{
    byte[] textBytes = Encoding.UTF8.GetBytes(toHash);
    var cryptHandler = new System.Security.Cryptography.MD5CryptoServiceProvider();
    byte[] hash = cryptHandler.ComputeHash(textBytes);
    return hash.Aggregate("", (current, a) => current + a.ToString("x2"));
}

此外,下面是API - Last.fm文档,其中包含详细说明授权的this page

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-05-09 13:20:52

你的代码对我来说工作得很好。我做了什么:

获取令牌: URL,返回的令牌为53c8890afbbf94281931cd11bf28a4e0

  • Use您的代码以获取,然后使用返回用户名和会话密钥的WebClient下载其内容。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2796422

复制
相关文章
Postman请求有签名的接口
Postman是一个非常强大的HTTP接口测试工具,但是最近项目接口升级,为了防止恶意请求,所有的接口都增加了签名的校验。这样安全性更高,但是在使用Postman自测接口的时候会比较麻烦,每次都需要生成一个临时的签名,而且使用一次之后就会过期。 本文借助Postman的Pre-request Scritp可以实现自动签名功能,每次请求都会生成一个新的签名 代码实现 //签名一般都会使用时间戳,一方面可以生成随机字符串,一方面也用来保证请求的及时性 let timestamp = new Date().
十毛
2019/12/12
1.6K0
电商收付通系列①,对请求进行签名,拼接Authorization
最近对接了下微信刚出的电商收付通接口,过程也是不容易,踩了几个小坑,所以在此记录下来,希望能帮到有需要的人,限于本人经验,如有错误,欢迎指正。
悟空码字
2021/01/31
1.7K0
使用代码签名证书对EXE文件进行签名?
如果您想知道如何培养用户对您的应用程序或可执行文件的信任,对应用程序或可执行文件 (exe) 进行数字签名是确保这一点的最佳方法。
Gworg
2023/10/18
1.7K0
macOS 对 gdb 进行代码签名
在 macOS 使用 GDB 调试 C 语言代码,必须对 gdb 进行代码签名,否则 GDB 不能运行! 创建证书 钥匙串访问 打开菜单:钥匙串访问-》证书助理-》创建证书… 输入证书名称,如:gdb-cert; 选择身份类型:自签名根证书 (Identity Type to Self Signed Root) 选择证书类型:代码签名 (Certificate Type to Code Signing) 勾选:让我覆盖这些默认签名 (select the Let me override defaults)
康怀帅
2018/02/28
2.4K0
如何对iOS App进行打补丁和重新签名
有没有想过在非越狱设备上运行修改后的iOS二进制文件?比如,你可以使用该技术插装app,以进行动态分析。又或者你需要进行GPS欺骗,从而可以在锁区玩Pokemon,但又担心越狱检测。 福利来了,你可以按照以下过程对修改后的应用程序进行重新签名,然后便可在自己的设备上运行该应用程序。注意,该技术仅适用于非FairPlay加密二进制文件(从应用商店获取的app均为FairPlay加密)。 苹果的配置和代码签名系统本身就让人有点晕头转向,所以,对app进行重新签名着实不易。只有在配置文件和代码签名头完全正确的前提
FB客服
2018/02/23
2.3K0
如何对iOS App进行打补丁和重新签名
详解用 MiniFramework 框架实现对 GET 或 POST 请求参数进行签名校验的方法
在一些特殊场景下,我们可能希望对于 GET 或 POST 进入到接口的数据进行签名和有效期的校验,例如 APP 请求后端接口的场景,我们通常需要考虑两个问题:
魏杰
2022/12/23
7730
比特币中对交易进行签名的详细过程
最近在和同事交流我们PalletOne中对UTXO和签名的处理,有些心得,写下此博文。对比特币有点基本概念的都知道,比特币是通过ECDSA数字签名来解锁UTXO中的未花费余额。
深蓝studyzy
2022/06/16
1.5K0
iOS app侧对请求参数进行签名:【请求参数按照ASCII码从小到大排序、拼接、加密】(递归的方式进行实现)
支付类app为了安全起见,除了使用【防代理分析请求数据】,还可采用签名的方式进一步进行限制防止请求和返回报文被修改。
公众号iOS逆向
2021/03/08
1K0
iOS app侧对请求参数进行签名:【请求参数按照ASCII码从小到大排序、拼接、加密】(递归的方式进行实现)
如何对修改密码接口进行压测
做接口测试中,对于一般性的单业务接口测试很多工具可供选择,但是对于一些相关业务相关性的关联接口测试就比较麻烦,使用工具比如jmeter、postman、soapui等等就比较麻烦。我比较偏重脚本化执行测试用例,所以选择了groovy作为主要语言来进行接口测试,但是脚本依赖的库还是基于之前所在的java为主的测试框架,有兴趣的可以翻翻以前的文章。项目的架构思路是以模块为基础把接口分类,然后对于接口的请求单独进行实现。通过一个user作为一个用户,携带各种属性,如:uname,pwd,token,userinfobean等信息。来作为各个模块类之间的信息传递。
FunTester
2019/07/27
1K0
如何对修改密码接口进行压测
  做接口测试中,对于一般性的单业务接口测试很多工具可供选择,但是对于一些相关业务相关性的关联接口测试就比较麻烦,使用工具比如jmeter、postman、soapui等等就比较麻烦。我比较偏重脚本化执行测试用例,所以选择了groovy作为主要语言来进行接口测试,但是脚本依赖的库还是基于之前所在的java为主的测试框架,有兴趣的可以翻翻以前的文章。项目的架构思路是以模块为基础把接口分类,然后对于接口的请求单独进行实现。通过一个user作为一个用户,携带各种属性,如:uname,pwd,token,userinfobean等信息。来作为各个模块类之间的信息传递。
顾翔
2019/12/12
5690
如何对单行多次update接口进行压测
在对服务端进行测试的时候,经常会遇到这类情况:单个接口的功能就是修改数据库中某一条数据某个字段的值。在对这类接口进行压测的过程中,遇到一个难点,如何每次都设置不同的值,当然可以通过获取一类的随机数的形式规避掉重复的概率,但是在特定场景下依然无法解决,比如字段值范围偏小。
FunTester
2019/10/29
4890
对CAB文件进行数字签名
对CAB文件进行数字签名 传说中数字签名之后就能够不出现提示而自己主动下载,所以也试试: 在\Microsoft Visual Studio .NET 2003\SDK\v1.1\Bin 中间有三个小工具,就用他们来实现数字签名。 1.Makecert.exe —证书创建工具 2.Cert2Spc.exe —发行者证书測试工具 3.Signcode.exe —文件签名工具
全栈程序员站长
2022/07/09
9460
如何优雅的进行接口管理
在这前后端分离大行其道的今天,如何优雅的管理接口,对应提高工作效率非常重要。而接口又是由后端提供的,这个任务自然而然的又落在后台开发人员的身上。在这里提供三种常见的接口管理方案,这三种方案没有属谁最优,属谁最差。根据项目的情况而定。
BUG弄潮儿
2021/03/22
6400
Android 对apk进行重签名和查看签名(window 和mac)及生成签名
生成签名文件:其实是有很多工具可以做到,这里不过是想用命令来生成 其命令如下:生成的签名默认在c盘根目录下 keytool -genkey -alias aaaa.keystore -keyalg RSA -validity 2000 -keystore newandroid.keystore 备注说明:-alias后面跟着的是别名(android.keystore) -keystore后面跟着的是具体的签名文件(及签名文件的命名–newandroid.keystore) 当使用这个命令生成后,会有个警告,不符合pkcs12标准,需要消除掉(也可以不消除),使用如下命名: keytool -importkeystore -srckeystore android.keystore -destkeystore newandroid.keystore -deststoretype pkcs12 将上面的android.keystore签名迁移到newandroid.keystore中,其各种参数不变。 截图如下
全栈程序员站长
2022/08/10
6K0
Android 对apk进行重签名和查看签名(window 和mac)及生成签名
如何对多行单次update接口进行压测
上次聊到如何对单行多次update进行压测,主要是为了解决单线程中请求参数如何每次都跟上次不一样这个难点。
FunTester
2019/10/29
3960
JMeter如何使用MD5加密并且对body进行指纹签名
接口测试过程中,有时候会遇到需要进行加解密的接口,下面我就来介绍如何针对MD5加密接口测试,并且针对body全部参数进行指纹签名1、首先找开发了解需求,知道是一个http类型的post请求,首先需要获取时间戳(time),然后把appid、body、accessToken、time数进行MD5加密处理生成sign,然后把该参数传到信息头实现鉴权,使用body参数做指纹签名,可以提高安全性 2、我们需要做的就是问开发拿到MD5加密函数(java代码),然后通过jmeter的前置处理器BeanShell Pre
jmeter技术研究
2021/03/24
1.3K0
python 发送 post 请求进行简单的接口测试
通过 requests 可以向某个地址发送请求,可以用来做一些接口的测试;主要有两个方法: requests.get() requests.post() 最近帮朋友的项目做一个小需求,需要把后台数据定期打包发送到微信群,麻小科技涛哥给了我一个接口,post 访问。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #!/usr/bin/python import requests """ 通过 requests 可以向某个地址发送
Cell
2022/02/25
9230
python 发送 post 请求进行简单的接口测试
使用sigstore对容器映像进行签名和验证
在本文中,我将cosign项目中的部分以及如何使用它来签名和验证容器映像(以及其他受支持的对象)。的理念 cosign是使签名和验证过程成为 开发人员不可变的基础设施 。
KINGLIFE
2022/01/26
2.2K0
点击加载更多

相似问题

什么是可靠的接口签名?

17

请求Last.FM接口返回的文件出错

10

对SimpleDB请求进行签名

23

Last.fm接口方法签名无效,但获取会话密钥时有效

110

如何使用WCF对SOAP请求进行签名

30
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文