Para corrigir problemas de segurança de senha, precisamos definir SQLNET.ALLOWED_LOGON_VERSION=12
. De acordo com o Oracle Database Net Services Reference :
Observe as seguintes implicações de definir o valor como 12: ... Releases de clientes OCI anteriores ao Oracle Database 10g e todas as versões de thin clients JDBC não podem ser autenticados no banco de dados Oracle usando autenticação baseada em senha.
Essa afirmação parece muito ruim para mim. Não quero escolher entre segurança de senha decente e o driver JDBC recomendado.
A boa notícia é que o manual pode estar errado. Posso me conectar com SQLNET.ALLOWED_LOGON_VERSION=12
um thin client JDBC. Eu tive que atualizar ojdbc.jar de 11.2.0.1.0 para Oracle 11.2.0.3.0, mas isso é esperado e também prova que a configuração está realmente afetando meu servidor.
O que está acontecendo aqui:
- O manual está errado?
- Estou lendo o manual errado?
- Está funcionando apenas no meu caso de teste simples como algum recurso não documentado, mas falhará com outras configurações?
Temos milhares de usuários com muitas configurações diferentes, não posso confiar apenas no meu teste simples. Alguém mais tem experiência com SQLNET.ALLOWED_LOGON_VERSION=12
thin clients e JDBC?
Acabei de testá-lo também e descobri que posso conectar com 11.2.0.3/11.2.0.4 thin clients JDBC sem erro, mas ao usar thin clients mais antigos como 10.2.0.4, obtenho o esperado
ORA-28040: No matching authentication protocol
.Na minha opinião, a explicação mais lógica é que a Oracle atualizou este documento várias vezes desde 2011 e a linha específica que você citou está de fato incorreta hoje. Pode ter sido correto antes de 11.0.2.3.
A Oracle não mantém um log de alterações (como você encontraria em projetos FOSS, um artigo da Wikipédia ou mesmo nas perguntas do StackExchange). No entanto, às vezes você pode ter sorte se a página foi rastreada pelo Internet Archive Wayback Machine. Acontece que este documento da Oracle era, então estamos com sorte, e eles têm instantâneos dele desde 2011, precedendo o CPUOct2012 em um ano. https://web.archive.org/web/20110715000000 */ http://docs.oracle.com/cd/E11882_01/network.112/e10835/sqlnet.htm
Curiosamente, se você olhar para a versão de dezembro de 2011 do documento acima, o parágrafo que você citou na verdade dizia (naquela época):
Parece-me que alguém da Oracle atualizou o número de 11 para 12 sem pesquisar as implicações .
Eu voto na resposta nº 1, o manual está errado.
ADENDO: Deixando de lado as críticas acima, você provavelmente deseja enviar um "Comentário do leitor" na parte inferior do documento da Oracle ou enviar um SR, ou ambos. Se você tem um relacionamento com o cliente Oracle, provavelmente está pagando muito dinheiro, então é melhor fazer uso dele e arquivar o SR. De qualquer forma, a Oracle responde que seu a$$ está coberto. gostaria muito de ver a resposta da Oracle a esta pergunta.