Migrando o Login Programático do Common Object Request Broker Architecture para o Java Authentication and Authorization Service (CORBA e JAAS)

Utilize este tópico como um exemplo de como executar o login programático utilizando APIs de login programático baseado em CORBA.

Antes de Iniciar

[AIX Solaris HP-UX Linux Windows][IBM i]Este documento descreve as APIs de login programático CORBA (Common Object Request Broker Architecture) reprovadas e as alternativas fornecidas por JAAS. O WebSphere Application Server suporta totalmente o JAAS (Java™ Authentication and Authorization Service) como APIs (Interfaces de Programação de Aplicativos) de login programático. Consulte Configurando os logins programáticos para o JAAS (Java Authentication and Authorization Service) e Desenvolvendo Logins Programáticos com o Java Authentication and Authorization Service para obter detalhes adicionais sobre o suporte a JAAS.

[z/OS]As APIs (Interfaces de Programação de Aplicativos) CORBA (Common Object Request Broker Architecture) não são suportadas no ambiente do WebSphere Application Server para z/OS. Se você tiver um aplicativo que está sendo transportado de um outro produto WebSphere Application Server para o WebSphere Application Server para z/OS, saiba que as APIs de segurança estão reprovadas na Versão 6.0.x. Se você desejar usar esses aplicativos no WebSphere Application Server for z/OS Versão 8.0, você deve migrar para o Java Authentication and Authorization Service (JAAS).

A lista a seguir inclui as APIs de login programático CORBA reprovadas.
  • [AIX Solaris HP-UX Linux Windows][z/OS]${user.install.root}/installedApps/sampleApp.ear/default_app.war/WEB-INF/classes/LoginHelper.java.
  • [AIX Solaris HP-UX Linux Windows][z/OS]${user.install.root}/installedApps/sampleApp.ear/default_app.war/WEB-INF/classes/ServerSideAuthenticator.java.
  • [IBM i]profile_root/installedApps/sampleApp.ear/default_app.war/WEB-INF/classes/ServerSideAuthenticator.java.
  • [AIX Solaris HP-UX Linux Windows][IBM i]org.omg.SecurityLevel2.Credentials. Esta API está incluída no produto, mas seu uso não é recomendado.

As APIs fornecidas no WebSphere Application Server são uma combinação de APIs JAAS padrão e uma implementação de interfaces JAAS padrão do produto.

[z/OS]As APIs suportadas fornecidas no WebSphere Application Server para z/OS são uma combinação de APIs JAAS padrão e uma implementação de interfaces JAAS padrão do produto com alguma extensão menor.

As informações a seguir são apenas um resumo; consulte a documentação de JAAS para sua plataforma, localizada em: http://www.ibm.com/developerworks/java/jdk/security/ .

  • APIs de login programático:
    • javax.security.auth.login.LoginContext
    • Interface javax.security.auth.callback.CallbackHandler: O produto WebSphere Application Server fornece a seguinte implementação da interface javax.security.auth.callback.CallbackHandler:
      com.ibm.websphere.security.auth.callback.WSCallbackHandlerImpl
      Fornece um CallbackHandler sem prompt quando o aplicativo envia dados de autenticação básica (ID do usuário, senha e região de segurança) ou dados de token para módulos de login do produto. Esta API é recomendada para login do lado do servidor.
      [AIX Solaris HP-UX Linux Windows][IBM i]com.ibm.websphere.security.auth.callback.WSGUICallbackHandlerImpl
      [AIX Solaris HP-UX Linux Windows][IBM i]Fornece um manipulador CallbackHandler de prompt de login para reunir dados de autenticação básica (ID do usuário, senha e região de segurança). Esta API é recomendada para login do lado do cliente.

      Se essa API for utilizada do lado do servidor, o servidor será bloqueado para entrada.

      com.ibm.websphere.security.auth.callback.WSStdinCallbackHandlerImpl
      Fornece um manipulador CallbackHandler de prompt de login stdin para reunir dados de autenticação básica (ID do usuário, senha e região de segurança). Essa API é recomendada para login do lado do cliente.
      Nota: Se essa API for utilizada do lado do servidor, o servidor será bloqueado para entrada.
    • javax.security.auth.callback.Callback interface:
      javax.security.auth.callback.NameCallback
      Fornecida pelo JAAS para transmitir o nome do usuário para a interface LoginModules.
      javax.security.auth.callback.PasswordCallback
      Fornecida pelo JAAS para transmitir a senha para a interface LoginModules.
      com.ibm.websphere.security.auth.callback.WSCredTokenCallbackImpl
      Fornecida pelo produto para executar um login baseado em token. Com essa API, um aplicativo pode transmitir uma matriz de bytes de token para a interface LoginModules.
    • Interface javax.security.auth.spi.LoginModule

      O WebSphere Application Server fornece uma implementação LoginModules para o login do lado do servidor e do cliente. Consulte Configurando os logins programáticos para o JAAS (Java Authentication and Authorization Service) para obter detalhes.

  • javax.security.Subject:
    [AIX Solaris HP-UX Linux Windows][IBM i]com.ibm.websphere.security.auth.WSSubject
    [AIX Solaris HP-UX Linux Windows][IBM i]Uma extensão fornecida pelo produto para chamar recursos J2EE remotos utilizando as credenciais no javax.security.Subject
    [z/OS]com.ibm.websphere.security.auth.WSSubject
    [z/OS]Uma extensão fornecida pelo produto para chamar recursos J2EE remotos utilizando as credenciais no javax.security.Subject

    Um aplicativo deve chamar o método WSSubject.doAs para o acesso de recursos J2EE utilizando o assunto que é gerado por uma chamada explícita de um módulo de login do WebSphere Application Server.

    com.ibm.websphere.security.cred.WSCredential
    Após um login do JAAS bem-sucedido com as interfaces LoginModules do WebSphere Application Server, uma credencial com.ibm.websphere.security.cred.WSCredential é criada e armazenada no Subject.
    com.ibm.websphere.security.auth.WSPrincipal
    Um proprietário autenticado que é criado e armazenado em um Subject autenticado pela interface LoginModules do WebSphere Application Server.

