代码拉取完成,页面将自动刷新
package myoidc.server.infrastructure;
import org.jose4j.jwk.*;
import org.jose4j.jws.AlgorithmIdentifiers;
import org.jose4j.keys.EllipticCurves;
import org.json.JSONArray;
import org.json.JSONObject;
import org.junit.jupiter.api.Test;
import static myoidc.server.Constants.*;
import static org.junit.jupiter.api.Assertions.*;
/**
* 2020/6/3
*
* @author Shengzhao Li
* @since 1.1.1
*/
class JWKSTest {
/**
* RSA jwks 示例
*
* @throws Exception e
*/
@Test
void rsaJWKS() throws Exception {
RsaJsonWebKey jwk = RsaJwkGenerator.generateJwk(DEFAULT_KEY_SIZE);
//sig or enc
jwk.setUse(USE_SIG);
jwk.setKeyId(DEFAULT_KEY_ID);
jwk.setAlgorithm(OIDC_ALG);
// jwk.setKeyOps();
final String publicKeyString = jwk.toJson(JsonWebKey.OutputControlLevel.PUBLIC_ONLY);
final String privateKeyString = jwk.toJson(JsonWebKey.OutputControlLevel.INCLUDE_PRIVATE);
assertNotNull(publicKeyString);
assertNotNull(privateKeyString);
// System.out.println("PublicKey:\n" + publicKeyString);
// System.out.println("PrivateKey:\n" + privateKeyString);
//生成 jwks
JSONObject jsonObject = new JSONObject(jwk.toParams(JsonWebKey.OutputControlLevel.INCLUDE_PRIVATE));
JSONArray jsonArray = new JSONArray();
//加一个key
jsonArray.put(jsonObject);
//可以多加几个key
// jsonArray.put(jsonObject);
JSONObject jwksJSON = new JSONObject();
jwksJSON.put("keys", jsonArray);
assertNotNull(jwksJSON);
//输出JSON格式
// System.out.println(jwksJSON);
}
/**
* EC jwks 示例
*
* @throws Exception e
*/
@Test
void ecJWKS() throws Exception {
EllipticCurveJsonWebKey jwk = EcJwkGenerator.generateJwk(EllipticCurves.P256);
//sig or enc
jwk.setUse(USE_SIG);
jwk.setKeyId(DEFAULT_KEY_ID);
jwk.setAlgorithm(AlgorithmIdentifiers.ECDSA_USING_P256_CURVE_AND_SHA256);
// jwk.setKeyOps();
final String publicKeyString = jwk.toJson(JsonWebKey.OutputControlLevel.PUBLIC_ONLY);
final String privateKeyString = jwk.toJson(JsonWebKey.OutputControlLevel.INCLUDE_PRIVATE);
assertNotNull(publicKeyString);
assertNotNull(privateKeyString);
// System.out.println("PublicKey:\n" + publicKeyString);
// System.out.println("PrivateKey:\n" + privateKeyString);
//生成 jwks
JSONObject jsonObject = new JSONObject(jwk.toParams(JsonWebKey.OutputControlLevel.INCLUDE_PRIVATE));
JSONArray jsonArray = new JSONArray();
//加一个key
jsonArray.put(jsonObject);
//可以多加几个key
// jsonArray.put(jsonObject);
JSONObject jwksJSON = new JSONObject();
jwksJSON.put("keys", jsonArray);
assertNotNull(jwksJSON);
//输出JSON格式
// System.out.println(jwksJSON);
}
/**
* Oct(AES jwks 示例
* 对称算法
*
* @throws Exception e
*/
@Test
void octJWKS() throws Exception {
OctetSequenceJsonWebKey jwk = OctJwkGenerator.generateJwk(DEFAULT_KEY_SIZE);
//sig or enc
jwk.setUse(USE_ENC);
jwk.setKeyId(DEFAULT_KEY_ID);
jwk.setAlgorithm(AlgorithmIdentifiers.HMAC_SHA256);
// jwk.setKeyOps();
// final String publicKeyString = jwk.toJson(JsonWebKey.OutputControlLevel.PUBLIC_ONLY);
final String privateKeyString = jwk.toJson(JsonWebKey.OutputControlLevel.INCLUDE_PRIVATE);
// assertNotNull(publicKeyString);
assertNotNull(privateKeyString);
// System.out.println("PublicKey:\n" + publicKeyString);
// System.out.println("PrivateKey:\n" + privateKeyString);
//生成 jwks
JSONObject jsonObject = new JSONObject(jwk.toParams(JsonWebKey.OutputControlLevel.INCLUDE_PRIVATE));
JSONArray jsonArray = new JSONArray();
//加一个key
jsonArray.put(jsonObject);
//可以多加几个key
// jsonArray.put(jsonObject);
JSONObject jwksJSON = new JSONObject();
jwksJSON.put("keys", jsonArray);
assertNotNull(jwksJSON);
//输出JSON格式
// System.out.println(jwksJSON);
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。