python 后端中 near 协议的 JWT 身份验证
JWT authentication for near protocol in a python backend
在以太坊中,JWT 身份验证通过以下过程进行:
https://github.com/Bearle/django-web3-auth/
1) 用户使用帐户私钥在 metamask 中签署消息。
2) 账号地址和签名消息POST到后台
3) 后端验证签名是否正确并生成一个已签名的 Json Web Token (JWT) 证明持有者控制着地址
Near 协议使用以下代码进行签名:
window.near = await nearlib.connect(Object.assign({ deps: { keyStore: new nearlib.keyStores.BrowserLocalStorageKeyStore() } }, window.nearConfig));
// Needed to access wallet login
window.walletAccount = new nearlib.WalletAccount(window.near);
还有这个:
await this.props.wallet.requestSignIn(
window.nearConfig.contractName,
appTitle
)
后端如何使用near login,尤其是验证步骤。在 python 中,如果是 web3,它使用
from web3auth.utils import recover_to_addr
if not address == recover_to_addr(token, signature):
return None
我可以在 near 协议中使用 python(或 javascript 或 rust)中的东西吗? Rust 示例很好,因为我可以通过 cffi.
调用 python 中的函数
请提供一些代码。
NEAR 钱包不提供 JWT 身份验证,但总体流程如下:
- 用户使用密钥对消息进行签名(例如,通过电子钱包或从终端近shell登录后);
near-api-js
在 Signer 接口上有 signMessage
方法,但您可以使用任何 ed25519 实现使用密钥 对二进制 blob 进行签名
- 帐户 ID 和签名消息已发布到后端
- 后端使用任何 ed25519 库验证签名是否正确,以检查签名的正确性(同样,
near-api-js
KeyPair has verify
method), and query NEAR RPC API 以确认密钥属于帐户 ID。
在以太坊中,JWT 身份验证通过以下过程进行:
https://github.com/Bearle/django-web3-auth/
1) 用户使用帐户私钥在 metamask 中签署消息。
2) 账号地址和签名消息POST到后台
3) 后端验证签名是否正确并生成一个已签名的 Json Web Token (JWT) 证明持有者控制着地址
Near 协议使用以下代码进行签名:
window.near = await nearlib.connect(Object.assign({ deps: { keyStore: new nearlib.keyStores.BrowserLocalStorageKeyStore() } }, window.nearConfig));
// Needed to access wallet login
window.walletAccount = new nearlib.WalletAccount(window.near);
还有这个:
await this.props.wallet.requestSignIn(
window.nearConfig.contractName,
appTitle
)
后端如何使用near login,尤其是验证步骤。在 python 中,如果是 web3,它使用
from web3auth.utils import recover_to_addr
if not address == recover_to_addr(token, signature):
return None
我可以在 near 协议中使用 python(或 javascript 或 rust)中的东西吗? Rust 示例很好,因为我可以通过 cffi.
调用 python 中的函数
请提供一些代码。
NEAR 钱包不提供 JWT 身份验证,但总体流程如下:
- 用户使用密钥对消息进行签名(例如,通过电子钱包或从终端近shell登录后);
near-api-js
在 Signer 接口上有signMessage
方法,但您可以使用任何 ed25519 实现使用密钥 对二进制 blob 进行签名
- 帐户 ID 和签名消息已发布到后端
- 后端使用任何 ed25519 库验证签名是否正确,以检查签名的正确性(同样,
near-api-js
KeyPair hasverify
method), and query NEAR RPC API 以确认密钥属于帐户 ID。