Explorando o SharePointIntegração de diretórios do SharePoint

Pav Cherny

Código disponível para download em: SharePoint2008_09.exe(2.775 KB)

Conteúdo

Serviço de Gerenciamento de Diretório do SharePoint
Serviço de Gerenciamento de Diretório Personalizado
SharePoint e ILM
Conclusão

O Microsoft Windows SharePoint Services (WSS) 3.0 e o Microsoft Office SharePoint Server (MOSS) 2007 incluem recursos de sincronização de diretórios na forma de um Serviço de Gerenciamento de Diretórios que pode provisionar grupos de objetos e contatos habilitados para email para os recursos do SharePoint no Active Directory. O provisionamento desses tipos de

objetos de destinatário para os recursos do SharePoint® permite aos usuários selecionar bibliotecas, listas e grupos do SharePoint diretamente do catálogo de endereços do Microsoft® Outlook® ao enviar documentos e outras informações.

Os objetos de destinatário do SharePoint também fornecem uma forma de controlar conversões de formato e transferência de mensagens em uma organização do Exchange Server. Entre outras coisas, você pode impedir que remetentes não-autenticados, como remetentes de spam, enviem mensagens para as bibliotecas do SharePoint configurando restrições de entrega de mensagens no Active Directory®.

Contudo, os recursos de gerenciamento de diretórios do SharePoint são limitados, e suponhamos que, quando escrevi este artigo, o Exchange Server 2003 era o sistema de mensagens subjacente. Por enquanto, se você usar o Exchange Server 2007 ou um sistema de mensagens de terceiros, precisará estender ou substituir os recursos de diretório internos por uma solução personalizada para obter o nível desejado de interoperabilidade.

Nesta coluna, revisarei brevemente os recursos de gerenciamento de diretório do SharePoint e apresentarei uma abordagem para superar as limitações existentes. Minha premissa é a de que o Serviço de Gerenciamento de Diretórios interno atende apenas aos requisitos básicos de usuário. Ambientes com diversos sistemas de mensagens e plataformas de diretório precisam de mais flexibilidade e funcionalidade. Ao substituir o componente interno por uma solução personalizada, você pode sincronizar as informações de destinatário do SharePoint com qualquer solução de diretório que forneça uma API ou recursos de importação.

Para provar essa teoria, mostrarei como sincronizar as informações de destinatário do SharePoint de uma forma compatível com o Exchange Server 2007. Da mesma forma, você pode usar uma solução personalizada para sincronizar essas informações com o Lotus Notes da IBM ou outros sistemas.

Você também ganha a capacidade de centralizar os processos de provisionamento de diretório com base em um serviço de metadiretório, como o Identity Information Server, que é incluído no Microsoft Identity Lifecycle Manager (ILM) 2007 Feature Pack 1 (FP1). Especificamente, mostrarei como integrar o SharePoint ao ILM 2007 para coordenar o provisionamento de objetos de diretório para bibliotecas de documentos do SharePoint. Você encontrará as ferramentas, o código fonte e as instruções passo a passo para criar esta solução no material complementar desta coluna, disponível na seção Download de Código do technetmagazine.com.

Serviço de Gerenciamento de Diretório do SharePoint

Diferentemente do Exchange Server, que usa o Active Directory para quase todas as configurações e informações de destinatário, o SharePoint conta com bancos de dados de configuração e conteúdo. Por isso, o SharePoint deve propagar para um diretório as informações de destinatário relativas a bibliotecas, listas e grupos habilitados para email que residem em seus bancos de dados. Afinal, os clientes de mensagens esperam encontrar informações de destinatário no catálogo de endereços, que normalmente é gerado dos objetos de diretório.

Incluído no pacote, o SharePoint contém um Serviço de Gerenciamento de Diretório para essa finalidade, que faz parte do Web service de Integração de Email (SharepointEmailWS.asmx), que você pode configurar na Administração Central do SharePoint 3.0, na página Operações, em configurações de email de entrada. A Figura 1 ilustra como o Serviço de Gerenciamento de Diretório funciona.

fig01.gif

Figura 1 Arquitetura do Serviço de Gerenciamento de Diretório do SharePoint (clique na imagem para ampliá-la)

