moyen sécurisé d'authentifier l'administrateur sur le site ASP.NET en utilisant OpenID avec DotNetOpenID

StackOverflow https://stackoverflow.com/questions/56944

  •  09-06-2019
  •  | 
  •  

Question

Encouragé par SO, j'essaie d'écrire un site ASP.NET qui utilise OpenID pour l'authentification des utilisateurs.C'est un site WinForms classique (pas MVC.NET), utilisant le DotNetOpenId bibliothèque pour l'authentification.

Est-il sécuritaire pour moi d'autoriser/refuser les fonctions administratives sur le site en comparant simplement le "ClamedID" de la session en cours (tel que renvoyé dans l'événement OpenIdLogin_LoggedIn, en tant que membre DotNetOpenId.RelyingParty,OpenIdEventArgs.Response.ClamedIdentifier) ​​à l'OpenID d'un administrateur connu (c'est-à-direle mien)?

Si tel est le cas, est-il sécuritaire que cet identifiant soit visible (par ex.dans le code open source), ou doit-il être "caché" dans un fichier de configuration ou une ligne de base de données ?(Je sais qu'il est préférable de le rendre configurable, ma question concerne uniquement la sécurité.)

Était-ce utile?

La solution

Jarrett fait quelques bons commentaires sur l'utilisation des tables de base de données.

Juste pour répondre à une autre de vos questions, non, ce n'est pas une question de confidentialité de mettre votre OpenID dans votre code en général.Si la configuration des rôles semble excessive pour votre site, une simple vérification de l'égalité par rapport à votre ClaimedIdentifier est tout simplement parfaite.

Autres conseils

Ma solution est de suivre la même idée du tableau des rôles.Après avoir authentifié l'utilisateur, recherchez les rôles de cet utilisateur.Si l'utilisateur a le rôle « Administrateur » dans la table UserRoles, il peut alors faire tout ce que l'administrateur peut faire.

Je ne diffuse pas d'Open ID dans mon application.Ils sont stockés dans la table.À chaque résultat d'action, j'accède à la table Utilisateurs, car j'ai également modifié la mienne pour stocker diverses informations sur l'état de l'utilisateur.À l'exception de la page d'accueil, j'aurai besoin de certaines informations utilisateur provenant de ce tableau.J'utilise LINQ, j'inclus donc le .LoadWith() pour charger l'utilisateur avec sa liste de rôles lors de la sérialisation.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top