Como as pessoas fazem o cliente Java SPNEGO funcionar no Windows?

Para fazer a autenticação HTTP SPNEGO do lado do cliente com o Java no Windows, você precisa definir a chave do Registro do Windowsallowtgtsessionkey. Isso está bem documentado. O que eu não entendo é como as pessoas contornam isso? A maioria dos sites corporativos nunca aceitaria alterar essa chave do Registro no Windows por causa de um único software. Pense também no incômodo se isso precisar ser alterado em todas as estações de trabalho da organização. Mas isso é apenas teoria, porque até agora não consegui convencer nenhum de nossos clientes a alterar essa chave de registro.

Eu não os culpo. A maioria dos administradores corporativos veria isso como umrelaxante a segurança e, portanto, objetará.

Eu li isso:Existe uma maneira em Java ou um utilitário de linha de comando para obter um tíquete Kerberos para um serviço usando a API SSPI nativa?

mas agora é um pouco antigo.

Então, eu realmente não entendo como as pessoas podem fazer com que o Windows + Java Client + Kerberos funcionem em qualquer coisa além de ambientes universitários, usuários domésticos e afins.

A pergunta que recebo dos administradores corporativos é "por que precisamos definir essa chave de registro quando aplicativos como o IE e o Firefox não têm problemas ao executar o SPNEGO?"sem definindo esta chave? ". Bem, eu sei qual é a resposta. É porque (mais provável) que aplicativos como IE e Firefox são baseados na API GSS nativa do Windows (SSPI) enquanto o Java da Sun usa sua própria implementação.

Estou assumindo que usar algo comoWAFFLE resolveria o problema, mas eu preferiria uma solução Java pura. Eu também estou supondo que não ajudará a usar soluções baseadas em Java, como Spring Security ou Apache HttpClient, pois todos eles estarão sofrendo com esse problema.

Qualquer ajuda ou ponteiros seria muito apreciada.

UPDATE1:

Eu descobri que há umRFE por isso no banco de dados de bugs da Oracle. Há também umpatch enviado sobre o assunto por um funcionário da Oracle ediscussões na lista de discussão do JDK sobre esse recurso. Não me faz muito mais sábio do que até onde eu posso entender, isso não está disponível no Java 7 atual, nem mesmo como experimental. Certo?

UPDATE2:

A questão é agoravivo de novo na lista de discussão do OpenJDK Security Dev.

questionAnswers(2)

yourAnswerToTheQuestion