“Relation de confiance entre le ... et le domaine principal a échoué” dans MVC5 Authentification
J'ai un ASP .NET MVC5 application dans laquelle je suis pas à l'aide de l'Authentification Windows.
Tout fonctionnait bien, jusqu'à ce que j'ai essayé de lancer l'application en dehors du Domaine dans lequel il a été mis au point (pour quelque raison que ce soit) un:
The trust relationship between this workstation and the primary domain failed.
quand je suis en train de faire User.IsInRole("Admin")
.
Je suis à l'aide personnalisée Identity
, Role
, IdentityStore
, RoleStore
, etc. partir de .NET Identité
et je peux voir que l'Utilisateur et le Rôle des données récupérées à partir de la (MongoDB) de la base de données correctement.
Il ya beaucoup de questions à propos de cette question, mais ils sont des gens qui voulez utilisation de l'Authentification Windows. et l'emprunt d'identité dans leurs applications MVC:
-
Comment faire pour configurer l'Authentification Windows /usurpation d'identité + IIS 7 + MVC
-
La relation de confiance entre le domaine principal et le domaine de confiance a échoué
-
Mon.De l'utilisateur.IsInRole("Nom de Rôle") renvoie une Relation de Confiance erreur sur Windows 7
Alors, pourquoi suis-je obtenir cette SystemException
si je ne suis pas à l'aide d'Active Directory et (autant que je sache) ne rien faire qui pourrait dépendre sur le PC du domaine? Je manque un peu de configuration (dans mon Web.config
ou IIS Express)?
EDIT:
Ok, donc en fermant un peu...
Mon User.IsInRole("Admin")
ligne est à l'intérieur d'un if()
relevé dans mon _Layout.cshtml
Vue (c'est à dire, de savoir ce qu'il faut montrer de la valeur liquidative. bar en fonction du rôle).
Je sais, maintenant, je seulement obtenir l'erreur ci-dessus lorsque aucun utilisateur n'est pas authentifié et je ne suis pas dans le domaine que j'ai utilisé pour le dev. Si je place un point d'arrêt sur cette ligne, je peux voir que la User
objet est un System.Security.Principal.WindowsIdentity
et de ses sous-jacent Identity
est System.Security.Principal.WindowsIdentity
.
D'autre part, si l'utilisateur est authentifié, puis le User
objet et ts Identity
sont System.Security.Claims.ClaimsPrincipal
et System.Security.Claims.ClaimsIdentity
.
Pourquoi est-il de l'utilisation de Windows Identité (lorsque non authentifié) et comment puis-je le désactiver?
- Quelque part, vous êtes toujours à essayer de se connecter au domaine. Est-il possible que
<authentication mode="Windows" />
est dans votre site web.config? - Je souhaite c'est que je l'ai déjà CTRL+F avais pour cela et "windows". Pas de chance.
- Est-il quelque chose dans votre rôle de fournisseur dépend de Active Directory?
- Je ne le pense pas. Je suis l'aide de Microsoft.AspNet.L'identité (qui a IUser, IUserStore, etc...), de Microsoft.Owin.Sécurité, Système.De sécurité.Les réclamations...
- Ajout d'une ÉDITION à la question qui pourrait aider à réduire le problème.
- Malheureusement, vous êtes sur une oie sauvage chasse. Vérifier le niveau mondial.asax, et le diable l'ensemble de la solution pour toutes les références à
WindowsIdentity
ouWindows
et de voir si les rendements quoi que ce soit. - Pour @user1987392, mais surtout pour les autres, par cette question, la recherche de windows n'est pas suffisant, comme windows est le mode par défaut, au moins dans .Net 4.
- FWIW, tout d'un coup je me suis retrouvé dans l'impossibilité de se connecter dans mon EPiServer site à l'aide des informations d'identification windows. Quand je suis passé à partir de l'authentification par formulaires pour windows, j'ai eu cette erreur dans le navigateur. Il s'est avéré quelque chose doit avoir été corrompu parce que, après re-ajout de ma machine à notre domaine, il a été fixé.
Vous devez vous connecter pour publier un commentaire.
Donc, basé sur mon montage, j'ai modifié mon
_Layout.cshtml
de sorte qu'au lieu d'avoirJ'ai
qui semble résoudre le problème.
Je crois que le problème était que
ASP .NET Identity
utilise un videWindowsIdentity
lorsque aucun utilisateur n'est pas authentifié et quand j'ai essayer de le vérifier pour l'Utilisateur.IsInRole, puis il va essayer de vérifier le rôle de WindowsIdentity contre un Active Directory que je n'ai pas. Évidemment, je dois d'abord vérifier si l'utilisateur est même connecté en avant d'essayer de vérifier ses rôles, de sorte que mea culpa.Mais, même si le changement ci-dessus semble corriger mon code, je serais très intéressé à en savoir plus à propos de ce comportement: pourquoi est-il à l'aide d'un vide
System.Security.Principal.WindowsIdentity
lorsque aucun utilisateur n'est pas authentifié. Je vais accepter toute réponse, ce qui explique que.IsInRole('somerole')
quand les Créances sur l'Identité ne contient pas de ce rôle, l'Identité est Windows, et que le groupe n'existe pas dans le domaine principal, et certains problème de confiance entre autre domaine existe. Je n'ai jamais résolu mon problème. stackoverflow.com/questions/22518243/...User.IsInRole()
si l'utilisateur n'est pas authentifié jeter une erreur. Je n'étais pas à l'aide d'Active Directory à tous donc, malheureusement, je ne sais pas vraiment comment l'aider.J'ai eu ce problème - Il a échoué pour moi si j'ai testé un groupe active directory qui n'existait pas.
Assurez-vous que vous êtes à l'aide d'un groupe qui existe!
La "relation de confiance entre le domaine principal et le poste de travail a message d'erreur" echec usaully exige que le ordinateur être supprimé à partir du domaine et puis il rejoignit. Maintenant, il ya quelques façons de le faire. Comme inclus dans le lien ci-dessus, sont des instructions sur la façon de le faire que ce soit sur l'ordinateur de l'affichage de l'erreur ou à distance. Vous pouvez aussi le faire dans Active Directory et dans PowerShell.
Nous avons eu ce même problème sur un nouveau serveur de production. À l'aide de l'Identité de Cadre et de limiter l'accès à un répertoire spécifique sur le web.fichier de configuration niant toute les utilisateurs non authentifiés. Lorsque les utilisateurs non authentifiés essayé d'accéder à une page dans ce répertoire qui contient de
User.IsInRole("RoleName")
code, ils étaient la "relation de Confiance..." erreur.Aucun des correctifs mentionnés dans les autres, de SORTE réponses a travaillé pour nous.
S'avère que nous avons juste eu à activer l'Authentification par Formulaires dans IIS - le problème est résolu.
J'ai juste réglé dans nos systèmes, malheureusement, aucun de ces autres suggestions ont travaillé pour moi. Le problème a été causé par un orphelin SID dans un dossier réseau, le code a été de tenter d'accès. Une fois retiré, il a commencé à travailler à nouveau.
J'ai eu exactement le même scénario avec un Module d'Authentification personnalisé et le même message d'erreur lorsque vous faites IsInRole. Le classement le plus élevé de la solution d'Utilisateur.L'identité.IsAuthenticated && ...) n'a PAS aidé. Donc, j'ai joué un peu avec elle. Finalement, j'ai trouvé que j'ai dû enlever une (condition="managedHandler") de l'attribut de ma déclaration de module dans le web.fichier de configuration. Ainsi, au lieu de:
Je devrais avoir:
Qui a fait le tour pour moi!
Pour moi, l'ensemble des membres de la configuration du fournisseur de balises manquantes. Après je copie une de nos précédentes applications, il a bien fonctionné.