스크램 인증은 버전 4.5의 새로운 기능 중 하나입니다. 확인 이 블로그 항목 을 참조하여 Couchbase의 SCRAM에 대해 소개하세요.
이 문서에서는 Java에서 스크램 핸드셰이크를 모니터링하는 방법에 대해 설명합니다.
첫째, SCRAM을 사용하기 위해 Java 코드에서 특별한 작업을 할 필요가 없습니다. SCRAM은 기본적으로 사용하도록 설정되어 있으며, Java SDK 버전이 2.2.5 이상이고 Couchbase Server 버전이 4.5 이상인 경우에 사용됩니다.
비밀번호가 있는 버킷을 열면 SCRAM이 사용됩니다.
Java 코드에서 스크램 인증을 모니터링하려면 디버그 수준을 최고로 설정하면 됩니다:
1 2 3 4 5 6 7 8 9 |
로거 logger = 로거.getLogger("com.couchbase.client"); logger.setLevel(레벨.최고); 에 대한(핸들러 h : logger.getParent().getHandlers()) { 만약(h 인스턴스 오브 콘솔 핸들러){ h.setLevel(레벨.최고); } } } |
이제 코드의 어느 지점에서 버킷에 액세스합니다:
1 2 |
카우치베이스클러스터.create("_클러스터_주소_").오픈버킷(버킷, 비밀번호); |
이제 인증 대화를 볼 수 있습니다:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
5월 19, 2016 12:23:45 PM com.카우치베이스.클라이언트.deps.io.netty.핸들러.로깅.로깅 핸들러 로그 메시지 최고: [id: 0x7af6f756, L:/127.0.0.1:51766 - R:localhost/127.0.0.1:11210] 수신됨: 75B +-------------------------------------------------+ | 0 1 2 3 4 5 6 7 8 9 a b c d e f | +--------+-------------------------------------------------+----------------+ |00000000| 81 20 00 00 00 00 00 00 00 00 00 33 00 00 00 00 |. .........3....| |00000010| 00 00 00 00 00 00 00 00 53 43 52 41 4d 2d 53 48 |........SCRAM-SH| |00000020| 41 35 31 32 20 53 43 52 41 4d 2d 53 48 41 32 35 |A512 SCRAM-SHA25| |00000030| 36 20 53 43 52 41 4d 2d 53 48 41 31 20 43 52 41 |6 SCRAM-SHA1 CRA| |00000040| 4d 2d 4d 44 35 20 50 4c 41 49 4e |M-MD5 PLAIN | +--------+-------------------------------------------------+----------------+ 5월 19, 2016 12:23:45 PM com.카우치베이스.클라이언트.deps.io.netty.핸들러.로깅.로깅 핸들러 로그 메시지 최고: [id: 0x7af6f756, L:/127.0.0.1:51766 - R:localhost/127.0.0.1:11210] 쓰기: 36B +-------------------------------------------------+ | 0 1 2 3 4 5 6 7 8 9 a b c d e f | +--------+-------------------------------------------------+----------------+ |00000000| 80 21 00 0c 00 00 00 00 00 00 00 33 00 00 00 00 |.!.........3....| |00000010| 00 00 00 00 00 00 00 00 53 43 52 41 4d 2d 53 48 |........SCRAM-SH| |00000020| 41 35 31 32 |A512 | +--------+-------------------------------------------------+----------------+ |
여기서는 서버가 지원되는 인증 방법에 대해 알리고 클라이언트가 가장 강력한 인증 방법을 선택하는 단계만 보여드립니다. 이 핸드셰이크에서는 서버가 지원합니다:
- SCRAM-SHA512
- SCRAM-SHA256
- SCRAM-SHA1
- CRAM-MD5 플레인
그리고 클라이언트는 가장 강한 것을 선택합니다: SCRAM-SHA512
Couchbase 4.1에 대해 동일한 코드를 실행하면 이 출력이 생성됩니다:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
5월 20, 2016 12:05:54 AM com.카우치베이스.클라이언트.deps.io.netty.핸들러.로깅.로깅 핸들러 로그 메시지 최고: [id: 0x7a2764f3, L:/192.168.56.1:52201 - R:오라클2카우치베이스/192.168.56.101:11210] 수신됨: 38B +-------------------------------------------------+ | 0 1 2 3 4 5 6 7 8 9 a b c d e f | +--------+-------------------------------------------------+----------------+ |00000000| 81 20 00 00 00 00 00 00 00 00 00 0e 00 00 00 00 |. ..............| |00000010| 00 00 00 00 00 00 00 00 43 52 41 4d 2d 4d 44 35 |........CRAM-MD5| |00000020| 20 50 4c 41 49 4e | PLAIN | +--------+-------------------------------------------------+----------------+ 5월 20, 2016 12:05:54 AM com.카우치베이스.클라이언트.deps.io.netty.핸들러.로깅.로깅 핸들러 로그 메시지 최고: [id: 0x7a2764f3, L:/192.168.56.1:52201 - R:오라클2카우치베이스/192.168.56.101:11210] 쓰기: 32B +-------------------------------------------------+ | 0 1 2 3 4 5 6 7 8 9 a b c d e f | +--------+-------------------------------------------------+----------------+ |00000000| 80 21 00 08 00 00 00 00 00 00 00 08 00 00 00 00 |.!..............| |00000010| 00 00 00 00 00 00 00 00 43 52 41 4d 2d 4d 44 35 |........CRAM-MD5| +--------+-------------------------------------------------+----------------+ |
여기에서 CRAM-MD5가 어떻게 선택되는지 확인할 수 있습니다.
네트워크 트래픽을 스니핑하여 인증을 모니터링할 수도 있습니다. 이 작업을 위한 훌륭한 도구 중 하나는 와이어샤크. 트래픽을 가져온 다음 프로토콜 "Couchbase"를 기준으로 필터링할 수 있습니다:
끝으로 인증 핸드셰이크를 모니터링하는 것이 얼마나 쉬운지 눈치채셨을 텐데요, 이것이 바로 클라이언트-서버 인증에 TLS를 사용하는 것을 권장하는 이유입니다.
이러한 방식으로 스크램은 상호 인증을 사용하므로 중간자 공격을 피할 수 있으며, 서버는 클라이언트 해시 비밀번호를 기반으로 '비밀'을 알고 있다는 것을 증명하기 위해 도전에 응답해야 합니다.
행복한 인증!