ruby-on-rails - 如何使用 Ruby 获得 JWT?
问题描述
我目前正在做一个项目,我将整合我的公司和销售人员的应用程序。
就我而言,似乎使用 JWT 进行身份验证更好。所以,我想尝试一下。
但是我不知道如何在 Ruby 上生成 JWT,尽管我研究了很多。因此,如果有人知道如何制作 jwt,我希望您能告诉我如何制作。
我想做的是1,在salesforce上创建应用程序(完成)2,创建X509认证并将其设置在salesforce上的应用程序上。(done) 3、使用X509认证的秘钥创建JWT。(不知道如何)
我一直在寻找解决这个问题的方法,但我做不到。我想我应该做这样的事情。
require 'jwt'
payload = { data: 'test' }
# The secret must be a string. A JWT::DecodeError will be raised if it isn't provided.
hmac_secret = 'my$ecretK3y'
token = JWT.encode payload, hmac_secret, 'HS256'
# eyJhbGciOiJIUzI1NiJ9.eyJkYXRhIjoidGVzdCJ9.pNIWIL34Jo13LViZAJACzK6Yf0qnvT_BuwOxiMCPE-Y
puts token
decoded_token = JWT.decode token, hmac_secret, true, { algorithm: 'HS256' }
# Array
# [
# {"data"=>"test"}, # payload
# {"alg"=>"HS256"} # header
# ]
puts decoded_token
但这不适用于我的本地。当我运行这个文件时,它说
`require': cannot load such file -- jwt
我想我想做的PHP版本就是这个。
<?php
require_once './vendor/autoload.php';
use Lcobucci\JWT\Builder;
use Lcobucci\JWT\Signer\Key;
use Lcobucci\JWT\Signer\Rsa\Sha256;
// ログインURL
// 本番: https://login.salesforce.com
// Sandbox: https://test.login.salesforce.com
// スクラッチ組織: https://test.saleforce.com
define('LOGIN_URL', 'https://test.salesforce.com');
// コンシューマ鍵
define('CLIENT_ID', <<接続アプリケーションのコンシューマ鍵>>);
// ユーザID
define('USER_ID', 'xxxxx@example.com');
function createjwt() {
$signer = new Sha256();
$privateKey = new Key('file://cert/server.key');
$time = time();
$token = (new Builder())->issuedBy(CLIENT_ID) // iss: コンシューマ鍵
->permittedFor(LOGIN_URL) // aud: SalesforceログインURL
->relatedTo(USER_ID) // sub: SalesforceユーザID
->expiresAt($time + 3 * 60) // exp: 3分以内
->getToken($signer, $privateKey);
return $token;
}
$jwt = createjwt();
echo $jwt;
如果您有任何线索,请帮助我。
参考资料在这里: https ://help.salesforce.com/articleView?id=sf.remoteaccess_oauth_jwt_flow.htm&type=5 https://github.com/jwt/ruby-jwt
解决方案
这不是 JWT 的错误,而是我无法正确安装 get。由于内存不足,我尝试过一次。这解决了这个问题。宝石安装 jwt
谢谢你。
推荐阅读
- android - 单击按钮时关闭当前和上一个活动
- android - Wear OS 和 AlertDialog
- java - Katalon CLI 命令远程执行错误
- python - 在python3中导入期间自动完成模块名称
- reactjs - 如何通过 inputProps 在 Checkbox 组件中添加数据属性
- python-3.x - Keras Bidirectional "RuntimeError: You must compile your model before using it." 编译完成后
- java - 将字符串转换为 jsonArray
- c# - 参数 2 不能与 'out' 关键字一起传递
- angular - 我可以将 ngForm 设置为默认值,但不能设置初始值(angular2+)
- objective-c - 如何在objective-c文件中调用带有转义闭包的swift静态方法