private string BuildAuthenticationUrl(LogoutParameters parameters, LogoutState state) { return(new UrlBuilder(parameters.EndSessionEndpoint) .Add("post_logout_redirect_uri", parameters.RedirectUri) .Add("id_token_hint", parameters.IdTokenHint, parameters.RedirectUri.IsNotEmpty()) .Add("state", state.State) .Add(parameters.AdditionalParameters) .ToString()); }
private void EnsureValidParameters(LogoutParameters parameters) { HandleErrors(nameof(EnsureValidParameters), () => { if (parameters.EndSessionEndpoint.IsEmpty()) { throw Logger.Exception("No End Session Endpoint passed"); } }); }
public LogoutRequest CreateLogoutRequest(LogoutParameters parameters) { return(HandleErrors(nameof(CreateLogoutRequest), () => { var state = new LogoutState { State = new Crypto().CreateUniqueHexadecimal(32) }; var url = BuildAuthenticationUrl(parameters, state); return new LogoutRequest { Url = url, State = state, Parameters = parameters }; })); }
private void EnsureValidParameters(LogoutParameters parameters) { HandleErrors(nameof(EnsureValidParameters), () => { if (parameters.EndSessionEndpoint.IsEmpty()) { throw Logger.Exception("No End Session Endpoint passed"); } if (Settings.StorageType.IsMemory() && parameters.InteractionType.IsRedirect()) { throw Logger.Exception("Interaction type cannot be redirect using memory storage"); } }); }
public LogoutRequest CreateLogoutRequest(LogoutParameters parameters) { return(HandleErrors(nameof(CreateLogoutRequest), () => { var requestState = CreateOidcRequestState(new Crypto(), parameters.StateData); var state = new LogoutState { State = Base64Url.Serialize(requestState, "oidc logout request state") }; var url = BuildLogoutUrl(parameters, state); return new LogoutRequest { Url = url, State = state, Parameters = parameters }; })); }