Ao habilitar um Web farm para o gerenciamento de diretórios atribuir a uma biblioteca, uma lista ou um grupo um endereços de email para receber mensagens, como ao usar EmailSettings.aspx, implicitamente, você chama o Web service de Integração de Email para provisionar os objetos de destinatário correspondentes no Active Directory. Primeiro, o SharePoint armazena as informações de endereço de email no banco de dados de conteúdo. Depois, ele envia a solicitação de provisionamento em nome do Web service de Integração de Email usando a identidade da conta do pool de aplicativos Web. Se a solicitação de provisionamento falhar, as informações de endereço de email serão armazenadas no banco de dados de conteúdo, mas não é feita a correspondência de objetos de destinatário no Active Directory.

Recursos adicionais

O provisionamento de solicitações pode falhar por vários motivos. O mais comum deles é a perda de permissões de acesso de metabase do IIS. Como o SharepointEmailWS.asmx foi designado para ser um Web service para contas de um pool de aplicativos, esse Web service examina a metabase do IIS para ver se o chamador é uma conta de pool de aplicativos e nega acesso se não for esse o caso, independentemente dos níveis de permissão do site do SharePoint e do Active Directory.

Entretanto, como o SharepointEmailWS.asmx executa essa verificação de acesso sob a identidade do chamador, a conta do pool de aplicativos de chamada precisa ter acesso à metabase para verificar suas próprias permissões de acesso. Por isso, você deve conceder permissões elevadas às contas do pool de aplicativos para ter êxito.

Obviamente, permissões elevadas em um servidor Web são uma fonte de preocupação quanto à segurança. Há meios mais adequados de controlar o acesso a um Web service ASP.NET. Além disso, o SharePoint espera encontrar o Serviço de Gerenciamento de Diretório no site Administração Central, mas esse site nem sempre está disponível em um Web farm bloqueado para reduzir a superfície de ataque. Se quiser usar o Serviço de Gerenciamento de Diretório interno no seu ambiente de produção do SharePoint, você terá de aceitar uma configuração de segurança mais fraca.

Outras limitações existentes vêm do fato de que o Serviço de Gerenciamento de Diretório interno se baseia em uma arquitetura rigidamente combinada de cliente/servidor. O Microsoft.SharePoint.dll usa o System.DirectoryServices.dll diretamente, por isso não é possível implementar sua própria lógica para personalizar o processo de provisionamento. Por exemplo, a implementação do Serviço de Gerenciamento de Diretório interno não grava todos os atributos de destinatário para oferecer suporte ao Exchange Server 2007, e não existe a opção de personalizar as regras de geração de atributos.

A incapacidade de implementar sua própria lógica também significa que você não pode personalizar o processo de provisionamento, por exemplo, para implementar aprovações personalizadas. O SharePoint oferece suporte aos processos de aprovação para grupos, mas esse recurso se baseia no site Administração Central. Somente os administradores de farm do SharePoint podem aprovar solicitações pendentes, porém os processos de provisionamento do Active Directory não dependem necessariamente da sua aprovação.

Talvez, acima disso, não haja nenhum processo de aprovação para bibliotecas e listas de documentos habilitadas para email. Se você habilitar o gerenciamento de diretório, basicamente irá conceder a todos os administradores de site do seu Web farm o direito de criar contatos e grupos habilitados para email no Active Directory. Também não é possível estruturar o gerenciamento de destinatários com base em unidades organizacionais (UO), porque todos os objetos de destinatário por Web farm são colocados na mesma UO.

Você não pode mover os objetos de destinatário para outra UO porque o Serviço de Gerenciamento de Diretório espera encontrar esses objetos na UO do SharePoint, e você deve conceder à conta do pool de aplicativos da Administração Central permissões administrativas no Active Directory. Além disso, não há como implementar uma sincronização bilateral entre o SharePoint e o Active Directory. Se você alterar os atributos de objeto no Active Directory, as alterações não serão propagadas de volta para o ambiente do SharePoint.

Serviço personalizado de gerenciamento de diretórios

Agora que demonstrei que o Serviço de Gerenciamento de Diretório interno dá liberdade para criar uma flexibilidade adicional, vejamos algumas alternativas. A boa notícia é que o SharePoint permite implementar seu próprio serviço de gerenciamento de diretório. Basta registrar o seu Web service como um Serviço de Gerenciamento de Diretório remoto na Administração Central do SharePoint 3.0, na página Operações, em configurações de email de entrada.

Para obter instruções passo a passo para implantar e registrar um Web service personalizado, consulte a planilha "Directory Integration Based on a Custom Directory Management Service.xps" no material complementar. Além disso, meu Web service personalizado mostra como provisionar objetos de destinatário compatíveis com o Exchange Server 2007 no Active Directory sem cmdlets ou as ferramentas de gerenciamento do Exchange. O código fonte correspondente está na pasta EmailIntegrationService. A Figura 2 ilustra a arquitetura da solução.

