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:
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.
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!
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
Tags und Links c# visual-studio-2012 .net-4.5 adfs2.0