P
Paul Keegstra
I am working on an asp.net application which requires forms authentication as
the method for authenticating the web application using the underlying Active
Directory as the user store.
I have created my Forms Authentication process using the methods described
in some MSDN samples and that works just great.
The question/issue I have is this process results in the creation of a forms
authentication ticket and setting of the Context.User to a GenericPricipal
object. Now, another part of the application needs to run reports that are
defined in SQL Server Reporting Services by integrating the solution via the
reporting services web service (vs. a URL link).
In my code to invoke the web service, I have to set the credentials on the
reporting services web service object to something other than
system.net.credentialcache.defaultcredentials or I end up with the
credentials from the aspnet service account. I've tried setting <identity
impersonate="true" /> in my web.config but that didn't do it. I can get it
working if I set my credentials to a new instance of the network credentials
class:
rs.credentials = new
system.net.NetworkCredentials("username","password","domain").
Unfortunately, I can only seem to make this work by hardcoding the username,
password, and domain.
Is there any way to map a GenericPrincipal instance's properties to create a
valid NetworkCredentials instance? That seems to be the solution I need, but
I can't retrieve the password from the GenericPrincipal nor can I get it from
the FormsAuthenticationTicket (unless you have some suggestion in that
regard).
I would appreciate any suggestions.
the method for authenticating the web application using the underlying Active
Directory as the user store.
I have created my Forms Authentication process using the methods described
in some MSDN samples and that works just great.
The question/issue I have is this process results in the creation of a forms
authentication ticket and setting of the Context.User to a GenericPricipal
object. Now, another part of the application needs to run reports that are
defined in SQL Server Reporting Services by integrating the solution via the
reporting services web service (vs. a URL link).
In my code to invoke the web service, I have to set the credentials on the
reporting services web service object to something other than
system.net.credentialcache.defaultcredentials or I end up with the
credentials from the aspnet service account. I've tried setting <identity
impersonate="true" /> in my web.config but that didn't do it. I can get it
working if I set my credentials to a new instance of the network credentials
class:
rs.credentials = new
system.net.NetworkCredentials("username","password","domain").
Unfortunately, I can only seem to make this work by hardcoding the username,
password, and domain.
Is there any way to map a GenericPrincipal instance's properties to create a
valid NetworkCredentials instance? That seems to be the solution I need, but
I can't retrieve the password from the GenericPrincipal nor can I get it from
the FormsAuthenticationTicket (unless you have some suggestion in that
regard).
I would appreciate any suggestions.