Java JWT[RSA],api所有者共享私钥
因此,我必须为我们正在与一个客户机进行的集成编写一个Rest客户机 他们给了我们一个私钥,并告诉我们创建json负载的JWT。 关键: 问题: 共享私钥是否正确?是否有任何java示例可用于使用RSA创建JWT 礼貌-Java JWT[RSA],api所有者共享私钥,java,jwt,rsa,Java,Jwt,Rsa,因此,我必须为我们正在与一个客户机进行的集成编写一个Rest客户机 他们给了我们一个私钥,并告诉我们创建json负载的JWT。 关键: 问题: 共享私钥是否正确?是否有任何java示例可用于使用RSA创建JWT 礼貌- 不,共享私钥是不正确的。从不 它被称为“私人”是有原因的 在客户端创建令牌也是不正确的 这里唯一正确的事情是,您需要私钥对令牌进行签名,但这不是客户端的任务。它违背了JWT的全部目的,因为您可以在其中写入角色、过期时间等任何内容。似乎API所有者信任您,而且可能它是一个非公开的A
不,共享私钥是不正确的。从不 它被称为“私人”是有原因的 在客户端创建令牌也是不正确的 这里唯一正确的事情是,您需要私钥对令牌进行签名,但这不是客户端的任务。它违背了JWT的全部目的,因为您可以在其中写入角色、过期时间等任何内容。似乎API所有者信任您,而且可能它是一个非公开的API,但无论如何,我建议您以正确的方式进行操作。他们应该实现一个端点来请求令牌
使用示例通常可以在的网站上找到。不,共享私钥是不正确的。从不 它被称为“私人”是有原因的 在客户端创建令牌也是不正确的 这里唯一正确的事情是,您需要私钥对令牌进行签名,但这不是客户端的任务。它违背了JWT的全部目的,因为您可以在其中写入角色、过期时间等任何内容。似乎API所有者信任您,而且可能它是一个非公开的API,但无论如何,我建议您以正确的方式进行操作。他们应该实现一个端点来请求令牌
通常可以在的网站上找到使用示例。RSA密钥是公钥/私钥对。私钥可用于签名JWT,公钥可用于验证这些JWT的签名 私钥不应与任何人共享。这样做将允许随机的人访问您的客户端API
我在使用Nimbus与RSA签署JWT方面有很好的经验。您可以在这里看到一些示例:。RSA密钥是公钥/私钥对。私钥可用于签名JWT,公钥可用于验证这些JWT的签名 私钥不应与任何人共享。这样做将允许随机的人访问您的客户端API 我在使用Nimbus与RSA签署JWT方面有很好的经验。你可以在这里看到一些例子:。迟做总比不做好 共享私钥通常是个坏主意。但是让我们假设您拥有私钥,并且希望每次都使用它来生成密钥对 这里是一个如何使用存储在P12文件中的现有私钥的示例
@Test
public void readP12() {
char[] keyStorePassword = "1234567890".toCharArray();
try {
KeyStore keyStore = KeyStore.getInstance("PKCS12");
InputStream keyStoreData = new FileInputStream(LOCATION + "\\keystore.p12");
keyStore.load(keyStoreData, keyStorePassword);
KeyStore.ProtectionParameter entryPassword = new KeyStore.PasswordProtection(keyStorePassword);
KeyStore.Entry keyEntry = keyStore.getEntry("1", entryPassword);
KeyStore.PrivateKeyEntry privateKeyEntry = (KeyStore.PrivateKeyEntry)
keyStore.getEntry("1", entryPassword);
PrivateKey privateKey = privateKeyEntry.getPrivateKey();
PublicKey publicKey = privateKeyEntry.getCertificate().getPublicKey();
String token = generateJwtToken(privateKey);
System.out.println(token);
printStructure(token, publicKey);
} catch (Exception e) {
// tbd
}
}
你可以看到如何做到迟到总比不迟到好
共享私钥通常是个坏主意。但是让我们假设您拥有私钥,并且希望每次都使用它来生成密钥对
这里是一个如何使用存储在P12文件中的现有私钥的示例
@Test
public void readP12() {
char[] keyStorePassword = "1234567890".toCharArray();
try {
KeyStore keyStore = KeyStore.getInstance("PKCS12");
InputStream keyStoreData = new FileInputStream(LOCATION + "\\keystore.p12");
keyStore.load(keyStoreData, keyStorePassword);
KeyStore.ProtectionParameter entryPassword = new KeyStore.PasswordProtection(keyStorePassword);
KeyStore.Entry keyEntry = keyStore.getEntry("1", entryPassword);
KeyStore.PrivateKeyEntry privateKeyEntry = (KeyStore.PrivateKeyEntry)
keyStore.getEntry("1", entryPassword);
PrivateKey privateKey = privateKeyEntry.getPrivateKey();
PublicKey publicKey = privateKeyEntry.getCertificate().getPublicKey();
String token = generateJwtToken(privateKey);
System.out.println(token);
printStructure(token, publicKey);
} catch (Exception e) {
// tbd
}
}
你可以看看怎么做
@Test
public void readP12() {
char[] keyStorePassword = "1234567890".toCharArray();
try {
KeyStore keyStore = KeyStore.getInstance("PKCS12");
InputStream keyStoreData = new FileInputStream(LOCATION + "\\keystore.p12");
keyStore.load(keyStoreData, keyStorePassword);
KeyStore.ProtectionParameter entryPassword = new KeyStore.PasswordProtection(keyStorePassword);
KeyStore.Entry keyEntry = keyStore.getEntry("1", entryPassword);
KeyStore.PrivateKeyEntry privateKeyEntry = (KeyStore.PrivateKeyEntry)
keyStore.getEntry("1", entryPassword);
PrivateKey privateKey = privateKeyEntry.getPrivateKey();
PublicKey publicKey = privateKeyEntry.getCertificate().getPublicKey();
String token = generateJwtToken(privateKey);
System.out.println(token);
printStructure(token, publicKey);
} catch (Exception e) {
// tbd
}
}