/// <summary> /// Handles wsignoutcleanup1.0 messages sent to the RemoteSignOutPath /// </summary> /// <returns></returns> protected virtual async Task <bool> HandleRemoteSignOutAsync() { // ToArray handles the StringValues.IsNullOrEmpty case. We assume non-empty Value does not contain null elements. #pragma warning disable CS8620 // Argument cannot be used for parameter due to differences in the nullability of reference types. var message = new WsFederationMessage(Request.Query.Select(pair => new KeyValuePair <string, string[]>(pair.Key, pair.Value.ToArray()))); #pragma warning restore CS8620 // Argument cannot be used for parameter due to differences in the nullability of reference types. var remoteSignOutContext = new RemoteSignOutContext(Context, Scheme, Options, message); await Events.RemoteSignOut(remoteSignOutContext); if (remoteSignOutContext.Result != null) { if (remoteSignOutContext.Result.Handled) { Logger.RemoteSignOutHandledResponse(); return(true); } if (remoteSignOutContext.Result.Skipped) { Logger.RemoteSignOutSkipped(); return(false); } } Logger.RemoteSignOut(); await Context.SignOutAsync(Options.SignOutScheme); return(true); }
/// <summary> /// Handles wsignoutcleanup1.0 messages sent to the RemoteSignOutPath /// </summary> /// <returns></returns> protected virtual async Task <bool> HandleRemoteSignOutAsync() { var message = new WsFederationMessage(Request.Query.Select(pair => new KeyValuePair <string, string[]>(pair.Key, pair.Value))); var remoteSignOutContext = new RemoteSignOutContext(Context, Scheme, Options, message); await Events.RemoteSignOut(remoteSignOutContext); if (remoteSignOutContext.Result != null) { if (remoteSignOutContext.Result.Handled) { Logger.RemoteSignOutHandledResponse(); return(true); } if (remoteSignOutContext.Result.Skipped) { Logger.RemoteSignOutSkipped(); return(false); } } Logger.RemoteSignOut(); await Context.SignOutAsync(Options.SignOutScheme); return(true); }
/// <summary> /// Invoked when a wsignoutcleanup request is received at the RemoteSignOutPath endpoint. /// </summary> public virtual Task RemoteSignOut(RemoteSignOutContext context) => OnRemoteSignOut(context);