2017-09-15 6 views
0

Dieser hat mich für eine Weile jetzt, ich versuche, eine Konsole App zu bauen, die einen .net Web/wcf Service SP anrufen kann, das erste Bein ist, ein Token vom idP (ADFS4. 0) der eingefügte Code funktionierte gut für einen ganzen Tag, irgendwann er gestoppt wurde mit folgendem Fehler arbeiten:SSPI Verhandlung gescheitert WSTrustChannelFactory

SOAP security negotiation with 'https://adfs.domain.in/adfs/services/trust/13/windowsmixed' for target 'https://adfs.domain.in/adfs/services/trust/13/windowsmixed' failed. See inner exception for more details.

der innere Fehler ist:

The Security Support Provider Interface (SSPI) negotiation failed.
NativeErrorCode: 0x80090350 -> SEC_E_DOWNGRADE_DETECTED

Ich habe versucht/13/Windows und/windowstransport sowie den Endpunkt.

private static GenericXmlSecurityToken RequestSecurityToken() 
{ 
    // set up the ws-trust channel factory 
    var factory = new Microsoft.IdentityModel.Protocols.WSTrust.WSTrustChannelFactory(new WindowsWSTrustBinding(
       SecurityMode.TransportWithMessageCredential), new EndpointAddress(new Uri("https://adfs.domain.in/adfs/services/trust/13/windowsmixed"), EndpointIdentity.CreateSpnIdentity("[email protected]"))); 
    factory.TrustVersion = TrustVersion.WSTrust13; 
    var rst = new RequestSecurityToken 
    { 
     RequestType = RequestTypes.Issue, 
     KeyType = KeyTypes.Bearer, 
     AppliesTo = new System.ServiceModel.EndpointAddress(endpoint_address) 
    }; 
    // request token and return 
    return factory.CreateChannel().Issue(rst) as GenericXmlSecurityToken; 
} 

Antwort

0

In meinem Fall aus irgendeinem Grunde war die ADFS über VPN zur Verfügung, aber die AD-basierte Authentifizierung Bits geschieht nicht über VPN. Deshalb kommt SEC_E_DOWNGRADE_DETECTED. In einer normalen Nicht-VPN-Umgebung sind die Dinge gut.

Eine weitere Beobachtung ist, dass SAML-Token über ein normales Unternehmensnetzwerk generiert werden. Nachfolgende Aufrufe zum Generieren des SAML-Tokens werden wie erwartet ausgeführt, auch auf VPN.

Wenn Sie diesen Fehler sehen, überprüfen Sie einfach, ob das Netzwerk, in dem Sie sich befinden, Teil der Domäne (und nicht des öffentlichen oder privaten Netzwerks) für SSPI-Aushandlung ist.