OAuth2 WebApi-Token-Ablauf

9

Ich versuche, eine Token-Ablaufzeit dynamisch festzulegen, aber es scheint, dass sie standardmäßig auf 20 Minuten beschränkt bleibt.

Hier ist meine ConfigureAuth:

%Vor%

Hier ist meine Methode GrantResourceOwnerCredentials:

%Vor%

Und hier ist meine SetProperties-Methode, mit der ich den Ablauf festlegen kann:

%Vor%

Auch danach kehrt das Token zurück:

%Vor%

Irgendwelche Ideen, warum ich den Ablauf nicht festlegen kann, wo ich gerade bin? Dieser Server wird eine Vielzahl von verschiedenen Clients mit unterschiedlichen Ablaufzeiten verwenden, daher dachte ich, dass dies der richtige Ort ist. Gibt es woanders, wo ich das machen sollte? Danke!

    
user3726393 13.11.2015, 20:41
quelle

4 Antworten

5

Das angezeigte Verhalten wird direkt dadurch verursacht, dass der OAuth2-Autorisierungsserver immer Ihren eigenen Ablauf verwirft, wenn Sie ihn in der GrantResourceOwnerCredentials -Benachrichtigung festlegen (die anderen Grant* -Benachrichtigungen sind ebenfalls) beeinflusst): Ссылка

Eine Umgehung ist, das Ablaufdatum in zu setzen AuthenticationTokenProvider.CreateAsync (die Klasse, die Sie für OAuthAuthorizationServerOptions.AccessTokenProvider verwenden):

Setzen Sie einfach context.Ticket.Properties.ExpiresUtc mit dem Ablaufdatum Ihrer Wahl und es sollte wie vorgesehen funktionieren:

%Vor%

Sie können auch AspNet.Security.OpenIdConnect.Server betrachten, eine Verzweigung des von OWIN / Katana angebotenen OAuth2-Autorisierungsservers, die nativ die Einstellung des Ablaufdatums von GrantResourceOwnerCredentials unterstützt: Ссылка

    
Pinpoint 16.11.2015, 18:34
quelle
10

Wir haben eine ähnliche Situation mit verschiedenen Clients, die unterschiedliche Token-Timeouts haben, also wollten wir das Ablaufdatum entsprechend einstellen können. Im AuthenticationTokenProvider, den wir implementiert haben, haben wir das Ablaufdatum festgelegt, aber es wurde von dem Zeitpunkt überschrieben, zu dem das Token signiert wurde.

Die Lösung, mit der wir glücklich waren, war die TokenEndpoint-Methode. Wir sind dann in der Lage, einen kundenspezifischen Ablauf zu implementieren:

%Vor%

* Bearbeitet, um eine Wettlaufbedingung zu lösen.

    
Michael 13.04.2016 22:24
quelle
2

Sie können es in der Methode TokenEndPoint anstelle von GrantResourceOwnerCredentials setzen. Bitte sehen Sie meine Antwort auf eine ähnliche Frage hier .

Ich hoffe, es hilft.

    
jumuro 17.11.2015 18:20
quelle
1

Ich werfe das hier raus, denn im Moment gibt es einen einfacheren Weg ohne eine neue Klasse zu erstellen, es gibt nur Optionen:

%Vor%     
Erti-Chris Eelmaa 05.12.2015 19:13
quelle