Como identificar o privilégio em falta
O Microsoft Dynamics CRM já traz por defeito Roles de Segurança, mas é quase sempre necessário adaptá-los às necessidades de cada organização. Um problema muito comum é depararmo-nos com falta de permissões quando tentamos executar uma determinada acção, com um Role de Segurança específico. O erro mostrado é o seguinte:
“The logged-on user does not have the appropriate security permissions to view these records or perform the specific action.”
Privilégios escondidos
Uma das razões que origina este problema é a falta de “privilégios escondidos”. São privilégios que não estão visíveis no formulário dos Roles de Segurança, e que não são incluídos nos Roles que criamos de raiz. Recomendamos uma de duas soluções:
· Copiar um Role existente e editá-lo em vez de criar um Role de raiz. Desta forma garantimos que os privilégios escondidos estão presentes.
· No caso de se tratar de um Role criado de raiz, instalar o último Update Rollup e aplicar a solução detalhada no artigo 968515
Falta de privilégios
Se a origem do problema não é a falta de privilégios escondidos, pode-se tratar pura e simplesmente de algum privilégio que faltou incluir no Role. Em vez de seguir o caminho de ‘tentativa/erro’, podemos facilmente identificar exactamente a permissão em causa.
1. Activar as platform traces
2. Reproduzir o erro
3. Desactivar as traces
4. Abrir as traces, e procurar por ‘level: Error’, até encontrar um erro semelhante ao seguinte:
>Crm Exception: Message: SecLib::CrmCheckPrivilege failed. Returned hr = -2147220960 on UserId: 416cb65c-292c-de11-88a9-0003ffede221 and PrivilegeId: 8b99344e-ebbf-4f84-8438-e1e34d194de9, ErrorCode: -2147220960
5. Já temos o ID do privilégio que falta: ‘8b99344e-ebbf-4f84-8438-e1e34d194de9’
6. De seguida, abrir o SQL Server Management Studio, e executar a instrução seguinte na base de dados <Organização> _MSCRM:
select * from privilegebase where privilegeId = '8b99344e-ebbf-4f84-8438-e1e34d194de9'
7. No resultado temos finalmente o nome do privilégio em falta na coluna ‘Name’: prvAssignActivity
Basta então adicionar este privilégio ao nosso Role de Segurança para resolver o problema:
Yoann Nesme
Comments
- Anonymous
May 20, 2009
PingBack from http://asp-net-hosting.simplynetdev.com/como-identificar-o-privilegio-em-falta/