fig02.gif

Figura 2 Arquitetura do Serviço de Gerenciamento de Diretório personalizado (clique na imagem para ampliá-la)

A interface do Web service personalizado deve aderir à interface do Serviço de Gerenciamento de Diretório, conforme documentado no SDK do SharePoint. Se você pesquisar no site do MSDN® (msdn.microsoft.com) a expressão "SharepointEmailWS", encontrará todos os detalhes necessários. Você também pode consultar o arquivo Service.cs na pasta EmailIntegrationService\App_Code do material complementar. Esse arquivo implementa a interface do Web service necessária, enquanto que o código para provisionar os objetos do Active Directory reside em SPRecipient.cs. Por exemplo, a função UpdateRecipientAttributes em SPRecipient.cs gera os atributos necessários do Exchange Server 2007. SPRecipient.cs é o arquivo de código que você deve substituir se quiser desenvolver seu próprio serviço de gerenciamento de diretório personalizado.

Um serviço de gerenciamento de diretório personalizado é uma boa ferramenta para superar os requisitos de permissão elevada e integrar o SharePoint a diretórios ou sistemas de mensagens de terceiros. Não é necessário verificar a metabase do IIS para limitar o acesso do Web service às contas do pool de aplicativos. Em vez disso, você pode adicionar uma seção <authorization> ao arquivo web.config do seu Web service (consulte o material complementar para obter um exemplo).

Contudo, ainda restam vários problemas, porque não é possível controlar se e quando o SharePoint chama o seu serviço de gerenciamento de diretório. Entre outras coisas, o SharePoint não chama o Serviço de Gerenciamento de Diretório quando você exclui uma biblioteca ou lista de documentos habilitada para email, por isso um objeto de destinatário inválido permanece no Active Directory. Quer você use o Serviço de Gerenciamento de Diretório interno ou uma solução personalizada, não dá para garantir que as informações de destinatário no Active Directory sejam consistentes com os recursos do SharePoint.

SharePoint e ILM

Para obter uma integração de diretórios confiável, você deve considerar a implantação de um pacote de gerenciamento de diretório profissional, como o ILM. Esse sistema conta com um modelo de sincronização de diretórios com base em extração. Os agentes de gerenciamento extraem as informações das fontes conectadas, importam-nas para um metadiretório comum e as exportam desse metadiretório para seus sistemas conectados. Os sistemas de origem nem sempre enviam por push as informações para o metadiretório. Ao extrair as informações, você pode garantir a consistência com cada ciclo de sincronização.

Outra vantagem é que o ILM inclui vários agentes de gerenciamento para oferecer suporte ao Active Directory, ao Lotus Notes e a vários outros sistemas prontamente. Basta implementar um agente de gerenciamento personalizado no SharePoint para sincronizar as informações dele com outra plataforma de diretório que possua suporte no seu ambiente.

Você deve implementar a lógica para recuperar as informações desejadas do SharePoint, salvá-las em um arquivo de importação e transferi-las para o metadiretório. Mas não é necessário implementar a lógica para exportar essas informações do metadiretório para o Active Directory ou outra plataforma de diretório. A Figura 3 ilustra como implementar a sincronização do SharePoint com o Active Directory usando o ILM. Também é possível obter a sincronização do outro lado a fim de provisionar os recursos do SharePoint para os objetos de diretório, embora isso possa ser considerado desnecessário ou opcional.

fig03.gif

Figura 3 Integração de diretórios baseada no gerenciador de ciclo de vida (clique na imagem para ampliá-la)

Um bom ponto de partida para desenvolver um agente de gerenciamento do SharePoint é o artigo de Alex Tcherniakhovski "Conectando o ILM 2007 com as listas de serviços do SharePoint" em blogs.msdn.com/alextch/archive/2007/09/02/wsslistsandilm.aspx. Alex mostra como criar uma solução de gerenciamento de diretório baseada em ILM que dependa das solicitações de provisionamento baseadas no InfoPath® enviadas a uma biblioteca de documentos. O agente de gerenciamento de Alex recupera todas as solicitações aprovadas da biblioteca de documentos e cria objetos de metadiretório correspondentes que podem ser exportados para diretórios conectados.

