Delegierungstoken erstellen - kann keinen SecurityTokenService erstellen

8

Ich versuche ein System zu erstellen, das mit ADFS und Claims arbeitet. Im Moment ist dies nur eine "Spielzeug" -Implementierung.

Ich habe eine sehr einfache MVC-Webanwendung erstellt, sie mithilfe des Assistenten "Identität und Zugriff ..." in Visual Studio eingerichtet, um mit einem ADFS 2.0-Server zu sprechen und sie auf einem IIS-Server bereitzustellen. Alles funktioniert gut, und ich kann die erhaltenen Ansprüche prüfen und auflisten.

Der nächste Schritt besteht darin, einen Web-API-basierten REST-Dienst zu erstellen (der Back-End-Dienste darstellt, von denen die MVC-Anwendung abhängig ist). Daher möchte ich die Anmeldeinformationen an diesen Back-End-Server weitergeben geeignete Autorisierungsentscheidungen treffen.

Also ist der erste Schritt für mich, das Delegierungstoken zu erstellen (und ich werde dann hoffentlich herausfinden, was damit in Bezug auf die Klasse HttpClient zu tun ist, um den Rest anzurufen). Ich habe das:

%Vor%

Aber das Problem ist, dass SecurityTokenService abstrakt ist. Ich kann keine Typen finden, die von dieser Klasse entweder in System.IdentityModel noch in System.IdentityModel.Services abgeleitet sind, und das oben genannte enthält keinen Verweis auf den ADFS-Server, den ich offensichtlich irgendwann bereitstellen muss.

Natürlich kann ich auch den falschen Weg gehen, oder ich stoße nur auf einen kleinen Stolperstein und sehe keinen größeren, der in der Ferne auftaucht. Daher wäre jeder Ratschlag auch zu schätzen.

>

Ich habe mir zum Beispiel das Identitätsdelegationsszenario angesehen, das aber% verwendet. co_de%, was meiner Meinung nach nicht funktionieren wird, wenn ich mit einem Rest-Service rede (oder will ich es?), und scheint auch nicht auf .NET 4.5 zutreffen.

    
Damien_The_Unbeliever 29.05.2012, 07:18
quelle

3 Antworten

3

Ich fordere Token von einem ADFS 2.0 zum Caching und Betrachten des DisplayToken. Vielleicht kann Ihnen das dabei helfen, loszulegen.

Hier ist was ich machen kann:

%Vor%

Sie müssen möglicherweise den UsernameMixed-Endpunkt in Ihrem ADFS 2.0 aktivieren, wenn Sie ihn verwenden möchten, und vergessen Sie nicht, den Dienst danach neu zu starten!

    
flayn 06.06.2012, 13:32
quelle
1

Von msdn

Um einen STS zu erstellen, müssen Sie von der SecurityTokenService-Klasse abgeleitet werden. In Ihrer benutzerdefinierten Klasse müssen Sie mindestens die Methoden GetScope und GetOutputClaimsIdentity überschreiben.

    
Evgeni 05.06.2012 16:39
quelle
1

Nicht sicher, wie viel Ihnen das hilft, aber Sie sollten keinen SecurityTokenService erstellen. Sie erstellen hier kein neues Token, und Ihre Anwendung soll nicht als STS fungieren - dafür steht der AD FS.
Ihre Anwendung sollte das vom AD FS empfangene Token nur an den Dienst delegieren (das Konzept ist in dem Link von msdn beschrieben, den Sie in Ihrer Frage angegeben haben).

Ich denke, es gibt eine gute Chance, dass die Web-API dies auch unterstützen wird, da sie auf der Grundlage von wcf und vom http-Standpunkt aus aufgebaut ist - es gibt keinen Grund, warum sie keine WS-Föderation / SAML 2-Token unterstützt.

>

BEARBEITEN:
Dies video (beginnend mit 35: 00 + -) zeigt einen Weg, ich denke, zu implementieren, was Sie suchen, mit Ws-Federation saml Token. ich rate es auch mit einem saml2 token

    
YavgenyP 05.06.2012 17:02
quelle