Voici le problème. J'utilise ASP.NET Forms Authentication pour un site Web de type solde de compte. Une fois qu'un utilisateur se connecte, il peut effectuer un paiement sur son compte en se rendant sur un site tiers (3pw). Lorsque l'utilisateur clique pour effectuer un paiement, voici ce qui se passe:L'intégration avec un site Web tiers provoque le problème d'authentification par formulaires
- Mon site Web fait une demande au 3pw en passant un identifiant.
- Le 3pw fait une demande à mon site en passant l'ID plus un ID de sécurité.
- Je vérifie des choses ....
- Plus de choses arrive que vous n'avez pas besoin de se soucier de ...
Quand je teste ce processus que je peux voir dans les journaux Web que je J'arrive à la page de paiement unique sur mon site. En utilisant quelque chose comme Live HTTPHeaders je peux voir la demande sur le site Web 3pw (étape # 1). Ensuite, les journaux Web affichent une requête du site 3pw vers mon site (étape 2), mais l'entrée la plus proche dans les journaux est une nouvelle demande à la page de connexion de mon site.
login.aspx?ReturnUrl=mypage.aspx
Le 3pw ne sait pas comment gérer la redirection vers la page de connexion, puis échoue. La question est pourquoi mon site pense-t-il que l'utilisateur n'est plus authentifié lorsque la requête arrive de 3pw à mypage.aspx? J'ai regardé mes cookies et le cookie créé lors de ma connexion est toujours présent. Cela ne devrait-il pas indiquer au serveur que je suis toujours un utilisateur authentifié?
Voici ce que j'ai dans mon web.config
<authentication mode="Forms">
<forms defaultUrl="~/somepage.aspx"
loginUrl="~/login.aspx"
protection="All"
timeout="30"
name="MyCookieName"
enableCrossAppRedirects="true"
requireSSL="true"/>
</authentication>
<location path="manage">
<system.web>
<authorization>
<allow roles="UserRole" />
<deny users="?" />
</authorization>
</system.web>
</location>
Les utilisateurs authentifiés sont dans le rôle UserRole. La page demandée par 3pw se trouve dans le répertoire Gérer. Le 3pw n'est pas écrit en .NET et je n'ai aucun contrôle sur sa configuration.
Mise à jour:
Excusez-moi si je ne suis pas aussi clair que je pourrais être. Laissez-moi répéter les étapes.
- Un utilisateur se connecte à mon site Web et est authentifié.
- L'utilisateur accède à la page de paiement unique de mon site Web.
- Sur la page de paiement unique, l'utilisateur clique sur un bouton Make Payment.
- Le bouton Make Payment fait une requête GET à 3pw en transmettant un identifiant dans la chaîne de requête.
- Le 3pw voir la demande et fait une demande POST à une page de vérification sur mon site Web.
C'est la publication sur la page de vérification que l'erreur se produit. Selon le fichier journal, la demande à la page de vérification est redirigée vers la page de connexion. Mon serveur Web voit la requête entrer, essaie de diffuser la page mais réalise que l'utilisateur n'est pas authentifié et redirige la demande vers la connexion. Cette partie me perturbe parce que je pensais que le serveur chercherait à voir si l'utilisateur était authentifié et comme ils le sont toujours parce que le cookie existe toujours, servez la page demandée.
Peut-être que je ne comprends pas tout le processus, mais depuis la demande à la 3pw initié à partir de mon utilisateur connecté, aucune des demandes de mon site à partir du 3pw ne tombe toujours sous mon utilisateur?
Si tel est le cas, comment puis-je contourner cela. Je déteste même le suggérer, mais dois-je utiliser un iframe. – Notorious2tall