2017-07-19 1 views
1

J'essaie de modifier les paramètres du proxy système avec l'authentification. Le proxy du système peut être modifié avec succès, mais lorsque mon application est relancée, la boîte de dialogue d'authentification (nécessitant un nom d'utilisateur et un mot de passe) apparaît toujours.Changement de proxy système avec autorisation une fois pour toutes

Comment puis-je autoriser une fois pour toutes?

J'ai une démo App avec des codes source sur GitHub: https://github.com/codinn/SystemProxySettingsDemo

détails:

App Demo Description

Une démo pour modifier les paramètres de proxy du système.

Problème

Après avoir cliqué « Activer le système de proxy », une boîte de dialogue pour demander auhorization sera sauté vers le haut, et clics ne seront pas à nouveau PopUp, ce qui est bien. Mais si nous quittons et relançons l'application, la boîte de dialogue d'authentification apparaîtra à nouveau.

Comment pouvons-nous autoriser une fois pour toutes?

Procédure pour reproduire

  1. Lancer application de démonstration « SystemProxySettingsDemo »
  2. Cliquez sur le bouton « Activer le proxy système », la boîte de dialogue de auhorizating sera sauté vers le haut
  3. Le paramètre proxy SOCKS dans les préférences du réseau du système sera modifié en hôte: 127.0.0.1, port: 8888
  4. Cliquez sur le bouton "Désactiver le proxy du système" pour effacer les préférences réseau du système. proxy
  5. Quittez l'application et lancez-la. gagner
  6. Cliquez sur le bouton « Activer le proxy système », la boîte de dialogue de auhorizating sera sauté vers le haut, encore une fois enter image description here

Références

  1. dépôt GitHub: https://github.com/codinn/SystemProxySettingsDemo
  2. échantillon officiel d'Apple: https://developer.apple.com/library/content/samplecode/EvenBetterAuthorizationSample/Introduction/Intro.html
  3. Fichier "ViewController.swift": création d'une référence d'autorisation, demande d'autorisation, système réseau Pr eferences Paramètres proxy.

Fonction définir:

// requesting authorization with “AuthorizationCopyRights” 
// set system network preferences proxy with “SCPreferencesCreateWithAuthorization” and “SCPreferencesPathSetValue” 
func socksProxySet(enabled: Bool)` 

4. Fichier « CommonAuthorization.swift »: set/get entrées de la base de la politique d'autorisation 5. Fichier « codinnDemoRightRemove.sh »: les entrées de la base de données de politique claire appartient à la démo app

Autres Notes:

  1. J'ai essayé stocker l'autorisation des droits à la base de données de la politique avec « AuthorizationRightSet »(paramétrage des attributs de la règle de base de données de politique « délai d'attente » comme 0, ou 3600, ou supprimer l'attribut "timeout"), mais cela ne fonctionne pas
  2. Également essayé en utilisant "kAuthorizationRuleClassAllow" ou "kAuthorizationRuleAuthenticateAsAdmin" comme valeur pour le paramètre "rightDefinition" de la fonction "AuthorizationRightSet", mais cela ne fonctionne pas soit

Répondre

1

La meilleure façon de conserver une autorisation permanente pour modifier ces paramètres consiste à créer un démon launchd qui s'exécute en tant que root. Un tel démon peut modifier les préférences de configuration du système à tout moment sans autre autorisation. Référence de l'échantillon de pomme: EvenBetterAuthorizationSample