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()); }
public void EnsureValidResponse(LogoutResponse response, LogoutState state) { if (response.UrlParsingType != UrlParsingType.Query) { var partName = Enum.GetName(typeof(UrlParsingType), UrlParsingType.Query); throw Logger.Exception($"The Logout response was expected in the \"{partName}\" url part"); } EnsureNoErrorsPresent(response); }
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 }; })); }
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 }; })); }
public void EnsureValidState(LogoutResponse response, LogoutState state) { if (response.State.IsEmpty()) { Logger.LogDebug("No logout state in response"); return; } if (state == null) { throw Logger.Exception("Storage does not contain the logout state"); } if (state.State != response.State) { throw Logger.Exception("Logout state does not match with response"); } Logger.LogDebug("Logout state is valid"); }
public void ClientLogoutResponse(LogoutState state) { throw new NotImplementedException(); }
public Task SetLogoutState(LogoutState state) { return(HandleErrors(nameof(SetLogoutState), () => Storage.Set(LogoutStateKey, state))); }