当我试图从Java中的Magento获取数据时,我遇到了一个签名无效的问题。我的代码有什么问题:
public class MagentoFacade {
final String MAGENTO_API_KEY = "apikey";
final String MAGENTO_API_SECRET = "apisecret";
final String MAGENTO_REST_API_URL = "urlmagento/api/rest";
public void testMethod() {
OAuthService service = new ServiceBuilder()
.provider(MagentoThreeLeggedOAuth.class)
.apiKey(MAGENTO_API_KEY)
.apiSecret(MAGENTO_API_SECRET)
.debug()
.build();
System.out.println("" + service.getVersion());
// start
Scanner in = new Scanner(System.in);
System.out.println("Magento's OAuth Workflow");
System.out.println();
// Obtain the Request Token
System.out.println("Fetching the Request Token...");
Token requestToken = service.getRequestToken();
System.out.println("Got the Request Token!");
System.out.println();
// Obtain the Authorization URL
System.out.println("Fetching the Authorization URL...");
String authorizationUrl = service.getAuthorizationUrl(requestToken);
System.out.println("Got the Authorization URL!");
System.out.println("Now go and authorize Main here:");
System.out.println(authorizationUrl);
System.out.println("And paste the authorization code here");
System.out.print(">>");
Verifier verifier = new Verifier(in.nextLine());
System.out.println();
System.out.println("Trading the Request Token for an Access Token...");
Token accessToken = service.getAccessToken(requestToken, verifier);
System.out.println("Got the Access Token!");
System.out.println("(if your curious it looks like this: "
+ accessToken + " )");
System.out.println();
OAuthRequest request = new OAuthRequest(Verb.GET, MAGENTO_REST_API_URL+ "/products?limit=2");
service.signRequest(accessToken, request);
Response response = request.send();
System.out.println();
System.out.println(response.getCode());
System.out.println(response.getBody());
System.out.println();
}
public static void main(String[] args) {
MagentoFacade mf = new MagentoFacade();
mf.testMethod();
}
}
public final class MagentoThreeLeggedOAuth extends DefaultApi10a {
private static final String BASE_URL = "urltoMagento/";
@Override
public String getRequestTokenEndpoint() {
return BASE_URL + "oauth/initiate";
}
@Override
public String getAccessTokenEndpoint() {
return BASE_URL + "oauth/token";
}
@Override
public String getAuthorizationUrl(Token requestToken) {
return BASE_URL + "richard/oauth_authorize?oauth_token="
+ requestToken.getToken(); //this implementation is for admin roles only...
}
}
签名是:NnRaB73FqCcFAAVB4evZtGkWE3k=附加的额外OAuth参数:{oauth_callback-
我只是想补充一下,在Postman中,我只是添加了另一个带有false值的getHttpHost的url参数,这也起作用了。我为此奋斗了一整天。我希望这能节省别人的时间。
我也许能给你一个答案,但对你来说可能行不通。我费了好大劲才弄明白为什么本地机器上的签名无效。
事实证明,在Mage_Oauth_Model_Server::_validateSignature()中计算签名时,Magento构建请求URI部分,URL端口路径被修剪:$this-
在我的例子中,本地网络服务器运行在端口81上,因此我的签名和Magento签名不匹配。通过将
false
参数传递给getHttpHost
方法,您可以保持防止端口修剪。
我知道这很具体,但我弄丢了所有的头发,想知道为什么,所以我需要分享它。谁知道呢,也许这会有所帮助。
干杯,布尼
PDF创建步骤: 通过添加空签名字段名称创建pdf:suhasb@gmail.com和nikhil.courser@gmail.com,使用原始的hello.pdf输出文件名hello_tag.pdf运行程序>tagpdfsignaturefields.java 从hello_tag.pdf文件中提取签名字段suhasb@gmail.com进行首次签名,输出文件名为hello_signd.pdf
我正在尝试手动创建ES256 JWT令牌。我有一个用python编写的小脚本,它对使用ecdsa python的sha256哈希进行签名。但签名在jwt上无效。木卫一。 繁殖步骤: 创建Base64报头负载: eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9。EYJZDWIixMJ0Nty3ODKwiiBmFtzSi6IkPvAg4GrG9LiiWiyWrTaw4Ionry
操作系统:Windows 7 64位,使用Visual Studio Pro 2012并安装。NET 4.5。 我在Visual Studios中使用了Publish选项,并确保单击了对clickOnce清单签名和对程序集签名。它仍然不会在另一台计算机上运行,并表示我没有有效的XML签名。我已经在下面粘贴了错误消息。 我还阅读了:如何移动ClickOnce部署包,我必须签署我的ClickOnce清
我正在尝试从外部远程服务对文档进行签名。签署过程分两个阶段进行。远程服务在第一阶段期待base64编码的散列,并在身份验证后发出令牌。在第二阶段,我们将使用接收到的令牌再次传递相同的散列并获得base64签名的散列。我在这里附上签名错误的文件。文件 如果有人可以分析它并指导我评估无效签名背后的原因。我正在使用执行与pdf相关的操作。 更新 根据反馈,我做了一些更正。文档现在正在更改。已更改的文档
PDF下载示例:https://drive.google.com/file/d/12wv1Pb7gh4vCKOGhX4cZ3aOrLSiOo4If/view?usp=sharing 因此,当PDF在A.Reader(连续版本)中打开时,它表示证书无效,因为对该文档所做的更改导致签名无效。 但我看不出有什么变化。我们自己的应用程序只添加了一个签名(证书),为数千个其他PDF添加了正确的签名。未执行其
我试图利用Laravel5.7中新的签名中间件,但由于某些原因,生成的签名URL返回403个无效签名。 我使用最新的Laravel版本,PHP 7.2 这是我的web.php路线: 这是在我的控制器: 生成URL并显示如下内容: https://example.com/report/1/1?expires=1545440368 但是,当我点击链接时,结果是403,并显示消息:“无效签名” 有什么想