O Tivoli Directory Server é um servidor de diretório baseado em LDAP V3 usado para criar serviços de diretórios. Um serviço de diretório é um aplicativo que armazena, recupera e modifica informações sobre recursos de rede. O LDAP, um protocolo leve para acessar serviços de diretório, é baseado em entradas. Uma entrada é um conjunto de atributos identificado por um nome distinto (DN) globalmente exclusivo. Cada atributo de entrada de diretório tem um tipo e um ou mais valores. Neste artigo, aprenda a usar a biblioteca Net::LDAP para criar um serviço de diretório LDAP no servidor de diretório Tivoli Directory Server V6.0. Percorra um exemplo para criar um aplicativo Ruby on Rails usando o Tivoli Directory Server V6.0 como um banco de dados de backend.
Pré-requisitos e requisitos do sistema
É necessário ter um conhecimento básico do LDAP e das linguagens de script. Este artigo se destina principalmente àqueles que sabem um pouco sobre o LDAP e necessitam gravar um serviço de diretório usando a linguagem de script Ruby. Para executar os exemplos neste artigo, o Tivoli Directory Server V6.0 deve estar instalado. Faça o download do aplicativo LDAP de exemplo para este artigo.
Ruby on Rails é uma estrutura da Web de software livre para desenvolvimento de aplicativos da Web baseados em um banco de dados. O Ruby on Rails fornece facilidade de desenvolvimento, suporte para Ajax e uma estrutura Model-View-Controller (MVC). O Ruby é uma linguagem interpretada de script orientada a objetos. Interpretativo sugere que um aplicativo Ruby é executado sem antes compilar o aplicativo. As variáveis em Ruby não têm um tipo; uma variável Ruby pode conter dados de qualquer tipo. As variáveis em Ruby não precisam de declarações de variáveis. O Ruby, sendo uma linguagem orientada a objetos, apresenta recursos como classes, métodos e heranças.
Para desenvolver um aplicativo Ruby on Rails, são necessários um servidor da Web e um banco de dados. O Rails inclui um servidor da Web incorporado denominado WEBrick. O Rails é configurado com o banco de dados MySQL por padrão. Rails é uma combinação dos seguintes subprojetos.
- Modelo — Registro Ativo
- Modelos modelam os objetos de negócios de modelo em um aplicativo MVC. No Rails, os modelos normalmente se baseiam no padrão Registro Ativo, que fornece o object-relation mapping (ORM) entre objetos de negócios e um banco de dados.
- Visualização — Visualização de Ação
- As visualizações são as interfaces com o usuário de um aplicativo da Web do Ruby on Rails. Uma visualização é renderizada usando o RHTML ou o RXML. O RHTML é o HTML incorporado no Ruby e o RXML é o XML gerado pelo Ruby. Uma visualização contém links para métodos (ações) definidos no controlador com os quais as ações do controlador são chamadas.
- Controlador — Controlador de Ações
- O controlador configura as variáveis de instância necessárias para uma visualização e renderiza uma visualização.
O controlador é uma classe que estende a classe
ApplicationControllere consiste em ações (métodos). Um controlador integra o modelo à visualização usando métodos públicos (ações).
O modelo fornece os dados, o controlador fornece a lógica de negócios para processar os dados e a visualização apresenta os dados.
Um aplicativo MVC Rails é composto pelos seguintes arquivos de Ruby, RHTML e configuração:
- Modelos de visualização (arquivos .rhtml) no diretório app/views
- Classe de modelo no diretório app/models
- Classe de controlador no diretório app/controllers
- Arquivo de Configuração de Banco de Dados (database.yml) no diretório de configuração
O Ruby on Rails fornece os comandos para geração de scripts do modelo e do controlador. Alguns dos comandos do Ruby on Rails comumente usados são mostrados abaixo.
Tabela 1. Comandos comuns do Ruby on Rails
| Comando (variáveis em itálico) | Descrição |
|---|---|
rails applicationname | Cria o aplicativo Rails do nome especificado |
ruby script/server | Inicia o servidor da Web do Ruby Rails WEBrick em http://localhost:3000 |
ruby script/generate model modelname | Gera uma classe de modelo do nome de modelo especificado |
ruby script/generate controller controllername ... | Gera uma classe de controlador do nome especificado e as ações do controlador (se especificadas); também são gerados modelos de visualização (arquivos .rhtml) correspondentes às ações do controlador |
O Ruby on Rails fornece várias bibliotecas do Ruby para desenvolvimento de aplicativos LDAP. Por exemplo:
- O Ruby/ActiveLDAP apresenta uma interface orientada a objetos para o LDAP com as entradas do LDAP mapeadas aos objetos do Ruby.
- A Net::LDAP é uma biblioteca do Ruby de suporte para LDAP e suporta os recursos do cliente LDAP.
Neste artigo, aprenda a usar a biblioteca Net::LDAP para criar um serviço de diretório no servidor de diretório Tivoli Directory Server V6.0. Você incluirá, modificará, procurará e excluirá uma entrada de diretório com a biblioteca Net::LDAP Ruby
Esta seção aborda como instalar o Ruby, a estrutura do Rails e o RubyGems. O RubyGems é o gerenciador de pacotes padrão do Ruby usado com os aplicativos e bibliotecas do Ruby. Você também instalará a Net::LDAP, a biblioteca da classe do Ruby para LDAP. O aplicativo de exemplo usa a plataforma Windows®. A ordem de instalação é instalar, primeiro, o Ruby, em seguida, o Rails e, por fim, a NET::LDAP.
Para instalar a última versão do Ruby e do RubyGems:
- Faça download do aplicativo Ruby Windows Installer. O Ruby V1.8.5-21 foi usado para desenvolver o aplicativo de serviço de diretório do exemplo neste artigo.
- Dê um clique duplo no aplicativo ruby185-21.exe. O Assistente de Configuração do Ruby será iniciado.
- Clique em Avançar e aceite o contrato de licença. Selecione os componentes padrão a serem instalados, inclusive o gerenciador de pacotes RubyGems, e clique em Avançar.
- Especifique o diretório de instalação do Ruby (o padrão é c:/ruby) e clique em Avançar.
- Clique em Instalar. O Ruby e o RubyGems serão instalados.
Instale o Rails:
- Vá para o diretório (
Cd) c:/ruby onde o Ruby está instalado. - Execute o comando a seguir para instalar o Rails e suas dependências:
c:/ruby>gem install rails --include-dependencies.
Instale o ruby-net-ldap gem com:
C:/ruby>gem install ruby-net-ldap |
A classe Net::LDAP fornece uma implementação do Ruby do protocolo cliente LDAP. A classe Net::LDAP é usada pelas operações ligar, procurar, incluir, modificar, excluir e renomear. Os métodos da classe Net::LDAP estão descritos na Tabela 2.
Tabela 2. Métodos da classe Net::LDAP
| Método | Descrição |
|---|---|
add(args) | Inclui uma nova entrada de diretório. Os argumentos são:
|
add_attribute(dn, atributo, valor) | Inclui um valor em um atributo. Se o atributo especificado ainda não está definido, cria um novo atributo. |
authenticate(nome_de_usuário, senha) | Especifica as credenciais de autenticação para o servidor do LDAP. |
bind(auth=@auth) | Conecta o servidor do LDAP e solicita autenticação baseada nas credenciais de autenticação especificadas no método aberto ou novo método. Retorna true quando a conexão com o servidor do LDAP é estabelecida. |
bind_as(args={}) | Liga-se como um usuário específico. |
delete(args) | Exclui uma entrada de diretório de um DN especificado, aliás, o único argumento suportado. |
delete_attribute(dn, atributo) | Exclui um atributo e todos os seus valores. O parâmetro dn especifica a entrada de diretório e atributo refere-se ao atributo a ser excluído. |
get_operation_result() | Retorna o código de resultado e mensagem para as operações ligar, procurar, incluir, modificar, renomear e excluir. |
modify(args) | Modifica os valores dos atributos para uma entrada de diretório específica.
Usa os seguintes argumentos como um hash:
|
new(args = {}) | Cria um objeto do tipo Net::LDAP, mas não abre uma conexão com o servidor. Os argumentos possíveis são:
|
Nesta seção, você criará um aplicativo Rails para criar um serviço de diretório com a biblioteca Net::LDAP Ruby.
Use o comando rails para criar um aplicativo denominado
netldap:
c:/ruby>rails netldap |
Um aplicativo Rails é criado apresentando uma estrutura de diretórios completa. Você executará o aplicativo Net::LDAP Ruby on Rails como um script de controlador, com as ações do controlador, com o objetivo de criar, modificar, procurar e excluir uma entrada de diretório. Criará também os modelos de visualização RHTML correspondentes a cada ação do controlador a fim de inserir dados para as entradas de diretório.
Crie um script de controlador denominado directory composto pelas ações de controlador
add_entry, modify_entry,
search_entry e delete_entry:
C:/ruby/netldap>ruby script/generate controller directory add_entry modify_entry search_entry delete_entry |
O script directory_controller.rb foi criado no diretório
controllers. O script é composto pelas ações do controlador add_entry, modify_entry, search_entry e delete_entry: Os modelos de visualização add_entry.rhtml, modify_entry.rhtml, search_entry.rhtml, e delete_entry.rhtml são criados na pasta views.
Nas seções a seguir, você modificará as ações do controlador e os modelos de visualização a fim de incluir, modificar, procurar e excluir uma entrada de diretório.
Criando uma entrada de diretório
A próxima etapa é criar uma entrada de diretório no Tivoli Directory Server. Uma entrada de
diretório é composta pelos atributos e seus valores. O DN de uma entrada de diretório
representa seu nome distinto. Um DN é composto pelo nome distinto relativo e pelo DN base.
Por exemplo, crie uma entrada de diretório no DN raiz/base
cn=localhost.
Inicie a instância do Tivoli Directory Server caso ela não esteja ainda iniciada.
Cada entrada de diretório é identificada por um atributo dn. Os atributos
objectClass especificam o tipo de dados e os atributos obrigatórios e opcionais
em uma entrada. As classes de objeto formam uma hierarquia de classes; algumas das classes de objetos comumente
usadas são top, organization e organizationalPerson.
Todas as classes de objetos são subclasses da classe top.
Você criará um serviço de diretório com as classes de objeto top, person e organizationalPerson:
-
topnão tem nenhum atributo obrigatório. -
persontem os atributos obrigatórioscnesn. -
organizationalPersonnão tem nenhum atributo obrigatório. Alguns atributos que podem ser especificados em uma entrada de diretório da classe de objetoorganizationalPersonsão title e telephoneNumber.
Modifique o modelo de visualização add_entry.rhtml para inserir
dados para a entrada de diretório. Defina um formulário com o método form_tag da classe FormTagHelper. Defina um campo no formulário com o método text_field((object_name, method, options = {}). O parâmetro object do método representa um objeto do modelo de formulário. O parâmetro method representa um campo do formulário como um atributo do objeto form. Por exemplo, o campo de texto a seguir:
text_field("directory_entry", "title", "size" => 20)
|
converte para HTML o campo de texto do formulário:
<input type="text" id="directory_entry_title" name="directory_entry[title]" size="20"
value="#{@directory_entry.title}" />
|
Inclui os campos de texto para nome, sobrenome, título, número de telefone, departamento e número de fax em add_entry.rhtml.
| Campo de texto | Atributo |
|---|---|
| Nome | gn |
| Sobrenome | sn |
| Título | title |
| Número de telefone | telephoneNumber |
| Departamento | physicalDeliveryOfficeName |
| Número de FAX | facsimileTelephoneNumber |
A listagem 1 ilustra a add_entry.rhtml.
Listagem 1. add_entry.rhtml
<html>
<body>
<div>
<table border='0' cellspacing='0' cellpadding='5'>
<tr>
<caption>
Add Directory Entry
</caption>
</tr>
<!-- start_form_tag -->
<%= form_tag :action => "add_entry" %>
<tr>
<td>First Name*</td>
<td><%= text_field(:add_entry, :gn) %></td>
</tr><tr>
<td>Last Name*</td>
<td><%= text_field(:add_entry, :sn) %></td>
</tr>
<tr>
<td>Title</td>
<td><%= text_field(:add_entry, :title) %></td>
</tr><tr>
<td>Telephone Number</td>
<td><%= text_field(:add_entry, :telephoneNumber) %></td>
</tr>
<tr>
<td>Department</td>
<td><%= text_field(:add_entry, :physicalDeliveryOfficeName) %></td>
</tr>
<tr>
<td>Fax Number</td>
<td><%= text_field(:add_entry, :facsimileTelephoneNumber) %></td>
</tr>
<tr>
<td><input type="submit" value="Submit"></td>
</tr>
<%= end_form_tag %>
</table>
</div>
* indicates a required field.
</body>
</html>
|
Modifique a ação de controlador add_entry e recupere os valores dos parâmetros. Recupere o nome (:gn) e sobrenome (:sn), e defina uma variável cn.
values = params[:add_entry]
gn=values[:gn]
sn= values[:sn]
cn=gn+sn
|
Defina o nome distinto da entrada de diretório, dn, composto pelo rdn e pelo DN base.
dn="cn="+cn+",cn=localhost" |
Recupere valores de outros campos do formulário.
title=values[:title] telephoneNumber=values[:telephoneNumber] physicalDeliveryOfficeName=values[:physicalDeliveryOfficeName] facsimileTelephoneNumber=values[:facsimileTelephoneNumber] |
Defina uma variável, attr, composta por diferentes atributos da entrada de diretório.
attr = {
:cn => cn,
:objectclass => ['top', 'person', 'organizationalPerson'],
:sn => sn,
:title => title,
:telephoneNumber => telephoneNumber,
:physicalDeliveryOfficeName => physicalDeliveryOfficeName,
:facsimileTelephoneNumber => facsimileTelephoneNumber
}
|
Abra uma conexão ao Tivoli Directory Server e inclua a entrada de diretório para o servidor usando o método add().
Net::LDAP.open( :host => 'localhost', :port => 389,:base =>
'cn=localhost', :auth => { :method => :simple, :username => 'cn=root', |
Crie uma entrada de diretório com o modelo add_entry.rhtml. Inicie o servidor WEBrick com o seguinte comando:
C:/ruby/netldap>ruby script/server |
Chame o modelo de visualização add_entry.rhtml com a URL http://localhost:3000/directory/add_entry.rhtml. Especifique os valores dos diferentes atributos e clique em Submeter, conforme mostrado a seguir.
Figura 1. Incluindo uma entrada de diretório
Uma entrada é criada no diretório cn=localhost na instância do Tivoli
Directory Server. Selecione a entrada de diretório cn=localhost, na Web Administration Tool, e clique
em Expandir, como ilustrado abaixo.
Figura 2. Listando as entradas de diretório para
cn=localhost
O diretório incluído usando o Ruby on Rails é listado nas entradas do diretório
cn=localhost. Para listar os atributos da entrada de diretório, selecione a entrada e clique em Editar atributos.
Figura 3. Listando os atributos da entrada de diretório incluída
Os atributos da entrada de diretório incluídos são exibidos.
Figura 4. Exibindo os atributos da entrada de diretório incluída
Modificando uma entrada de diretório
Nesta seção, você modificará uma entrada de diretório. Os dados a serem modificados são
inseridos em modify_entry.rhtml. Assim como na inclusão da entrada, inclua um formulário
no modelo de visualização modify_entry.rhtml com o método form_tag da
classe FormTagHelper. Inclua os campos do formulário com o método text_field da classe FormHelper. A
listagem 2 ilustra o modelo de visualização modify_entry.rhtml.
Listagem 2. modify_entry.rhtml
<html>
<body>
<div>
<table border='0' cellspacing='0' cellpadding='5'>
<tr>
<caption>
Modify Directory Entry
</caption>
</tr>
<!-- start_form_tag -->
<%= form_tag :action => "modify_entry" %>
<tr>
<td>First Name*</td>
<td><%= text_field(:modify_entry, :gn) %></td>
</tr><tr>
<td>Last Name*</td>
<td><%= text_field(:modify_entry, :sn) %></td>
</tr>
<tr>
<td>Title</td>
<td><%= text_field(:modify_entry, :title) %></td>
</tr><tr>
<td>Telephone Number</td>
<td><%= text_field(:modify_entry, :telephoneNumber) %></td>
</tr>
<tr>
<td>Department</td>
<td><%= text_field(:modify_entry, :physicalDeliveryOfficeName) %></td>
</tr>
<tr>
<td>Fax Number</td>
<td><%= text_field(:modify_entry, :facsimileTelephoneNumber) %></td>
</tr>
<tr>
<td><input type="submit" value="Submit"></td>
</tr>
<%= end_form_tag %>
</table>
</div>
* indicates a required field.
</body>
</html>
|
Quando o modelo modify_entry.rhtml for submetido, a ação modify_entry do controlador directory será chamada. Modifique a ação de controlador modify_entry.
Recupere os valores dos campos do formulário :gn e :sn, e defina uma variável cn.
values = params[:modify_entry]
gn=values[:gn]
sn= values[:sn]
cn=gn+sn
|
Uma entrada de diretório é identificada com um nome distinto. Defina o DN da entrada de diretório a ser modificada.
dn="cn="+cn+",cn=localhost" |
Recupere valores dos outros campos do formulário.
title=values[:title] telephoneNumber=values[:telephoneNumber] physicalDeliveryOfficeName=values[:physicalDeliveryOfficeName] facsimileTelephoneNumber=values[:facsimileTelephoneNumber] |
Abra uma conexão com o Tivoli Directory Server e substitua os valores do atributo com o método replace_attribute. Por exemplo, o atributo :title é substituído como segue:
Net::LDAP.open( :host => 'localhost', :port => 389,:base =>
'cn=localhost', :auth => { :method => :simple, :username => 'cn=root', |
Uma entrada de diretório é modificada a partir do modelo de visualização modify_entry.rhtml. Inicie o servidor da Web WEBrick e chame o modelo de visualização modify_entry.rhtml com a URL http://localhost:3000/directory/modify_entry.rhtml. Especifique a entrada de diretório a ser modificada e os atributos modificados. Clique em Submeter, como ilustrado a seguir.
Figura 5. Modificando uma entrada de diretório
A entrada de diretório é modificada como mostrada na Web Administration Tool.
Figura 6. Entrada de diretório modificada
Esta seção aborda como procurar uma entrada de diretório. Você exibirá o resultado da procura
de diretório na mesma página em que os dados da entrada foram inseridos, usando a técnica Ajax Web.
A técnica Ajax Web é implementada pela biblioteca de protótipos. A biblioteca de protótipos inclui a
classe PrototypeHelper para a criação de um formulário que possa ser atualizado assincronamente usando o Ajax. Inclua a biblioteca de protótipos no modelo de visualização search_entry.rhtml.
<%= javascript_include_tag "prototype" %> |
Inclua um formulário submetido usando o Ajax com o método form_remote_tag da classe PrototypeHelper. A opção :update
de form_remote_tag especifica o elemento do formulário a ser atualizado pela resposta do
servidor. A opção :url especifica a URL à qual o formulário será submetido e o parâmetro :action especifica a ação de controlador.
<%=form_remote_tag(:update=>"directory_entry",
:url=>{:action=>:search_entry}) %>
<% end_form_tag %>
|
Especifique os campos de inserção da entrada de diretório usando text_field_tag da classe FormTagHelper. O elemento do formulário a ser atualizado será especificado como um div.
<div id="directory_entry"></div> |
O modelo de visualização search_entry.rhtml é ilustrado na Listagem 3.
Listing 3. search_entry.rhtml
<html><head>
<title></title>
<%= javascript_include_tag "prototype" %>
</head>
<body>
<caption>
Search Directory Entry
</caption>
<%=form_remote_tag(:update=>"directory_entry",
:url=>{:action=>:search_entry}) %>
<table>
<tr>
<label>First Name*</label>
<%=text_field_tag:firstName %></tr>
<tr><label>Last Name</label>
<%=text_field_tag:lastName %></tr>
<%=submit_tag "Search" %>
</table>
<caption>
<b> Directory Entry Table</b>
</caption>
<div id="directory_entry"></div>
<% end_form_tag %>
* indicates a required field.
</body>
</html>
|
Quando o formulário search_entry.rhtml for submetido, a ação search_entry do controlador
de diretório será chamada. Modifique a ação search_entry. Recupere os valores dos campos
:gn e :sn e defina o DN base da entrada de diretório para procura.
gn=values[:gn] sn= values[:sn] cn=gn+sn treebase= "cn="+cn+",cn=localhost" |
Especifique os atributos da entrada de diretório a ser recuperada.
attrs = ["cn", "sn","title", "telephoneNumber","physicalDeliveryOfficeName", "facsimileTelephoneNumber"] |
Abra uma conexão com o Tivoli Directory Server e procure pela entrada de diretório especificada usando o método search da classe Net::LDAP.
Net::LDAP.open( :host => 'localhost', :port => 389,:base =>
'cn=localhost', :auth => { :method => :simple, :username =>
'cn=root',
|
O método search retorna um conjunto de resultados. Faça uma iteração sobre o
conjunto de resultados e crie uma tabela HTML para enviar uma resposta ao modelo de visualização search_entry.rhtml. Por exemplo, uma linha para o atributo cn é adicionada à
tabela.
directoryEntry+="<tr>"
directoryEntry+="<td>cn</td>"
directoryEntry+="<td>"+"#{directory.cn}"+"</td>"
directoryEntry+="</tr>"
|
Chame o modelo de visualização search_entry.rhtml com a URL http://localhost:3000/directory/search_entry.rhtml para procurar uma entrada de diretório. Especifique os atributos :gn e :sn, que formam o rdn de uma entrada de diretório,e clique em Procurar.
Figura 7. Procurando uma entrada de diretório
Os atributos da entrada de diretório são listados.
Figura 8. Resultado da procura da entrada de diretório
Excluindo uma entrada de diretório
Nesta seção, você excluirá uma entrada de diretório. Uma entrada de diretório é identificada por um DN, composto
pelo rdn e pelo DN base. O RDN da entrada de diretório a ser modificada é especificado
no modelo de visualização delete_entry.rhtml. O método form_tag é usado para criar um formulário e a tag text_field, para criar um campo de texto
no formulário. O modelo de visualização delete_entry.rhtml, composto pelos campos de entrada para nome e sobrenome, são ilustrados
a seguir.
Listagem 4. delete_entry.rhtml
<html>
<body>
<div>
<table border='0' cellspacing='0' cellpadding='5'>
<tr>
<caption>
Delete Entry
</caption>
</tr>
<!-- start_form_tag -->
<%= form_tag :action => "delete_entry" %>
<tr>
<td>First Name*</td>
<td><%= text_field(:delete_entry, :gn) %></td>
</tr><tr>
<td>Last Name*</td>
<td><%= text_field(:delete_entry, :sn) %></td>
</tr><tr>
<td><input type="submit" value="Submit"></td>
</tr>
<%= end_form_tag %>
</table>
</div>
* indicates a required field.
</body>
</html>
|
Quando o formulário delete_entry.rhtml for submetido, a ação delete_entry do controlador directory será chamada. A ação de controlador delete_entry recupera os valores dos campos do formulário e cria um DN da entrada de diretório a ser excluída.
values = params[:delete_entry]
gn=values[:gn]
sn= values[:sn]
cn=gn+sn
dn="cn="+cn+",cn=localhost"
|
Abra uma conexão com o servidor de diretório e exclua a entrada usando o método delete da classe Net::LDAP.
Net::LDAP.open( :host => 'localhost', :port => 389,
:base => 'cn=localhost', :auth => { :method => :simple, :username =>
'cn=root', :password => 'tivoli' } ) do |ldap|
ldap.delete :dn => dn
end
|
Para excluir uma entrada de diretório, chame o modelo de visualização delete_entry.rhtml
usando a URL http://localhost:3000/directory/delete_entry.rhtml. Especifique os atributos :gn (nome) e :sn (sobrenome)
da entrada de diretório a ser excluída e clique em Submeter.
Figura 9. Excluindo uma entrada de diretório
A entrada de diretório é excluída como mostrada na Web Administration Tool.
Figura 10. Web Administration Tool com a entrada de diretório excluída
O script do controlador directory_controller.rb é ilustrado a seguir.
Listagem 5. directory_controller.rb
require 'net/ldap'
class DirectoryController < ApplicationController
def add_entry
values = params[:add_entry]
gn=values[:gn]
sn= values[:sn]
cn=gn+sn
dn="cn="+cn+",cn=localhost"
title=values[:title]
telephoneNumber=values[:telephoneNumber]
physicalDeliveryOfficeName=values[:physicalDeliveryOfficeName]
facsimileTelephoneNumber=values[:facsimileTelephoneNumber]
attr = {
:cn => cn,
:objectclass => ['top', 'person', 'organizationalPerson'],
:sn => sn,
:title => title,
:telephoneNumber => telephoneNumber,
:physicalDeliveryOfficeName => physicalDeliveryOfficeName,
:facsimileTelephoneNumber => facsimileTelephoneNumber
}
Net::LDAP.open( :host => 'localhost', :port => 389,:base =>
'cn=localhost', :auth => { :method => :simple, :username => 'cn=root',
|
Neste artigo, você instalou o Ruby on Rails e a Net::LDAP Ruby gem. Aprendeu a criar uma entrada de diretório no Tivoli Directory Server V6.0 e a modificar, procurar e excluí-la, com a linguagem de script Ruby.
O Ruby é comparável ao PHP, a linguagem de script mais comumente usada, na sua aplicação no desenvolvimento de serviços de diretório LDAP. De acordo com o TIOBE Programming Community Index, a utilização do Ruby cresceu no último ano.
| Descrição | Nome | Tamanho | Método de download |
|---|---|---|---|
| LDAP application | os-ldap-tivoli-ruby_ldap-app.zip | 29KB | HTTP |
Informações sobre métodos de download
Aprender
-
"Introdução
ao LDAP, Parte 2: LDAP e WebSphere" explica como o LDAP oferece um excelente mecanismo de autenticação para o seu WebSphere Application Server.
-
Adquira uma visão geral do
Tivoli Directory Server e aprenda sobre os recursos, benefícios, requisitos do sistema, suporte a
produto e mais.
-
Conheça e faça download do
Ruby on Rails, a estrutura da Web de software livre otimizada para produtividade sustentável e felicidade
dos programadores.
-
"Uma introdução ao Ruby on Rails para desenvolvedores do DB2" explica como agilizar o desenvolvimento de aplicativos da Web baseados em DB2 usando a estrutura da Web Ruby on Rails.
-
Consulte o TIOBE Programming Community
Index, para ver como a utilização do Ruby cresceu no último ano.
-
"Rastreie rapidamente seus aplicativos da Web com o Ruby on Rails" introduz o Ruby on Rails, detalhas os componentes e mostra como ele funciona.
-
Para ouvir entrevistas e discussões interessantes para desenvolvedores de software, consulte os podcasts do developerWorks.
-
Mantenha-se atualizado com os eventos e webcasts técnicos do developerWorks.
-
Siga o developerWorks no Twitter.
-
Verifique as próximas conferências, feiras, webcasts e outros Eventos em todo o mundo que sejam de interesse dos desenvolvedores IBM de código aberto.
-
Visite a Zona de código aberto do developerWorks para informações extensivas sobre como fazer, ferramentas e atualizações de projetos que o ajudarão a desenvolver com as tecnologias de código aberto e usá-las com os produtos IBM.
-
Assista e aprenda sobre a IBM e as tecnologias e funções de produtos de código aberto com as demos on demand do developerWorks grátis.
Obter produtos e tecnologias
-
Inove em seu próximo projeto de desenvolvimento em código aberto com o software de avaliação IBM, disponível para download ou em DVD.
- Faça download das
versões de avaliação de produtos IBM
ou explore as avaliações
on-line no IBM SOA Sandbox e utilize as ferramentas de desenvolvimento de aplicativos e produtos de middleware do
DB2®, Lotus®, Rational®, Tivoli® e WebSphere®.
Discutir
-
Participe dos blogs developerWorks e envolva-se na comunidade do developerWorks.