quarta-feira, 16 de fevereiro de 2011

Oracle OS Remote Authentication

Normalmente os usuários de autenticação de um banco de dados não são os mesmos dos de sistema operacional. Por exemplo, quando você chega na empresa, liga sua estação de trabalho e ela pede o usuário e senha, esses dados são para que você adentre na rede da empresa. Você agora é o usuário de rede Fulano.Silva. Pode desfrutar de todos os benefícios que a rede da sua corporação oferece: e-mail, internet, IM, programas, etc.
O programa que você usa, porém, precisa acessar um banco de dados onde estão guardadas as informações que foram digitadas no dia anterior, anterior ao dia anterior e assim por diante. Esses dados são acessados por um usuário de banco que não é o Fulano.Silva, embora você ainda precise digitar FULANO.SILVA na tela de logon do programa.
Mas se seu sistema possui usuários de banco equiguais aos usuários de login na rede, você pode configurar seu banco Oracle para acessar os dados sem precisar efetuar a autenticação:

Primeiro configure os seguintes parâmetros no arquivo de inicialização do banco Oracle (initSID.ora)
remote_os_authent=TRUE
os_authent_prefix = "OPS$"

Gere um novo SPFILE:
CREATE spfile FROM pfile='initSID.ora';

Na estação de trabalho adicione a seguinte linha (ou altere) no arquivo SQLNET.ORA:
sqlnet.authentication_services = (NTS)

Conecte-se ao banco com usuário SYSTEM e altere a conta do usuário Fulano.Silva dessa forma:
ALTER USER fulano.silva IDENTIFIED EXTERNALLY;

Estamos admitindo que o usuário Fulano.Silva já existe no seu Sistema Operacional/Rede. Se Não existir, crie!

Pronto, seu programa agora não precisa mais de um arquivo de configuração indicando que usuário e senha deve ser utilizado para acessar o banco. O Oracle encarrega-se de associar o usuário do sistema operacional com a conta correspondente no banco de dados. Novamente lembrando que se, e somente se seu sistema possui contas para cada usuário individual da rede.




Normally the authentication users of a database aren't the same of the operational system. For example, when you get to the company, early in the morning, turns on your computer station and it asks your user and password, those are the necessary data to you logon to the company network. So, now you're the user system Joe.Smith. You can enjoy all the benefices that your corporation network gives you: e-mail, internet, IM, programs, etc.
However the program that you use needs to access a database where the inputted data from yesterday and the day before yesterday are stored. Those data aren't accessed by the network user Joe.Smith, but a database account, however you still need to put JOE.SMITH at your logon screen on the program.
But if your program use equal operational system and database account logon, you can configure your Oracle database to access your data without need a database authentication:

1. Set the initSID.ora parameters:
remote_os_authent=TRUE
os_authent_prefix = "OPS$"

2. Generate a new spfile
CREATE spfile FROM pfile='initorabase.ora';

3. Add the following to the sqlnet.ora
sqlnet.authentication_services = (NTS)

4. Connect as system/manager in SQL*Plus and alter the "joe.smith" user:
ALTER USER joe.smith IDENTIFIED EXTERNALLY;

We're admitting that the network/operational system user named Joe.Smith already exists. If it doesn't, so create it!

That's it, your program doesn't need anymore a configuration file telling which user and password it must use to access the database. The Oracle undertake to associate the operational system user to its database account match. Again remembering you that it will only work if, and only if your program uses individual database account for each individual network user.

Um comentário:

Locations of visitors to this page
Côcos pelo Mundo