2014-02-09 11 views
8

Ich verwende erfolgreich die Bearer-Token-Authentifizierung für die asp.net-Web-API, wie in der standardmäßigen Einzelseiten-Anwendungsvorlage gezeigt. Aber jetzt möchte ich die gleiche Web-API von einer anderen Seite (eine andere URL) verwenden.OWIN AuthorizeEndpoint mit redirect_uri anders als uri von web api

Wenn ich eine Anfrage an Web-API AuthorizeEndpoint machen (Standard /api/Konto-/ExternalLogin) aus verschiedenen Website, erhalte ich Fehler: invalid_request. Ich schätze, das Problem liegt im redirect_uri-Wert, da das Ändern des Werts der Website, die auf derselben Domäne wie die Web-API ausgeführt wird, das Problem löst.

ValidateClientRedirectUri Methode in Anwendung OAuthAuthorizationServerProvider nicht gefeuert werden. Also basierend auf meiner Suche in Katana Quelle ist der Fehler Ursprung in OAuthAuthorizationServerHandler.InvokeAuthorizeEndpointAsync.

Hat jemand andere die gleichen Probleme oder mache ich etwas falsch?

+0

Ich renne in das gleiche Problem. Haben Sie jemals eine richtige Lösung gefunden? –

+1

habe ich nicht. Am Ende habe ich eine benutzerdefinierte Erweiterung für OAuthAuthorizationServerProvider geschrieben und diesen anstelle des impliziten Grant-Flusses verwendet. Wenn Sie mehr Informationen darüber benötigen, kann ich es teilen. Aber ich bemerkte diesen Artikel nach: [http://www.asp.net/aspnet/overview/owin-and-katana/owin-oauth-20-authorization-server](http://www.asp.net/aspnet/Übersicht/owin-and-katana/owin-oauth-20-Autorisierungsserver). Ich hatte noch keine Zeit, es zu lesen, aber vielleicht gibt es etwas Nützliches. – uross

Antwort

3

Die Katana OAuth-Middleware wurde nicht als Cross-Application entwickelt - sie dient hauptsächlich zum "Einbetten" eines OAuth-Autorisierungsservers in die Geschäftsressource.

Wenn du einen (frei) Autorisierungsserver wollen - schauen Sie hier: https://github.com/thinktecture/Thinktecture.AuthorizationServer/wiki

+0

Danke für die schnelle Antwort. Nur um klarzustellen. Es ist nicht möglich, ein Zugriffstoken für eine Web-API-Anwendung, die Katana OAuth-Middleware verwendet, von einer anderen Anwendung (mit oauth implicit flow) zu erhalten (mit Facebook als Identity-Provider)? – uross

+0

Ich weiß nicht, ob das nicht möglich ist. Aber ich weiß natürlich, dass es nicht für diesen Anwendungsfall entworfen wurde. – leastprivilege

+0

Einfach nicht wahr, es ist sehr nützlich beim Teilen von Sets und Ressourcen-APIs. – Max

-1

Der Träger Token erscheint ein Hash in einen Hash-Ansprüche zu sein, die auf Ihre Anwendung lokal ist.

Wir verwenden ein JWT-Token mit einem separaten Validierungshandler. Arbeitet über Anwendung.

Noch auf der Suche nach einem besseren Weg, aber jetzt funktioniert es.