Si je vous comprends bien, vous devez implémenter IReportServerCredentials, voici un exemple ive utilisé dans le passé
using System;
using System.Configuration;
using System.Web;
using Microsoft.Reporting.WebForms;
using System.Security.Principal;
using System.Net;
[Serializable]
public sealed class ReportServerNetworkCredentials : IReportServerCredentials
{
#region IReportServerCredentials Members
private string username, password;
public ReportServerNetworkCredentials(string username, string password)
{
this.username = username;
this.password = password;
}
public bool GetFormsCredentials(out System.Net.Cookie authCookie, out string userName, out string password, out string authority)
{
//throw new NotImplementedException();
userName = password = authority = null;
// The cookie name is specified in the <forms> element in Web.config (.ASPXAUTH by default)
HttpCookie cookie = HttpContext.Current.Request.Cookies[".ASPXAUTH"];
if (cookie == null)
{
authCookie = null;
return false;
}
Cookie netCookie = new Cookie(cookie.Name, cookie.Value);
if (cookie.Domain == null)
{
netCookie.Domain = HttpContext.Current.Request.ServerVariables["SERVER_NAME"].ToUpper();
}
netCookie.Expires = cookie.Expires;
netCookie.Path = cookie.Path;
netCookie.Secure = cookie.Secure;
authCookie = netCookie;
return true;
}
public WindowsIdentity ImpersonationUser
{
get
{
return null;
}
}
public System.Net.ICredentials NetworkCredentials
{
get
{
return new System.Net.NetworkCredential(this.username, this.password);
}
}
#endregion
}
Et puis sur la page ASPX avec le col de visionneuse de rapports dans vos informations d'identification, etc.
ReportViewer1.ServerReport.ReportServerCredentials = new ReportServerNetworkCredentials(username, password);
ReportViewer1.ServerReport.ReportServerUrl = new Uri("http://youreportserver/ReportServer");
ReportViewer1.ServerReport.ReportPath = reportPath;
//etc
Cela vous permettra de passer n'importe quel nom d'utilisateur et vous passer. Cela fonctionne sur SSRS 08/SQL 08 et id imagine 05 aussi, cela utilise des formulaires auth.
J'espère que cela aide et que j'ai bien compris votre question.
Edit: Oui simplement récupérer le nom d'utilisateur et mot de passe où que vous les stockez (etc membres) et dans le passer dans mon exemple selon. Le nom d'utilisateur et le mot de passe doivent exister dans le serveur de rapports. Cependant, si vous avez vraiment besoin de comptes pour chaque utilisateur, créez un compte sur le serveur de rapports lorsque vous créez le compte dans l'application elle-même. Vous pouvez le faire via les services Web que SSRS expose, voir ici. Si le site est déjà utilisé, vous pouvez facilement parcourir tous vos utilisateurs et créer un compte via les services Web SSRS.
Cependant, êtes-vous sûr de vouloir créer un compte-rendu pour chaque utilisateur? Vous pouvez créer un compte pour chaque rôle dans l'application si vos raisons sont plus de droits d'accès que la journalisation.
Comme je l'ai écrit, je veux emprunter l'identité de l'utilisateur actuellement connecté. Comment les transmettre aux informations d'identification personnalisées "new ReportServerNetworkCredentials (loggedOnUserName ?, loggedOnPassword?)" – Chris