J'ai besoin de déterminer de quel groupe de sécurité un utilisateur est membre à partir d'un rapport SQL Server Reporting Services. L'accès au rapport dépendra de l'appartenance à l'un des deux groupes suivants: "nom_rappel_sommaire" et "nom_détail_détail". Une fois que l'utilisateur exécute le rapport, nous souhaitons être en mesure d'utiliser son appartenance (ou son absence d'appartenance) dans le groupe "report_name_detail" pour déterminer si un "drill down" doit ou non être autorisé. Je ne connais aucun moyen de sortir de la boîte pour accéder à l'adhésion au groupe de sécurité AD de l'utilisateur actuel, mais je suis ouvert à toutes les suggestions pour pouvoir accéder à cette information à partir du rapport.Comment puis-je déterminer les groupes de sécurité AD dans lesquels l'utilisateur actuel se trouve dans un rapport SSRS?
3
A
Répondre
5
Vous pouvez ajouter un code personnalisé à un rapport. This link a quelques exemples. En théorie, vous devriez être capable d'écrire du code comme celui-ci, puis utiliser la valeur de retour pour afficher/masquer ce que vous voulez. Cependant, vous pouvez avoir des problèmes de permissions avec cette méthode.
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
Sinon, vous pouvez ajouter votre rapport de détail en tant que sous-état de votre rapport de synthèse. Vous pouvez ensuite utiliser la fonctionnalité de sécurité intégrée à SSRS pour restreindre l'accès à votre sous-rapport.
1
Dans Reporting Services utilisez simplement:
Public Function IsMemberOfGroup() As Boolean
If System.Threading.Thread.CurrentPrincipal.IsInRole("MyADGroup") Then
Return True
Else
Return False
End If
End Function
comme indiqué dans this posting
Note: Cela fonctionne une fois que le rapport est déployé sur le serveur, mais pas dans l'IDE.
Questions connexes
- 1. Commentaires dans les expressions de rapport SSRS
- 2. Rapport de diagramme dans SSRS
- 3. Générer un objet de rapport dans ssrs
- 4. Comparaison de groupes AD - PowerShell
- 5. Boutons radio dans SSRS Rapport
- 6. Sécurité de dimension dans SSAS et SSRS
- 7. Comment obtenir des groupes d'utilisateurs AD pour utilisateur dans Asp.Net?
- 8. SSRS 2005 Sécurité basée sur les paramètres
- 9. Subversion avec des groupes AD avec Linux?
- 10. Assistant de rapport SSRS
- 11. SQL Reporting Services: Recherche du dossier dans lequel se trouve un rapport
- 12. Déplacement de rapports ad hoc ssrs
- 13. XSLT sur SSRS rapport
- 14. Sous-rapport dynamique dans SSRS 2008
- 15. Dans WPF, comment puis-je déterminer quelle colonne/ligne dans une grille se trouve dans un contrôle?
- 16. Comment personnaliser les messages d'erreur dans SSRS?
- 17. Rapport agrégation de serveurs sur les groupes par ligne
- 18. Comment déterminer le nombre d'enfants visibles dans un rapport hiérarchique?
- 19. SSRS 2005 How-to: En-têtes pour les groupes au sein des groupes?
- 20. SSRS: somme des valeurs TimeSpan dans un rapport
- 21. plusieurs groupes dans les rapports de cristaux
- 22. Comment se débarrasser des pages blanches supplémentaires dans la version PDF du rapport SSRS?
- 23. Comment conserver les paramètres de rapport dans Exportation pdf/Excel dans SSRS
- 24. Rapport SSRS simple
- 25. Comment lier un paramètre de rapport avec un paramètre de requête dans SSRS?
- 26. SSRS Matrice groupes de lignes en tant que lignes réelles
- 27. Comment automatiser les tests pour les rapports dans SSRS
- 28. Afficher un numéro de mots dans SSRS
- 29. Où se trouve un fichier RDL publié?
- 30. Adhésion au groupe AD de l'utilisateur SharePoint
J'ai eu un "coup de tête" hier quand j'ai réalisé à quel point il serait facile de le faire avec un code personnalisé similaire à ce que vous avez là. Cela fonctionne très bien, soit référencé/appelé depuis un assembly externe ou comme code incorporé dans les propriétés du rapport. Aucun problème d'autorisation pour le moment. –
= Utilisateur! ID utilisateur affichera qui est en cours d'exécution le rapport en tant qu'expression – JsonStatham
L'appel à System.Security.Principal.WindowsIdentity.GetCurrent() a échoué pour moi en raison des autorisations et du niveau de confiance à la DLL. L'utilisation de System.Threading.Thread.CurrentPrincipal.Identity à sa place a fait l'affaire: Dim Principal en tant que nouveau System.Security.Principal.WindowsPrincipal (System.Threading.Thread.CurrentPrincipal.Identity) –