Ich habe eine Webanwendung, die eine WCF-Methode aufruft, deren Identitätswechsel nach Bedarf festgelegt wurde. Bei dieser Methode muss ich einen anderen Webdienst (ASMX) aufrufen, der Sicherheitsgruppen zurückgibt. Das Problem ist, wenn der Identitätswechsel als erforderlich festgelegt ist, erhalte ich einen Fehler, wenn ich versuche, eine Instanz des ASMX-Dienstes zu erstellen.WCF-Identitätswechselfehler beim Aufruf von ASMX
WCF-Service-Methode
[OperationBehavior(Impersonation = ImpersonationOption.Required)]
public List<MacroTypeInfo> GetFilteredMacroDataTypes(MacroDataTypeSection section)
{
// Errors out here
using (var login = new local.intranet.webservices.login())
{
login.getSecurityGroupsForUser(); // Never gets to this line
}
}
Der Fehler, den ich bekommen ist
Either a required impersonation level was not provided, or the provided
impersonation level is invalid. (Exception from HRESULT: 0x80070542)
Gibt es etwas, das ich in der Lage sein tun müssen diese Web-Service-Innenseiten dieser Identitätswechsel erforderlich Methode aufrufen? Sobald ich das OperationBehavior-Attribut entferne, funktioniert der Aufruf.
FWIW Sie sollten ** nie * jemals *** Identitätswechsel verwenden, für * irgendeinen * Grund. –
Können Sie dieses Denken erweitern? – user3726393
Identitätsdiebstahl ist buchstäblich die schlechteste Lösung für Authentifizierung und Autorisierung. Selbst wenn Sie eine zentrale Verwaltung über einen Active Directory-Server zulassen möchten, sollten Sie keinen Identitätswechsel verwenden, den Sie authentifizieren und für den AD-Server als API autorisieren sollten. –