2009-06-14 9 views
0

J'ai une application ASP.NET MVC dans laquelle je viens d'intégrer le système d'identité fédérée tiers RPX. L'intégration fonctionne bien, mais j'ai du mal à comprendre ce qu'il faut en faire au niveau ASP.NET.Mots de passe pour les applications utilisant l'authentification tierce?

Parce que l'identité est gérée en externe, je n'ai pas besoin de mots de passe dans mon application: je ne reçois jamais le mot de passe de l'utilisateur, juste son identité. Toutefois, le fournisseur d'abonnement ASP.NET nécessite que des mots de passe soient passés pour créer un utilisateur, signer un utilisateur, etc.

J'ai envisagé d'utiliser new Guid() lors de la création, mais cela nécessiterait un appel à la base de données pour récupérer le mot de passe de l'utilisateur avant que je puisse signer l'utilisateur via le fournisseur d'adhésion. Je pourrais utiliser le même mot de passe pour chaque utilisateur afin qu'il soit connu à l'avance, mais je crains que cela ne sécurise pas les données de mon utilisateur.

Je serais intéressé d'entendre comment d'autres sites traitent ce problème, par exemple, StackOverflow.

[S'il vous plaît également voir my other question, en ce qui concerne les fournisseurs d'adhésion à une telle application.]

Répondre

1

mais je crains que cela rende les données de mon utilisateur non sécurisées.

Démarrer en veillant à ce que personne ne peut authentifier directement sur votre base de données en utilisant un nom d'utilisateur et mot de passe - j'imagine que cela est déjà le cas que vous utilisez RPX pour faire l'authentification réelle, et vous ne sont Invoquer le ASP.NET fournisseur d'adhésion une fois que vous avez déjà établi l'identité de l'utilisateur. Ensuite, le mot de passe stocké de votre côté devient sans importance, car ce n'est pas un secret - si je peux déterminer quel mot de passe est de votre côté, cela ne compromet pas soudainement leurs données car je ne peux toujours pas me connecter en utilisant cette information. Le secret de l'utilisateur est géré par le fournisseur tiers, pas vous. Donc, vous pouvez aussi bien stocker ce qui est le plus pratique (c'est-à-dire une valeur nominale bien connue) - vous pouvez aussi bien désactiver le cryptage du mot de passe sur le fournisseur d'appartenances pour récupérer quelques cycles sur le serveur. Il est inutile de chiffrer/hacher les valeurs qui ne sont pas utilisées pour vérifier l'identité de quiconque.

1

Pourquoi l'adhésion de l'utilisation asp.net alors? Cela ne correspond pas vraiment à ce que vous faites, à savoir l'authentification par une tierce partie. Peut-être que vous pourriez jeter un oeil à la dotnetopenid project et des exemples car ils ont un exemple classique de site asp.net que vous pourriez modifier pour mvc? Ils ont un wiki here Peut-être google dotnetopenid mvc?

+0

J'ai déjà regardé DotNetOpenID; Les exemples MVC sont aussi dans v3.1. Cependant, il ne gère que l'authentification, pas l'autorisation. L'appartenance à ASP.NET semble être la base du système d'autorisation, en particulier l'attribut [Authorize] de MVC. Je ne veux pas mettre en place mon propre système d'autorisation si je peux l'éviter. – alastairs