A Web Part do navegador da organização não é renderizada para usuários do Windows Claims

Sintomas

Ao usar a Web Part de navegador da organização em sites habilitados para declarações do Windows, a Web Part não renderiza nenhuma informação. A mesma Web Part processa os usuários com diferentes tipos de autenticação de declarações corretamente.

Causa

As informações da organização são obtidas do banco de dados de perfil do aplicativo de serviço de perfil de usuário (UPSA). As informações necessárias são armazenadas na tabela UserProfile_Full.

Usuários do Active Directory (adicionados manualmente ou sincronizados automaticamente) são armazenados no banco de dados de perfil do UPSA com o formato NETBIOS\LogonName (ex.: CONTOSO\TestUser1).

Ao navegar em um site de declarações no entanto, o contexto de usuário usa o formato de NTName de declarações. (Ex.: i:0 #. w | Contoso\TestUser1)

A Web Part do navegador da organização faz uma pesquisa de banco de dados para o usuário ' i ' 0 #. w | Contoso\TestUser1 ' que não está disponível no banco de dados desde que as informações do usuário serão armazenadas com o NTName ' Contoso\TestUser1 '.

O problema não acontece com nenhum outro tipo de autenticação de declarações, pois o banco de dados de perfil contém o formato de nomenclatura correto para eles.

Resolução

O controle de Web Part do navegador da organização é renderizado na página pela função JavaScript do CreateHierarchyChartControl. Essa função não está ciente do fato de que o banco de dados de perfil do UPSA armazena os usuários de declarações do Windows com um formato de nomenclatura diferente. Para contornar isso, o trecho de código abaixo deve ser inserido no direito de origem do site após a Web Part do navegador da organização.

<script type="text/javascript">  
 function CreateHierarchyChartControl(parentId, profileId, type, persistControlId) {  
  var i = profileId.indexOf("|");  
  var claimsmode = profileId.substr(i-1,1);  
  if((i >=0 ) & (claimsmode=="w"))  
  {  
   profileId = profileId.substr(i+1,profileId.length-i-1);  
   var initParam = profileId + ',' + type + ',' + persistControlId;  
   var host = document.getElementById(parentId);  
   host.setAttribute('width', '100%');  
   host.setAttribute('height', '100%');  
   Silverlight.createObject('/_layouts/ClientBin/hierarchychart.xap',  
    host,  
    'ProfileBrowserSilverlightControl',  
    {  
     top: '30',  
     width: '100%',  
     height: '100%',  
     version: '2.0',  
     isWindowless: 'true',  
     enableHtmlAccess: 'true'  
    },  
    {  
     onLoad: OnHierarchyChartLoaded  
    },  
     initParam,  
     null);  
    }  
  }  
</script>  

Método 1: adicionar uma Web Part do editor de conteúdo à página

  1. Edite a página que contém a Web Part do navegador da organização.
  2. Adicione um direito de Web Part do editor de conteúdo após a Web Part do navegador da organização.
  3. Edite o conteúdo.
  4. Na faixa de opções, clique em HTML/Editar origem HTML na guia Formatar texto.
  5. Copie-cole o código acima.
  6. Ocultar o cromo e o conteúdo da Web Part para que ele não apareça na página.

Método 2: editar a página no SharePoint Designer

Observe que esse método desanexará a página da definição de site e, como tal, deve ser usado com cuidado.

  1. Abra a página no SharePoint Designer para edição.
  2. Altere para o modo de exibição de código.
  3. Na faixa de opções, clique em modo avançado
  4. Localize a marca de> de </SharePoint: EmbeddedFormField.
  5. Cole o código acima imediatamente após a marca.
  6. Salve suas alterações.
  7. Clique em Sim na janela de aviso da página de definição de site.

Mais informações

Observe que não é possível substituir o modo de exibição de HTML da Web Part do navegador da organização do cliente. Se você precisar ter um controle não-Silverlight disponível, será necessário escrever uma Web Part personalizada para atingir essa meta com as declarações do Windows.

Ainda precisa de ajuda? Vá para a comunidade do SharePoint.