8.2. 자격 증명 모음에서 값 사용
자격 증명 모음에는 중요한 데이터가 포함되어 있으며 Red Hat Single Sign-On은 시크릿을 적절하게 처리합니다. 시크릿에 액세스할 때 자격 증명 모음에서 시크릿을 가져오고 필요한 시간 동안만 JVM 메모리에 유지됩니다. 그런 다음 JVM 메모리에서 해당 콘텐츠를 삭제하려고 합니다. 이 작업은 아래 설명된 대로 try
-with-resources 문 내에만 자격 증명 모음 시크릿을 사용하여 수행됩니다.
char[] c; try (VaultCharSecret cSecret = session.vault().getCharSecret(SECRET_NAME)) { // ... use cSecret c = cSecret.getAsArray().orElse(null); // if c != null, it now contains password } // if c != null, it now contains garbage
예제에서는 KeycloakSession.vault()
를 시크릿에 액세스하기 위한 진입점으로 사용합니다. VaultProvider.obtainSecret
방법을 직접 사용하는 것도 사실상 가능합니다. 그러나 vault()
메서드에는 원시 시크릿 (일반적으로 바이트 배열)을 문자 배열 (일반적으로 byte 배열) 또는 문자열 (Docker ().get
을 통해)을 해석할 String
Secret()수 있는 기능이 있으며 원래의 해석되지 않은 값 (즉,
메서드를 통해)을 확보할 수 있습니다.
vault()
.getRawSecret()
String
개체는 변경할 수 없으므로 임의 가비지로 재정의하여 해당 콘텐츠를 삭제할 수 없습니다. 문자열 내부를 방지하기 위해 기본 VaultStringSecret
구현에서 측정이 수행되었지만
개체에 저장된 보안은 최소한 다음 GC 라운드에 저장됩니다. 따라서 일반 바이트 및 문자 배열과 버퍼를 사용하는 것이 좋습니다.
String