com.nimbusds.jose.jwk.JWK.getKeyID()方法的使用及代码示例

x33g5p2x  于2022-01-22 转载在 其他  
字(11.5k)|赞(0)|评价(0)|浏览(171)

本文整理了Java中com.nimbusds.jose.jwk.JWK.getKeyID()方法的一些代码示例,展示了JWK.getKeyID()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。JWK.getKeyID()方法的具体详情如下:
包路径:com.nimbusds.jose.jwk.JWK
类名称:JWK
方法名:getKeyID

JWK.getKeyID介绍

[英]Gets the ID ( kid) of this JWK. The key ID can be used to match a specific key. This can be used, for instance, to choose a key within a JWKSet during key rollover. The key ID may also correspond to a JWS/JWE kid header parameter value.
[中]获取此JWK的ID(kid)。密钥ID可用于匹配特定密钥。例如,在关键点滚动期间,可以使用此选项在JWKSet内选择关键点。密钥ID也可能对应于JWS/JWE kid头参数值。

代码示例

代码示例来源:origin: mitreid-connect/OpenID-Connect-Java-Spring-Server

  1. /**
  2. * Build this service based on the given keystore. All keys must have a key
  3. * id ({@code kid}) field in order to be used.
  4. *
  5. * @param keyStore
  6. * @throws NoSuchAlgorithmException
  7. * @throws InvalidKeySpecException
  8. * @throws JOSEException
  9. */
  10. public DefaultJWTEncryptionAndDecryptionService(JWKSetKeyStore keyStore) throws NoSuchAlgorithmException, InvalidKeySpecException, JOSEException {
  11. // convert all keys in the keystore to a map based on key id
  12. for (JWK key : keyStore.getKeys()) {
  13. if (!Strings.isNullOrEmpty(key.getKeyID())) {
  14. this.keys.put(key.getKeyID(), key);
  15. } else {
  16. throw new IllegalArgumentException("Tried to load a key from a keystore without a 'kid' field: " + key);
  17. }
  18. }
  19. buildEncryptersAndDecrypters();
  20. }

代码示例来源:origin: mitreid-connect/OpenID-Connect-Java-Spring-Server

  1. /**
  2. * Build this service based on the given keystore. All keys must have a key
  3. * id ({@code kid}) field in order to be used.
  4. *
  5. * @param keyStore
  6. * the keystore to load all keys from
  7. *
  8. * @throws InvalidKeySpecException
  9. * If the keys in the JWKs are not valid
  10. * @throws NoSuchAlgorithmException
  11. * If there is no appropriate algorithm to tie the keys to.
  12. */
  13. public DefaultJWTSigningAndValidationService(JWKSetKeyStore keyStore) throws NoSuchAlgorithmException, InvalidKeySpecException {
  14. // convert all keys in the keystore to a map based on key id
  15. if (keyStore!= null && keyStore.getJwkSet() != null) {
  16. for (JWK key : keyStore.getKeys()) {
  17. if (!Strings.isNullOrEmpty(key.getKeyID())) {
  18. // use the key ID that's built into the key itself
  19. this.keys.put(key.getKeyID(), key);
  20. } else {
  21. // create a random key id
  22. String fakeKid = UUID.randomUUID().toString();
  23. this.keys.put(fakeKid, key);
  24. }
  25. }
  26. }
  27. buildSignersAndVerifiers();
  28. }

代码示例来源:origin: spring-projects/spring-security

  1. @Test
  2. public void getWhenNoMatchAndKeyIdNotMatchThenRefreshAndFoundThenFound() {
  3. this.server.enqueue(new MockResponse().setBody(this.keys2));
  4. when(this.matcher.matches(any())).thenReturn(false, false, true);
  5. when(this.matcher.getKeyIDs()).thenReturn(Collections.singleton("rotated"));
  6. List<JWK> keys = this.source.get(this.selector).block();
  7. assertThat(keys).hasSize(1);
  8. assertThat(keys.get(0).getKeyID()).isEqualTo("rotated");
  9. }

