Tutorial de Segurança do Java SE - Etapa 4

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.

Antes de Iniciar

Certifique-se de ter concluído o Tutorial de Segurança do Java SE - Etapa 3. Você precisa ter criado e confirmado a amostra SecureSimpleApp.java em um arquivo sec_sample.jar e criado um arquivo de configuração denominadosecurity.xml.

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 cliente

A 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.

Procedimento

  1. Em uma janela de linha de comandos, acesse o diretório wxs_home.
  2. Altere para o diretório wxs_home/security criado no Tutorial de Segurança do Java SE - Etapa 3.
  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;
    };
  4. Crie um keystore sampleKS.jks com a senha sampleKS1.
  5. Altere para o diretório java_home/bin e execute o keytool.
  6. Altere para o diretório wxs_home /security e crie dois usuários, "manager" e "cashier" com suas próprias senhas.
    1. 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
    2. 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
  7. Altere para o diretório wxs_home/properties.
  8. Copie o arquivo sampleClient.properties.
    cp ../properties/sampleClient.properties client.properties
  9. No diretório wxs_home/security, salve-o como client.properties
    Faça as mudanças a seguir no arquivo client.properties:
    1. securityEnabled: Configurar securityEnabled como verdadeiro (valor padrão) ativa a segurança do cliente, que inclui autenticação.
    2. credentialAuthentication: Configure credentialAuthentication como Suportado (valor padrão), o que significa que o cliente suporta autenticação de credencial.
    3. transportType: Configure o transportType como TCP/IP, o que significa que nenhum SSL será usado.
  10. Copie o arquivo sampleServer.properties.
    cp ../properties/sampleServer.properties server.properties
  11. No diretório wxs_home/security, salve-o como server.properties
    Faça as seguintes alterações no arquivo server.properties:
    1. securityEnabled: Configure o atributo securityEnabled como true.
    2. transportType: Configure o atributo transportType como TCP/IP, o que significa que nenhum SSL será utilizado.
    3. secureTokenManagerType: Configure o atributo secureTokenManagerType como none para não configurar o gerenciador de tokens seguros.
  12. 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][Linux]
      startOgServer.sh catalogServer -clusterSecurityFile ../security/security.xml 
      -serverProps ../security/server.properties -jvmArgs 
      -Djava.security.auth.login.config="../security/og_jaas.config"
    • [Windows]
      startOgServer.bat catalogServer -clusterSecurityFile ../security/security.xml 
      -serverProps ../security/server.properties -jvmArgs 
      -Djava.security.auth.login.config="../security/og_jaas.config" 
  13. 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][Unix]
        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"
      • [Windows]
        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"
  14. 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

    [Linux] 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.

  15. Verifique o tamanho do mapa de "cliente" inserido na grade "contábil", emitindo o utilitário de comando xscmd da seguinte maneira:
    • [Unix][Linux] xscmd.sh -c showMapSizes -g accounting -m customer -username manager -password manager1
    • [Windows] xscmd.bat -c showMapSizes -g accounting -m customer -username manager -password manager1
  16. 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][Linux] stopOgServer.sh c0 -catalogServiceEndPoints localhost:2809 -clientSecurityFile ..\security\client.properties
    • [Windows] 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][Linux] stopOgServer.sh catalogServer -catalogServiceEndPoints localhost:2809 -clientSecurityFile ..\security\client.properties
    • [Windows] 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