A autenticação SCRAM é um dos novos recursos da versão 4.5. Verificar esta entrada do blog para obter uma introdução sobre o SCRAM no Couchbase.
Neste artigo, abordaremos como monitorar o handshake do SCRAM a partir do Java.
Primeiro, você não precisa fazer nada de especial em seu código Java para usar o SCRAM. O SCRAM é ativado por padrão e será usado se a versão do Java SDK for 2.2.5 ou superior e a versão do Couchbase Server for 4.5 ou superior.
O SCRAM será usado quando você abrir um bucket com uma senha.
Para monitorar a autenticação da SCRAM em seu código Java, basta definir o nível de depuração como FINEST:
1 2 3 4 5 6 7 8 9 |
Registrador registrador = Registrador.getLogger("com.couchbase.client"); registrador.setLevel(Nível.FINEST); para(Manipulador h : registrador.getParent().getHandlers()) { se(h instância de ConsoleHandler){ h.setLevel(Nível.FINEST); } } } |
Agora, em algum ponto do seu código, você acessa o bucket:
1 2 |
CouchbaseCluster.criar("_cluster_address_").openBucket(balde, senha); |
Você pode ver agora a conversa sobre autenticação:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
Maio 19, 2016 12:23:45 PM com.couchbase.cliente.deps.io.líquido.manipulador.registro.Gerenciador de registro logMessage FINEST: [id: 0x7af6f756, L:/127.0.0.1:51766 - R:localhost/127.0.0.1:11210] RECEBIDO: 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 PLANO | +--------+-------------------------------------------------+----------------+ Maio 19, 2016 12:23:45 PM com.couchbase.cliente.deps.io.líquido.manipulador.registro.Gerenciador de registro logMessage FINEST: [id: 0x7af6f756, L:/127.0.0.1:51766 - R:localhost/127.0.0.1:11210] ESCREVER: 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 | +--------+-------------------------------------------------+----------------+ |
Mostramos aqui apenas as etapas em que o servidor informa sobre o método de autenticação suportado e o cliente escolhe o mais forte. Nesse aperto de mão, o servidor suporta:
- SCRAM-SHA512
- SCRAM-SHA256
- SCRAM-SHA1
- CRAM-MD5 PLAIN
E o cliente escolhe a mais forte: SCRAM-SHA512
O mesmo código executado no Couchbase 4.1 produz este resultado:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Maio 20, 2016 12:05:54 AM com.couchbase.cliente.deps.io.líquido.manipulador.registro.Gerenciador de registro logMessage FINEST: [id: 0x7a2764f3, L:/192.168.56.1:52201 - R:oracle2couchbase/192.168.56.101:11210] RECEBIDO: 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 | PLANO | +--------+-------------------------------------------------+----------------+ Maio 20, 2016 12:05:54 AM com.couchbase.cliente.deps.io.líquido.manipulador.registro.Gerenciador de registro logMessage FINEST: [id: 0x7a2764f3, L:/192.168.56.1:52201 - R:oracle2couchbase/192.168.56.101:11210] ESCREVER: 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| +--------+-------------------------------------------------+----------------+ |
Aqui você pode ver como o CRAM-MD5 é selecionado.
Você também pode monitorar a autenticação detectando o tráfego da rede. Uma ótima ferramenta para essa tarefa é wireshark. Você pode obter o tráfego e filtrar por protocolo "Couchbase":
Para finalizar, você provavelmente notou como é fácil monitorar o handshake de autenticação, e é por isso que recomendamos o uso do TLS na autenticação cliente-servidor.
Dessa forma, um ataque man-in-the middle é evitado pelo fato de que a SCRAM usa autenticação mútua e o servidor deve responder a um desafio para provar que conhece o "segredo" com base na senha com hash do cliente.
Feliz autenticação!