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());
 }
示例#2
0
 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");
                }
            });
        }
示例#5
0
        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
                };
            }));
        }