2011-06-16 3 views
4

Ce article m'a fait penser à ce qui se passerait avec les applications ASP.NET non compatibles avec les revendications lorsque vous les fédéreriez avec ADFS via FedUtil.Applications ASP.NET non compatibles avec les revendications et ADFS v2.0

L'article suggère que la clé pour que cela fonctionne est d'activer le service de jeton Revendications vers Windows (C2WTS). Ce service transforme efficacement un jeton ADFS en un jeton Windows.

J'ai donc construit une application ASP.NET rapide en utilisant l'authentification Windows, j'ai exécuté FedUtil et je peux m'authentifier avec ADFS en utilisant l'authentification Windows ADFS ou StarterSTS. Le problème est que C2WTS n'est pas en cours d'exécution donc cela fonctionne bien que je m'attendais à ce que ce ne serait pas le cas.

De toute évidence, vous n'avez aucun accès aux objets de revendications dans l'application, mais sinon cela ne pose aucun problème.

Cela pose cependant un problème. Comment vous déconnectez-vous d'ADFS puisque vous n'avez pas accès à FederatedPassiveSignOut etc?

Des jetons sont-ils envoyés à l'application? Est-ce simplement en les ignorant sans aucune exception?

Est-ce que C2WTS doit faire partie de l'image?

Ai-je manqué quelque chose?

Répondre

2

demandé sur d'autres forums, Steve Syfuhs a répondu:

FedUtil modifie le web.config de sorte que la méthode d'authentification est « Aucun », et insère des gestionnaires très tôt dans la demande Web pour voir si une session existe, et Si on ne crée pas une session en la redirigeant vers le STS spécifié, le STS le fait et renvoie un jeton au site. Un autre gestionnaire reçoit le jeton et construit un objet IClaimsPrincipal basé sur le jeton. L'objet Thread.CurrentPrincipal est défini sur IClaimsPrincipal. En tant que tel, l'authentification Windows ne se produit PAS dans l'application Web (mais dans ADFS).

OWA (comme toutes les applications Web bien construites) se penche sur Thread.CurrentPrincipal pour l'identité de l'utilisateur. Tant que les valeurs fournies par le STS correspondent à ce qu'OWA attend, OWA est satisfait. Certaines revendications sont disponibles via le Thread.CurrentPrincipal, tel que la revendication de nom, qui est ce que OWA utilise pour obtenir le nom d'utilisateur. C2WTS a été créé pour agir comme un shim entre une application qui comprend les revendications et une application qui ne crée pas un jeton Windows et l'attache à la session de l'utilisateur. OWA doit appeler dans Active Directory pour obtenir certains bits d'informations, et il le fait via l'authentification Windows, et a donc besoin d'un jeton Windows.

Dans ce cas, il est impossible de se déconnecter d'ADFS, mais vous pouvez toujours supprimer la session dans OWA ou votre application personnalisée en supprimant les cookies. Dans une application Web personnalisée, vous pouvez lier à la page de sortie ADFS, qui est https://adfsserver/adfs/ls/?wa=wsignout1.0 et qui se déconnectera d'ADFS.

Mise à jour:

Juste au document pour les autres:

Cette approche fonctionne en termes d'externalisation de l'authentification, mais il y a trois problèmes:

  • Il n'y a pas d'accès aux objets de revendications.
  • Vous devez créer votre propre déconnexion.
  • Il y a quelque chose de «différent» dans les métadonnées de la fédération. Vous ne pouvez pas ajouter l'application en tant que RP dans ADFS via l'URL. Vous devez utiliser le mécanisme de fichier d'importation. Cela signifie qu'il n'y a aucun moyen de mettre à jour les métadonnées, donc s'il y a des changements au RP que vous devez supprimer et reconfigurer.
Questions connexes