2013-02-06 1 views
0

Sécurité Noob ici. J'essaie de passer de l'abonnement asp.net à l'adhésion à Umbraco. Mais l'utilisation de passwordFormat = "Encrypted" semble crypter différemment entre le fournisseur d'appartenance Umbraco et le fournisseur d'appartenances SQL de Microsoft.Mots de passe cryptés dans ASP.net SQLMembershipProvider et fournisseur d'appartenance Umbraco

Si j'inscris deux utilisateurs avec le fournisseur d'appartenances SQL (avec passwordFormat = "Encrypted") - les mots de passe codés sont différents. Si je fais la même chose avec le fournisseur Umbraco, ils sont les mêmes.

Alors que toutes les chaînes déchiffrent la même chose (le mot de passe correct) - Je ne peux apparemment pas utiliser les mots de passe chiffrés par le fournisseur d'appartenances SQL dans la DB umbraco (ValidateUser échoue).

Vous avez des idées?

Remarque: J'utilise la même machineKey sur les deux sites. Editer: Appeler EncryptPassword() et EncodePassword() sur le fournisseur d'appartenance Umbraco donne des résultats différents - et EncodePassword est le bon à appeler. Mais EncodePassword n'est pas disponible sur le fournisseur d'appartenance .NET. C'était une autre partie de ma confusion.

+2

Les mots de passe peuvent être différents car ils sont salés. Vérifiez la colonne PasswordSalt dans la base de données d'adhésion, il devrait s'agir d'une chaîne Base64. – Infotekka

+0

@Infotekka après beaucoup de réflexion, je suis assez sûr que c'est parce que .NET a des sels et Umbraco ne le fait pas. Je n'ai pas réalisé que le cryptage (pas de hachage) peut utiliser un sel (principalement parce que je ne savais pas comment il pourrait revenir au texte d'origine sans connaître le sel). Et maintenant, faire un bon test - si je change le sel, il ne me laissera pas me connecter. Alors c'est tout! –

+0

@Infotekka maintenant j'ai vérifié, voulez-vous faire une vraie réponse et je vais le corriger - merci pour la clarté! –

Répondre

1

Les mots de passe peuvent être différents car ils sont salés. Vérifiez la colonne PasswordSalt dans la base de données d'adhésion, il devrait s'agir d'une chaîne Base64.

0

Les mots de passe Umbraco sont hachés à l'aide de la classe System.Security.Cryptography.HMACSHA1. Je suppose que vous pourriez hacher les mots de passe des utilisateurs de l'adhésion SQL avec HMACSHA1 et l'appeler bien. Pour plus de détails, voir Add User with hashed password pour plus de détails.

+0

Il utilise le cryptage, pas de hachage. J'en suis sûr à 100% parce que je peux décrypter les chaînes de la base de données (ce qui ne serait pas possible avec les hachages). –

+0

@IanGrainger, 'UmbracoMembershipProvider' a 'passwordFormat' défini sur' Hashed' par défaut, sauf si vous l'avez défini sur' Encrypted'. –

+0

Oui, j'avais utilisé Encrypted. –

Questions connexes