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!
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:
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: Ссылка
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.
Ich werfe das hier raus, denn im Moment gibt es einen einfacheren Weg ohne eine neue Klasse zu erstellen, es gibt nur Optionen:
%Vor%Tags und Links asp.net-web-api asp.net oauth oauth-2.0 owin