2008-11-06 2 views
3

Мне нужно определить, какие группы (ы) безопасности являются членами из отчета SQL Server Reporting Services. Доступ к отчету будет определяться членством в одной из двух групп: «report_name_summary» и «report_name_detail». Когда пользователь выполняет отчет, мы хотим иметь возможность использовать их членство (или отсутствие членства) в группе «report_name_detail», чтобы определить, разрешено ли «сверление».Как определить, какие группы безопасности AD текущего пользователя находятся в отчете SSRS?

Я не знаю, как выйти из коробки, чтобы получить доступ к членству в группе безопасности AD, но я открыт для любых предложений о возможности доступа к этой информации из отчета.

ответ

5

Вы можете добавить свой код в отчет. This link имеет несколько примеров.

Теоретически вы должны написать такой код, а затем использовать возвращаемое значение, чтобы показать/скрыть то, что вы хотите. Тем не менее, у вас могут быть проблемы с разрешениями.

Public Function ShouldReportBeHidden() As Boolean 
Dim Principal As New System.Security.Principal.WindowsPrincipal(System.Security.Principal.WindowsIdentity.GetCurrent()) 
If (Principal.IsInRole("MyADGroup")) Then 
    Return False 
Else 
    Return True 
End If 
End Function 

В качестве альтернативы, вы можете добавить свой подробный отчет как подотчет Вашего краткого доклада. Затем вы можете использовать встроенные функции безопасности для SSRS для ограничения доступа к вашему отчету.

+0

Вчера у меня был момент «удар головой», когда я понял, как легко было бы сделать это с помощью специального кода, аналогичного тому, что у вас там есть. Он отлично работает, либо ссылается/вызывается из внешней сборки, либо как встроенный код в свойствах отчета. Еще нет разрешений. – 2008-11-14 16:15:45

1

В Reporting Services просто использовать:

Public Function IsMemberOfGroup() As Boolean 

If System.Threading.Thread.CurrentPrincipal.IsInRole("MyADGroup") Then 
    Return True 
Else 
    Return False 
End If 

End Function 

, как указано в this posting

Примечание: Это работает после того, как отчет будет развернут на сервере, но не в IDE.

Смежные вопросы