Procedimento

  1. [AIX Solaris HP-UX Linux Windows][IBM i]Utilize o seguinte como um exemplo sobre como executar o login programático por meio das APIs de login programático baseadas em CORBA: As APIs programáticas baseadas em CORBA são substituídas pelo login de JAAS.
    Nota: A API (Interface de Programação de Aplicativos) LoginHelper utilizada no exemplo a seguir está reprovada no WebSphere Application Server Versão 9.0 e será removida em um release futuro. Recomenda-se que utilize as APIs de login programático JAAS que são mostradas na próxima etapa.
    public class TestClient {
    ...
    private void performLogin() {
    // Obter o ID e a senha do usuário.
    String userid = customGetUserid();
    String password = customGetPassword();
    
    // Crie um novo contexto de segurança para conter os dados autenticados.
    LoginHelper loginHelper = new LoginHelper();
    try {
    // Forneça o ID e a senha do usuário para autenticação.
    org.omg.SecurityLevel2.Credentials credentials = 
    loginHelper.login(userid, password);
    
    // Utilize as novas credenciais para todas as
                    // invocações futuras.
    loginHelper.setInvocationCredentials(credentials);
    // Recupere o nome de usuário das credenciais
    // para que o usuário saiba se o início de sessão obteve sucesso.
    
    String username = loginHelper.getUserName(credentials);
    System.out.println("Contexto de segurança definido para o usuário: "+username);
    } catch (org.omg.SecurityLevel2.LoginFailed e) {
    // Tratar da exceção LoginFailed.
    }
    }
    ...
    }
  2. Utilize o exemplo a seguir para migrar as APIs de login programático baseadas em CORBA para as APIs de login programático JAAS.

    O exemplo a seguir assume que o código do aplicativo é concedido para as permissões de segurança Java 2 necessárias. Para obter mais informações, consulte Configurando os logins programáticos para o JAAS (Java Authentication and Authorization Service), Protegendo Recursos do Sistema e APIs (Segurança Java 2) para Desenvolver Aplicativos e a documentação JAAS que se encontra em http://www.ibm.com/developerworks/java/jdk/security/.

    public class TestClient {
    ...
    private void performLogin() {
    // Criar um novo JAAS LoginContext.
    javax.security.auth.login.LoginContext lc = null;
    
    try {
    // Utilize o prompt da GUI para reunir os dados basicAuth.
    lc = new javax.security.auth.login.LoginContext("WSLogin",
    new com.ibm.websphere.security.auth.callback.WSGUICallbackHandlerImpl());
    
    // crie um LoginContext e especifique uma implementação CallbackHandler
    // A implementação CallbackHandler determina como os dados de autenticação são coletados
    // nesse caso, a data de autenticação é coletada pelo prompt de login
    //   e transmitida ao mecanismo de autenticação implementado pelo LoginModule.
    } catch (javax.security.auth.login.LoginException e) {
    System.err.println("ERROR: failed to instantiate a LoginContext and the exception: " 
    + e.getMessage());
    e.printStackTrace();
    
    // pode ser que javax.security.auth.AuthPermission "createLoginContext" não tenha sido concedida
    //   ao aplicativo ou a Configuração do Login de JAAS não está definida.
    }
    
    if (lc != null)
    try {
    lc.login();  // efetuar login
    javax.security.auth.Subject s = lc.getSubject();
    // obtenha o elemento autenticado
    
    // Chame os recursos do J2EE utilizando o elemento autenticado
    com.ibm.websphere.security.auth.WSSubject.doAs(s,
    new java.security.PrivilegedAction() {
    public Object run() {
    try {
    bankAccount.deposit(100.00);  // em que bankAccount é um EJB protegido
    } catch(Exception e) {
    System.out.println("ERROR: error while accessing EJB resource, exception: " 
    + e.getMessage());
    e.printStackTrace();
    }
    return null;
    }
    }
    );
    
    // Recupere o nome do principal a partir do Elemento
    // para que possamos informar o usuário de que o login foi bem-sucedido,
    // deveria ser somente um WSPrincipal.
    java.util.Set ps = 
    s.getPrincipals(com.ibm.websphere.security.auth.WSPrincipal.class);
    java.util.Iterator it = ps.iterator();
    while (it.hasNext()) {
    com.ibm.websphere.security.auth.WSPrincipal p =
    (com.ibm.websphere.security.auth.WSPrincipal) it.next();
    System.out.println("Principal: " + p.getName());
    }
    } catch (javax.security.auth.login.LoginException e) {
    System.err.println("ERROR: login failed with exception: " + e.getMessage());
    e.printStackTrace();
    
    // falha de login, pode ser necessário fornecer lógica de relogin
    }
    }
    ...
    }

Ícone que indica o tipo de tópico Tópico de Tarefa



Ícone de registro de data e hora Última atualização: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tsec_migratecorba
Nome do arquivo: tsec_migratecorba.html