Предположим, у нас есть отчет SalesSummary для большого отдела. В этом отделе есть много небольших команд для каждого продукта. Люди должны иметь возможность видеть информацию о своем собственном продукте, а не о продуктах других команд. У нас также есть одна группа доменов для каждой из этих команд.
Копирование отчета SalesSummary для каждой команды и установка разрешения - не лучший вариант, так как у нас много продуктов. Я думал использовать код, подобный приведенному ниже, на RS, но он не работает. По-видимому, System.Security.Principal.WindowsPrincipal по умолчанию отключен на RS.
Public Function isPermitted() As Boolean
Dim Principal As New System.Security.Principal.WindowsPrincipal(System.Security.Principal.WindowsIdentity.GetCurrent())
If (Principal.IsInRole("group_prod")) Then
Return true
Else
Return false
End If
End Function
Я также подумал, что могу отправить userID с RS на SQL-сервер, и внутри моего SP я могу использовать код, подобный приведенному ниже, для запроса активной директории. Это также не работает из-за ограничений безопасности.
SELECT
*
FROM OPENQUERY(ADSI,'SELECT cn, ADsPath FROM ''LDAP://DC=Fabricam,DC=com'' WHERE objectCategory=''group''')
Есть ли более простой способ достичь этой цели?
Спасибо за помощь!