Mas, por padrão, o SharePoint não gera solicitações de provisionamento baseadas no InfoPath quando você habilita uma lista ou grupo para email. Você pode obter isso por meio de um serviço de gerenciamento de diretório personalizado, mas encontrará os problemas de consistência mencionados anteriormente porque o SharePoint não chama o serviço de gerenciamento de diretório em tais circunstâncias. Por isso, recomendo que o seu agente de gerenciamento recupere as informações desejadas de destinatário do SharePoint diretamente das listas e dos grupos da sua coleção de sites. Se precisar de processos de aprovação, você pode gerar solicitações de provisionamento baseadas no InfoPath para novos recursos no agente de gerenciamento e, depois, processar todas as solicitações aprovadas.

Há várias opções para recuperar as informações do SharePoint. Você pode ler as informações necessárias diretamente nos bancos de dados de conteúdo, usar o modelo de objeto do SharePoint ou aproveitar os Web services do SharePoint.

Não é recomendável acessar os bancos de dados de conteúdo diretamente porque suas estruturas podem ser alteradas em versões futuras, o que destruiria a sua solução de gerenciamento de diretório.

Usar o modelo de objeto do SharePoint diretamente no seu agente de gerenciamento também é perigoso porque o modelo de objeto requer que você execute o código localmente, porém, instalar o ILM em um servidor Web em cada farm do SharePoint no seu ambiente pode complicar a infra-estrutura de gerenciamento de diretório.

Você pode pensar em usar os Web services do SharePoint, mas isso cria outra dificuldade porque as informações desejadas não são facilmente acessíveis por meio deles, como informações de endereço de email para grupos do SharePoint ou endereço de exibição do servidor de email de entrada.

No fim, parece que o melhor é implementar um Web service do SharePoint que use o modelo de objeto do SharePoint para recuperar as informações desejadas e retorná-las ao chamador na forma de um documento XML. Agora você pode centralizar a implantação do ILM e integrar quantos farms e coleções de sites desejar por meio de instâncias individuais do Web service personalizado do SharePoint, conforme ilustrado na Figura 3.

Resta um aspecto que vale mencionar: a integração de diretórios baseada no ILM não elimina a necessidade de um serviço de gerenciamento de diretório personalizado. Esse serviço personalizado não precisa executar nenhum trabalho porque o ILM provisiona os objetos de diretório; no entanto, você deve fornecer um serviço personalizado para habilitar o gerenciamento de diretório na Administração Central do SharePoint 3.0. Caso contrário, não será possível, por exemplo, atribuir endereços de email a grupos. A Figura 4 mostra a arquitetura resultante da solução.

fig04.gif

Figura 4 Integração de diretórios do SharePoint baseada no Web service (clique na imagem para ampliá-la)

Você pode transformar o serviço de gerenciamento de diretório personalizado incluído no material complementar em um serviço fictício configurando o parâmetro OpMode no arquivo web.config (<add key="OpMode" value="dummy"/>). Nessa configuração, o serviço personalizado sempre retorna SUCCESS em resposta às chamadas de provisionamento sem executar nenhum trabalho.

Além disso, o serviço personalizado expõe um método ResolveUsers que o agente de gerenciamento do SharePoint pode chamar para resolver os nomes de conta de usuário baseadas no NetBIOS em nomes distintos, que é uma etapa necessária ao provisionar grupos. (O SharePoint retorna informações de associação de grupos como uma lista de nomes de conta de usuário baseadas no NetBIOS, mas o Active Directory espera nomes distintos.) E isso é tudo! Para obter detalhes sobre como implantar a solução resultante, consulte "Configuring Directory Integration based on ILM 2007.xps" no material complementar.

O WSS 3.0 e o MOSS 2007 incluem um Serviço de Gerenciamento de Diretório para integrar o SharePoint ao Exchange Server 2003 para colaboração entre plataformas baseada em sistema de mensagens.

Existem várias limitações, no entanto. Os usuários devem substituir o Serviço de Gerenciamento de Diretório por uma solução personalizada. Você também pode usar uma solução de gerenciamento de diretório profissional, como o ILM, para integrar o SharePoint a uma infra-estrutura de gerenciamento de diretório. Assim, você obterá o maior nível de flexibilidade possível e ajudará a garantir a consistência das informações em um modelo de sincronização baseado em extração.

Pav Cherny é especialista em TI e autor especializado em tecnologias Microsoft para colaboração e comunicação unificada. Entre suas publicações estão white papers, manuais de produto e livros com foco nas operações de TI e na administração do sistema. Pav é presidente da Biblioso Corporation, empresa especializada em serviços de documentação gerenciada e de localização.