J'essaie de naviguer d'un site Web sur mon hôte local vers un deuxième site Web sur mon hôte local.Authentification et fournisseur ASP.NET
Les deux sites ont leur propre fournisseur d'appartenances. J'essaie d'utiliser un FormsAuthorizationTicket du site # 1 à SSO un utilisateur dans le site # 2.
Actuellement Je reçois cette erreur: System.Security.Cryptography.CryptographicException: Rembourrage est invalide et ne peut pas être retiré
mesures que j'ai prises jusqu'à présent comprennent: l'élément Réglage des valeurs clés spécifiques Définissez les attributs machineKey de la validation et du chiffrement sur "3DES". Vérifié en enregistrant que le ticket chiffré a la même valeur sur le site Web # 2 que sur le site Web # 1.
Mon code est ici:
*FormsAuthentication.Initialize();
FormsAuthenticationTicket newTicket = new
FormsAuthenticationTicket(1 // Ticket Version
, Login1.UserName // User Name
, DateTime.Now // Creation Date
, DateTime.Now.AddDays(1) // Expiration Date
, true // Is Persistant
, Login1.UserName); // This should be a list of Roles
string strEncyptedTicket = FormsAuthentication.Encrypt(newTicket);
HttpCookie myCookie = new HttpCookie("cryptCookie", strEncyptedTicket);
myCookie.Values.Add("username", Login1.UserName);
myCookie.Values.Add("cryptTick", strEncyptedTicket);
Response.Cookies.Add(myCookie);*
sur le site # 2 J'ai créé une page de destination pour vérifier le ticket et rediriger vers une page membres seulement. Au cours du décryptage est quand je reçois l'erreur spécifiée ci-dessus.
Voici mon code de page de destination sur le site n ° 2:
*FormsAuthenticationTicket fat2 = FormsAuthentication.Decrypt(Request.Cookies["cryptCookie"].Values["cryptTick"]);
MembershipUser mu = Membership.GetUser(Request.Cookies["cryptCookie"].Values["username"]);
if (mu == null)
{
lblInfo.Text += "member not found";
return;
}
Response.Redirect(@"~\MemberPages\MemberPage.aspx");*
Si quelqu'un a une idée pour aider, je serai heureux d'essayer.
Ma clé machine est définie dans mon fichier machine.config, dont je crois qu'elle est héritée par les deux sites Web (puisque les deux sont sur mon hôte local). Y a-t-il autre chose que je dois faire pour répondre à cette exigence? \t \t –
Il était plus d'une observation qu'une réponse. Si vous utilisez l'IIS intégré dans VS (ce localhost: 3123/yoursite) je ne pense pas qu'ils partagent des cookies. À long terme, vous rencontrerez un problème pour traverser un domaine (monsite1.com vers votresite3.net) –