Ich verfüge über eine OWIN-App, die Benutzer mit Cookie-Authentifizierung authentifiziert. Wenn dies fehlschlägt, versucht sie die WS-Federated-Authentifizierung. Mit anderen Worten, wenn das korrekte Cookie nicht in der anfänglichen Anfrage vorhanden ist, dann gehe zu dem STS und hole das Sicherheitstoken ab.So stellen Sie sicher, dass die ursprüngliche Anforderungs-URL des Benutzers nach der vereinigten WS-Authentifizierung in der OWIN-App verwendet wird
Das Problem, das ich habe, ist sicherzustellen, dass die ursprüngliche URL-Anfrage des Benutzers erfüllt ist, wenn die föderierte Authentifizierung verwendet wird. Dank this post habe ich festgestellt, dass die Umleitungs-URL von der STS zurück zur OWIN-App die "Original" -URL im Abfrageparameter wctx enthält. Das Problem ist, dass dieser Wert, soweit ich sagen kann, mit WsFederationAuthenticationOptions.Wtrealm
(vielleicht Wreply
?) Festgelegt ist. Dies ist ein Problem, da diese Werte in der anfänglichen Konfiguration festgelegt sind. Ich möchte keinen hartcodierten Wert - ich möchte nur die URL, die der Benutzer ursprünglich verwendet hat (z. B. IOwinContext.Request.Uri
). Die Dokumentation für Wtrealm
und Wreply
erklärt nicht, was die Werte sein sollten.
Ich dachte, ich sneakily Wtrealm
auf die Anfrage URL des Benutzers einstellen könnte, bevor der STS Umleitung, aber anscheinend ist es bereits durch die Zeit RedirectToIdentityProvider
Benachrichtigung eingestellt angehoben wird:
RedirectToIdentityProvider = context =>
{
context.Options.Wtrealm = context.Request.Uri.ToString();
}
Wer weiß, was der richtige Ansatz ist, ? Gibt es eine Möglichkeit, Wtrealm
in der ursprünglichen Konfiguration die Anfrage URL des Benutzers zu machen? Oder ist Wtrealm
nicht, was ich denke, und ich sollte das auf eine andere Weise nähern?