J'ai hérité d'un projet plutôt compliqué. Le concepteur original a créé un "cookie" qui semble être côté serveur plutôt que client (bien que je puisse me tromper sur cette partie). Il l'utilise pour ce qu'il a appelé "les plus petits privilèges, Single Sign On". Je le code suivant dans tous les services Web proxies il mis en place:Cookies serveur?
[WebServiceBinding(Name = "ISecurityManager", Namespace = "urn:riv:apis:security:forms:ver1")]
public partial class SecurityManager : SoapHttpClientProtocol, ISecurityManager
{
public SecurityManager()
{
//Url = CookieManager.WebServiceUrl(String.Empty, ref CookieContainer);
// I’d like to replace the following code with a call like this...
CookieContainer = new System.Net.CookieContainer();
string urlSetting = ConfigurationManager.AppSettings["SecurityManager"];
if (urlSetting != null)
Url = urlSetting;
else
Trace.TraceWarning("No URL was found in application configuration file");
string cookieName = FormsAuthentication.FormsCookieName;
string cookiePath = FormsAuthentication.FormsCookiePath;
string cookieDomain = Properties.Settings.Default.CookieDomain;
HttpCookie authCookie = HttpContext.Current.Request.Cookies[cookieName];
if (null != authCookie)
CookieContainer.Add(new Uri(urlSetting), new System.Net.Cookie(cookieName, authCookie.Value, cookiePath, cookieDomain));
}
….
J'ai aussi ce code à peu près partout:
string cookieName = FormsAuthentication.FormsCookieName;
string SecurityContext.ApplicationName = HttpContext.Current.Request.Cookies[cookieName].Path;
string SecurityContext.UserName = HttpContext.Current.User.Identity.Name;
if (!string.IsNullOrEmpty(SecurityContext.UserName))
….
Dans tous les cas, quand il va chercher le authCookie, il revient null ou le SecurityContext.UserName est vide. Je ne suis pas un gourou des cookies et beaucoup de code de ce type est obscurci - et aucune documentation.
Quelqu'un peut-il faire des têtes ou des queues hors de l'intention des blocs de code?
TIA