代码示例来源:origin: spring-projects/spring-security

  1. @Test
  2. public void getWhenMatchThenCreatesKeys() {
  3. when(this.matcher.matches(any())).thenReturn(true);
  4. List<JWK> keys = this.source.get(this.selector).block();
  5. assertThat(keys).hasSize(2);
  6. JWK key1 = keys.get(0);
  7. assertThat(key1.getKeyID()).isEqualTo("1923397381d9574bb873202a90c32b7ceeaed027");
  8. assertThat(key1.getAlgorithm().getName()).isEqualTo("RS256");
  9. assertThat(key1.getKeyType()).isEqualTo(KeyType.RSA);
  10. assertThat(key1.getKeyUse()).isEqualTo(KeyUse.SIGNATURE);
  11. JWK key2 = keys.get(1);
  12. assertThat(key2.getKeyID()).isEqualTo("7ddf54d3032d1f0d48c3618892ca74c1ac30ad77");
  13. assertThat(key2.getAlgorithm().getName()).isEqualTo("RS256");
  14. assertThat(key2.getKeyType()).isEqualTo(KeyType.RSA);
  15. assertThat(key2.getKeyUse()).isEqualTo(KeyUse.SIGNATURE);
  16. }

代码示例来源:origin: mitreid-connect/OpenID-Connect-Java-Spring-Server

  1. decrypters.put(id, decrypter);
  2. } else {
  3. logger.warn("No private key for key #" + jwk.getKeyID());
  4. decrypters.put(id, decrypter);
  5. } else {
  6. logger.warn("No private key for key # " + jwk.getKeyID());

代码示例来源:origin: GoogleCloudPlatform/java-docs-samples

  1. private ECPublicKey getKey(String kid, String alg) throws Exception {
  2. JWK jwk = keyCache.get(kid);
  3. if (jwk == null) {
  4. // update cache loading jwk public key data from url
  5. JWKSet jwkSet = JWKSet.load(new URL(PUBLIC_KEY_VERIFICATION_URL));
  6. for (JWK key : jwkSet.getKeys()) {
  7. keyCache.put(key.getKeyID(), key);
  8. }
  9. jwk = keyCache.get(kid);
  10. }
  11. // confirm that algorithm matches
  12. if (jwk != null && jwk.getAlgorithm().getName().equals(alg)) {
  13. return ECKey.parse(jwk.toJSONString()).toECPublicKey();
  14. }
  15. return null;
  16. }

代码示例来源:origin: de.adorsys.sts/sts-crypto-utils

  1. private KeyAndJwk get(String keyID){
  2. if(keyID==null) return null;
  3. KeyAndJwk keyAndJwk = keyMap.get(keyID);
  4. if(keyAndJwk==null) return null;
  5. if(!keyID.equalsIgnoreCase(keyAndJwk.jwk.getKeyID()))return null;
  6. return keyAndJwk;
  7. }

代码示例来源:origin: de.adorsys.cryptoutils/jjwk

  1. private KeyAndJwk get(String keyID){
  2. if(keyID==null) return null;
  3. KeyAndJwk keyAndJwk = keyMap.get(keyID);
  4. if(keyAndJwk==null) return null;
  5. if(!keyID.equalsIgnoreCase(keyAndJwk.jwk.getKeyID()))return null;
  6. return keyAndJwk;
  7. }

代码示例来源:origin: com.nimbusds/nimbus-jose-jwt

  1. /**
  2. * Gets the key from this JSON Web Key (JWK) set as identified by its
  3. * Key ID (kid) member.
  4. *
  5. * <p>If more than one key exists in the JWK Set with the same
  6. * identifier, this function returns only the first one in the set.
  7. *
  8. * @param kid They key identifier.
  9. *
  10. * @return The key identified by {@code kid} or {@code null} if no key
  11. * exists.
  12. */
  13. public JWK getKeyByKeyId(String kid) {
  14. for (JWK key : getKeys()) {
  15. if (key.getKeyID() != null && key.getKeyID().equals(kid)) {
  16. return key;
  17. }
  18. }
  19. // no key found
  20. return null;
  21. }

代码示例来源:origin: de.adorsys.sts/sts-keymanagement

  1. private JWKSet getFilteredPrivateKeys(Predicate<StsKeyEntry> predicate) {
  2. if(repository.exists()) {
  3. StsKeyStore keyStore = repository.load();
  4. ServerKeysHolder exportedKeys = keyConversionService.export(keyStore.getKeyStore());
  5. Map<String, StsKeyEntry> keyEntries = keyStore.getKeyEntries();
  6. List<String> filteredKeyAliases = keyEntries.values().stream()
  7. .filter(predicate)
  8. .map(StsKeyEntry::getAlias)
  9. .collect(Collectors.toList());
  10. List<JWK> filteredKeys = exportedKeys.getPrivateKeySet().getKeys()
  11. .stream()
  12. .filter(k -> filteredKeyAliases.contains(k.getKeyID()))
  13. .collect(Collectors.toList());
  14. return new JWKSet(filteredKeys);
  15. } else {
  16. return EMPTY_JWK_SET;
  17. }
  18. }

代码示例来源:origin: de.adorsys.cryptoutils/jjwk

  1. public ServerKeyMap(JWKSet jwkSet){
  2. List<JWK> keys = jwkSet.getKeys();
  3. for (JWK jwk : keys) {
  4. if (jwk instanceof AssymetricJWK) {
  5. Key key = KeyConverter.toPrivateOrSecret(jwk);
  6. if(key!=null && jwk.getKeyID()!=null){
  7. KeyAndJwk keyAndJwk = new KeyAndJwk(key, jwk);
  8. keyMap.put(jwk.getKeyID(), keyAndJwk);
  9. if(KeyUse.SIGNATURE.equals(jwk.getKeyUse())){
  10. signKeyList.add(keyAndJwk);
  11. } else if (KeyUse.ENCRYPTION.equals(jwk.getKeyUse())){
  12. encKeyList.add(keyAndJwk);
  13. }
  14. }
  15. } else if (jwk instanceof SecretJWK) {
  16. Key key = KeyConverter.toPrivateOrSecret(jwk);
  17. if(key!=null && jwk.getKeyID()!=null){
  18. KeyAndJwk keyAndJwk = new KeyAndJwk(key, jwk);
  19. keyMap.put(jwk.getKeyID(), keyAndJwk);
  20. secretKeyList.add(keyAndJwk);
  21. }
  22. }
  23. }
  24. }

代码示例来源:origin: de.adorsys.sts/sts-crypto-utils

  1. public StsServerKeyMap(JWKSet jwkSet) {
  2. List<JWK> keys = jwkSet.getKeys();
  3. for (JWK jwk : keys) {
  4. if (jwk instanceof RSAKey) {
  5. Key key = KeyConverter.toPrivateOrSecret(jwk);
  6. if(key!=null && jwk.getKeyID()!=null){
  7. KeyAndJwk keyAndJwk = new KeyAndJwk(key, jwk);
  8. keyMap.put(jwk.getKeyID(), keyAndJwk);
  9. if(KeyUse.SIGNATURE.equals(jwk.getKeyUse())){
  10. signKeyList.add(keyAndJwk);
  11. } else if (KeyUse.ENCRYPTION.equals(jwk.getKeyUse())){
  12. encKeyList.add(keyAndJwk);
  13. }
  14. }
  15. } else if (jwk instanceof SecretJWK) {
  16. Key key = KeyConverter.toPrivateOrSecret(jwk);
  17. if(key!=null && jwk.getKeyID()!=null){
  18. KeyAndJwk keyAndJwk = new KeyAndJwk(key, jwk);
  19. keyMap.put(jwk.getKeyID(), keyAndJwk);
  20. secretKeyList.add(keyAndJwk);
  21. }
  22. }
  23. }
  24. }

代码示例来源:origin: de.adorsys.sts/sts-keymanagement

  1. @Override
  2. public JWKSet getPublicKeys() {
  3. if(repository.exists()) {
  4. StsKeyStore keyStore = repository.load();
  5. ServerKeysHolder exportedKeys = keyConversionService.export(keyStore.getKeyStore());
  6. Map<String, StsKeyEntry> keyEntries = keyStore.getKeyEntries();
  7. List<String> filteredKeyAliases = keyEntries.values().stream()
  8. .filter(this::hasUsablePublicKey)
  9. .map(StsKeyEntry::getAlias)
  10. .collect(Collectors.toList());
  11. List<JWK> filteredKeys = exportedKeys.getPublicKeySet().getKeys()
  12. .stream()
  13. .filter(k -> filteredKeyAliases.contains(k.getKeyID()))
  14. .collect(Collectors.toList());
  15. return new JWKSet(filteredKeys);
  16. } else {
  17. return EMPTY_JWK_SET;
  18. }
  19. }

代码示例来源:origin: org.wso2.carbon.apimgt/org.wso2.carbon.apimgt.hostobjects.oidc

  1. if (jwkKey != null && jwkKey.getKeyID() != null) {
  2. String id = jwkKey.getKeyID();
  3. verifiers.put(id, verifier);

代码示例来源:origin: de.adorsys.cryptoutils/jjwk

  1. public static List<JWK> selectKeypairs(JWKSet exportKeys){
  2. JWKSet publicJWKSet = exportKeys.toPublicJWKSet();
  3. List<JWK> keys = publicJWKSet.getKeys();
  4. if(keys==null || keys.isEmpty()) return keys;
  5. Set<String> keyIds = new HashSet<>();
  6. for (JWK jwk : keys) {
  7. keyIds.add(jwk.getKeyID());
  8. }
  9. JWKMatcher keyPairs = new JWKMatcher.Builder().keyIDs(keyIds).build();
  10. return new JWKSelector(keyPairs).select(exportKeys);
  11. }

代码示例来源:origin: de.adorsys.cryptoutils/jjwk

  1. boolean change = false;
  2. for (JWK jwk : keys) {
  3. String keyID = jwk.getKeyID();
  4. Base64URL thumbprint = jwk.computeThumbprint();
  5. String expectedKeyId = thumbprint.toString().toLowerCase();

代码示例来源:origin: de.adorsys.sts/sts-resource-server

  1. private JWEHeader getHeader(JWK jwk) throws JOSEException {
  2. JWEHeader header;
  3. if (jwk instanceof RSAKey) {
  4. header = new JWEHeader(JWEAlgorithm.RSA_OAEP, EncryptionMethod.A128GCM);
  5. } else if (jwk instanceof ECKey) {
  6. header = new JWEHeader(JWEAlgorithm.ECDH_ES_A128KW, EncryptionMethod.A192GCM);
  7. } else {
  8. return null;
  9. }
  10. return new JWEHeader.Builder(header).keyID(jwk.getKeyID()).build();
  11. }
  12. }

代码示例来源:origin: de.adorsys.cryptoutils/encobject

  1. /**
  2. *
  3. * @param keystorePersistence
  4. * @param keyStoreAccess Muss nur das ReadStorePassword enthalten. ReadKeyPassword darf null sein
  5. * @return
  6. */
  7. public static KeySourceAndKeyID getForPublicKey(KeystorePersistence keystorePersistence, KeyStoreAccess keyStoreAccess) {
  8. LOGGER.debug("get keysource for public key of " + keyStoreAccess.getKeyStorePath());
  9. KeyStore userKeystore = keystorePersistence.loadKeystore(keyStoreAccess.getKeyStorePath().getObjectHandle(), keyStoreAccess.getKeyStoreAuth().getReadStoreHandler());
  10. JWKSet exportKeys = load(userKeystore, null);
  11. LOGGER.debug("number of public keys found:" + exportKeys.getKeys().size());
  12. List<JWK> encKeys = selectEncKeys(exportKeys);
  13. if (encKeys.isEmpty()) {
  14. throw new AsymmetricEncryptionException("did not find any public keys in keystore " + keyStoreAccess.getKeyStorePath());
  15. }
  16. JWK randomKey = JwkExport.randomKey(encKeys);
  17. KeyID keyID = new KeyID(randomKey.getKeyID());
  18. KeySource keySource = new KeyStoreBasedPublicKeySourceImpl(exportKeys);
  19. return new KeySourceAndKeyID(keySource, keyID);
  20. }

代码示例来源:origin: gravitee-io/graviteeio-access-management

  1. jwk.setAlg(nimbusJwk.getAlgorithm().getName());
  2. if (nimbusJwk.getKeyID() != null) {
  3. jwk.setKid(nimbusJwk.getKeyID());

代码示例来源:origin: de.adorsys.cryptoutils/encobject

  1. /**
  2. *
  3. * @param keystorePersistence
  4. * @param keyStoreAccess bei Passworte muessen gesetzt sein
  5. * @return
  6. */
  7. public static KeySourceAndKeyID getForSecretKey(KeystorePersistence keystorePersistence, KeyStoreAccess keyStoreAccess) {
  8. LOGGER.debug("get keysource for secret key of " + keyStoreAccess.getKeyStorePath());
  9. // KeyStore laden
  10. KeyStore userKeystore = keystorePersistence.loadKeystore(keyStoreAccess.getKeyStorePath().getObjectHandle(), keyStoreAccess.getKeyStoreAuth().getReadStoreHandler());
  11. KeySource keySource = new KeyStoreBasedSecretKeySourceImpl(userKeystore, keyStoreAccess.getKeyStoreAuth().getReadKeyHandler());
  12. // Willkürlich einen SecretKey aus dem KeyStore nehmen für die Verschlüsselung des Guards
  13. JWKSet jwkSet = JwkExport.exportKeys(userKeystore, keyStoreAccess.getKeyStoreAuth().getReadKeyHandler());
  14. if (jwkSet.getKeys().isEmpty()) {
  15. throw new SymmetricEncryptionException("did not find any secret keys in keystore with id: " + keyStoreAccess.getKeyStorePath());
  16. }
  17. ServerKeyMap serverKeyMap = new ServerKeyMap(jwkSet);
  18. KeyAndJwk randomSecretKey = serverKeyMap.randomSecretKey();
  19. KeyID keyID = new KeyID(randomSecretKey.jwk.getKeyID());
  20. return new KeySourceAndKeyID(keySource, keyID);
  21. }

相关文章