Baseado na etapa anterior, o tópico a seguir mostra como implementar a autenticação
de cliente em um ambiente distribuído do eXtreme Scale.
Sobre Esta Tarefa
Com a autenticação de cliente ativada, um cliente é autenticado antes de conectar-se
ao servidor
eXtreme Scale.
Esta seção demonstra como a autenticação de cliente pode ser feita em um ambiente do servidor
eXtreme Scale, usando a amostra
SecureSimpleApp.java para demonstrar.
Credencial de clienteA amostra SecureSimpleApp.java usa as duas implementações de plug-in a seguir para obter credenciais de cliente:
com.ibm.websphere.objectgrid.security.plugins.builtins.UserPasswordCredential
com.ibm.websphere.objectgrid.security.plugins.builtins.UserPasswordCredentialGenerator
Para obter mais informações sobre
esses plug-ins, consulte o Programação de Autenticação de Cliente.
Autenticação do servidor
O exemplo usa uma implementação integrada do eXtreme Scale: KeyStoreLoginAuthenticator, que é para propósitos de teste e amostra (uma keystore é um registro do usuário simples e não deve ser usado para produção). Para obter mais informações, consulte o tópico sobre o plug-in do autenticador em Programação de Autenticação de Cliente.
- Em uma janela de linha de comandos, acesse o diretório wxs_home.
- Altere para o diretório wxs_home/security criado no Tutorial de Segurança do Java SE - Etapa 3.
- Crie um arquivo de configuração JAAS que impinge um método de autenticação para o servidor, o og_jaas.config. O KeyStoreLoginAuthenticator mencionado no arquivo security.xml usa um keystore usando o módulo de login do JAAS, o "KeyStoreLogin". O keystore pode ser configurado como uma opção para a classe KeyStoreLoginModule.
og_jaas.config
KeyStoreLogin{
com.ibm.websphere.objectgrid.security.plugins.builtins.KeyStoreLoginModule required
keyStoreFile="../security/sampleKS.jks" debug = true;
};
- Crie um keystore sampleKS.jks com a senha sampleKS1.
- Altere para o diretório java_home/bin e execute o keytool.
- Altere para o diretório wxs_home /security e crie dois usuários, "manager" e "cashier" com suas próprias senhas.
- Use o keytool para criar um usuário "manager" com a senha "manager1" no keystore sampleKS.jks.
keytool -genkey -v -keystore ./sampleKS.jks -storepass sampleKS1
-alias manager -keypass manager1
-dname CN=manager,O=acme,OU=OGSample -validity 10000
- Use o keytool para criar um usuário "cashier" com a senha "cashier1" no keystore sampleKS.jks.
keytool -genkey -v -keystore ./sampleKS.jks -storepass sampleKS1
-alias cashier -keypass cashier1 -dname CN=cashier,O=acme,OU=OGSample
-validity 10000
- Altere para o diretório wxs_home/properties.
- Copie o arquivo sampleClient.properties.
cp ../properties/sampleClient.properties client.properties
- No diretório wxs_home/security, salve-o como client.properties
Faça as mudanças a seguir no arquivo
client.properties:
- securityEnabled: Configurar securityEnabled como verdadeiro (valor padrão) ativa a segurança do cliente, que inclui autenticação.
- credentialAuthentication: Configure credentialAuthentication como Suportado (valor padrão), o que significa que o cliente suporta autenticação de credencial.
- transportType: Configure o transportType como TCP/IP, o que significa que nenhum SSL será usado.
- Copie o arquivo sampleServer.properties.
cp ../properties/sampleServer.properties server.properties
- No diretório wxs_home/security, salve-o como server.properties
Faça as seguintes alterações no arquivo
server.properties:
- securityEnabled: Configure o atributo securityEnabled
como true.
- transportType: Configure o atributo transportType como TCP/IP, o que
significa que nenhum SSL será utilizado.
- secureTokenManagerType: Configure o atributo secureTokenManagerType
como none para não configurar o gerenciador de tokens seguros.
- Acesse o diretório wxs_home/bin e, dependendo da plataforma, emita um dos comandos a seguir para iniciar um servidor de catálogos. É necessário emitir as opções de linha de comandos -clusterFile e -serverProps para passar nas propriedades de segurança:
![[Unix]](./icons/ngunix.gif)
startOgServer.sh catalogServer -clusterSecurityFile ../security/security.xml
-serverProps ../security/server.properties -jvmArgs
-Djava.security.auth.login.config="../security/og_jaas.config"
startOgServer.bat catalogServer -clusterSecurityFile ../security/security.xml
-serverProps ../security/server.properties -jvmArgs
-Djava.security.auth.login.config="../security/og_jaas.config"
- Inicie um servidor de contêiner chamado c0 com um dos scripts a seguir. O arquivo de propriedades de servidor é passado ao emitir o -serverProps.
![[Linux]](./icons/nglinux.gif)
startOgServer.sh c0 -objectgridFile ../xml/SimpleApp.xml
-deploymentPolicyFile ../xml/SimpleDP.xml
-catalogServiceEndPoints localhost:2809
-serverProps ../security/server.properties
-jvmArgs -Djava.security.auth.login.config="../security/og_jaas.config"
startOgServer.bat c0 -objectgridFile ../xml/SimpleApp.xml
-deploymentPolicyFile ../xml/SimpleDP.xml
-catalogServiceEndPoints localhost:2809
-serverProps ../security/server.properties
-jvmArgs -Djava.security.auth.login.config="../security/og_jaas.config"
- Após o servidor de catálogos e o servidor de contêiner terem sido
iniciados, execute a amostra sec_sample.jar da seguinte maneira:
java -classpath ../lib/objectgrid.jar;../applib/sec_sample.jar
com.ibm.websphere.objectgrid.security.sample.guide.SecureSimpleApp
../security/client.properties manager manager1
Utilize dois pontos (:) para o separador de caminho de classe em vez de usar ponto e vírgula (;), como no exemplo anterior.
Após executar a classe, o resultado é a seguinte saída:
O nome do cliente
para o ID 0001 é fName lName.
- Verifique o tamanho do mapa de "cliente" inserido na grade
"contábil", emitindo o utilitário de comando xscmd
da seguinte maneira:
![[Unix]](./icons/ngunix.gif)
xscmd.sh -c showMapSizes -g accounting -m customer -username manager -password manager1
xscmd.bat -c showMapSizes -g accounting -m customer -username manager -password manager1
- Opcional: Para parar os servidores de contêiner ou de catálogos, é possível usar o stopOgServer. Porém, é necessário fornecer um arquivo de configuração
de segurança. O arquivo de propriedades do cliente de amostra define as seguintes duas
propriedades para gerar uma credencial userID/password (manager/manager1).
credentialGeneratorClass=com.ibm.websphere.objectgrid.security.plugins.builtins.UserPasswordCredentialGenerator
credentialGeneratorProps=manager manager1
Pare o contêiner c0 com o comando a seguir.
![[Unix]](./icons/ngunix.gif)
stopOgServer.sh c0 -catalogServiceEndPoints
localhost:2809 -clientSecurityFile ..\security\client.properties
stopOgServer.bat c0 -catalogServiceEndPoints
localhost:2809 -clientSecurityFile ..\security\client.properties
Se a opção -clientSecurityFile não for fornecida, uma exceção será exibida com a seguinte mensagem.
>>
SERVER (id=39132c79, host=9.10.86.47) TRACE START:
>>
org.omg.CORBA.NO_PERMISSION: O servidor requer uma autenticação de credencial
mas não há nenhum contexto de segurança a partir do cliente. Isso geralmente acontece
quando o cliente não transmite uma credencial para o servidor.
vmcid:
0x0
código secundário: 0
completed: No
Também é possível encerrar o
servidor de catálogos usando o seguinte comando. Porém, se você desejar continuar tentando a
próxima etapa do tutorial, poderá deixar que o servidor de catálogo permaneça em execução.
![[Unix]](./icons/ngunix.gif)
stopOgServer.sh catalogServer -catalogServiceEndPoints
localhost:2809 -clientSecurityFile ..\security\client.properties
stopOgServer.bat catalogServer -catalogServiceEndPoints
localhost:2809 -clientSecurityFile ..\security\client.properties
Se você encerrar o servidor de
catálogos, a seguinte saída será exibida.
CWOBJ2512I: ObjectGrid server catalogServer
stopped
Agora, você tornou seu sistema parcialmente seguro com sucesso,
ativando a autenticação. Você configurou o servidor para conexão no
registro do usuário, configurou o cliente para fornecer credenciais
do cliente e alterou o arquivo de propriedades do cliente e o arquivo
XML do cluster para ativar autenticação.
Se você fornecer uma senha inválida, verá uma exceção que informa que o nome de usuário ou a senha não está correto.
Para obter mais detalhes sobre a autenticação do cliente, consulte Autenticação de Cliente do Aplicativo.
Próxima etapa do tutorial