diff --git a/server/api.go b/server/api.go
index 20b645d1c3c529db18af013ec57391b3159494f5..f59be4ea7cfefd5abdd92928f537595afd7dc41e 100644
--- a/server/api.go
+++ b/server/api.go
@@ -87,11 +87,12 @@ func (d dexAPI) UpdateClient(ctx context.Context, req *api.UpdateClientReq) (*ap
 
 	err := d.s.UpdateClient(req.Id, func(old storage.Client) (storage.Client, error) {
 		if req.RedirectUris != nil && len(req.RedirectUris) > 0 {
-			old.RedirectURIs = mergeSlice(old.RedirectURIs, req.RedirectUris)
+			old.RedirectURIs = req.RedirectUris
 		}
 		if req.TrustedPeers != nil && len(req.TrustedPeers) > 0 {
-			old.TrustedPeers = mergeSlice(old.TrustedPeers, req.TrustedPeers)
+			old.TrustedPeers = req.TrustedPeers
 		}
+		old.Public = req.Public
 		if req.Name != "" {
 			old.Name = req.Name
 		}
@@ -111,23 +112,6 @@ func (d dexAPI) UpdateClient(ctx context.Context, req *api.UpdateClientReq) (*ap
 	return &api.UpdateClientResp{}, nil
 }
 
-func mergeSlice(s1 []string, s2 []string) []string {
-	isPresent := func(i string, s []string) bool {
-		for _, j := range s {
-			if j == i {
-				return true
-			}
-		}
-		return false
-	}
-	for _, i := range s2 {
-		if !isPresent(i, s1) {
-			s1 = append(s1, i)
-		}
-	}
-	return s1
-}
-
 func (d dexAPI) DeleteClient(ctx context.Context, req *api.DeleteClientReq) (*api.DeleteClientResp, error) {
 	err := d.s.DeleteClient(req.Id)
 	if err != nil {
diff --git a/server/api_test.go b/server/api_test.go
index 209dabd6a56f086bdaeba67a3399be853d6fc6f5..7e77a01093d1eb93c071b7d6c1adf40fedc17ab8 100644
--- a/server/api_test.go
+++ b/server/api_test.go
@@ -461,42 +461,3 @@ func find(item string, items []string) bool {
 	}
 	return false
 }
-
-func TestMergeSlice(t *testing.T) {
-	tests := map[string]struct {
-		s1   []string
-		s2   []string
-		want []string
-	}{
-		"merge slice": {
-			s1:   []string{"t1", "t2"},
-			s2:   []string{"t3"},
-			want: []string{"t1", "t2", "t3"},
-		},
-		"merge slice with duplicates": {
-			s1:   []string{"t1", "t2"},
-			s2:   []string{"t3", "t2"},
-			want: []string{"t1", "t2", "t3"},
-		},
-		"merge slice with empty slice": {
-			s1:   []string{"t1", "t2"},
-			s2:   []string{},
-			want: []string{"t1", "t2"},
-		},
-	}
-
-	for name, tc := range tests {
-		t.Run(name, func(t *testing.T) {
-			got := mergeSlice(tc.s1, tc.s2)
-			if len(got) != len(tc.want) {
-				t.Errorf("expected equal slice")
-			}
-			for _, want := range tc.want {
-				found := find(want, got)
-				if !found {
-					t.Errorf("missing element: %s", want)
-				}
-			}
-		})
-	}
-}