2017-07-19 6 views
1

認証でシステムプロキシ設定を変更しようとしています。システムプロキシは正常に変更できますが、私のアプリケーションが再起動されると、認証ダイアログ(ユーザー名とパスワードが必要です)が常にポップアップします。システムプロキシを1回限りの認証で変更する

どのようにして一度だけ認証することができますか?

私はGitHubの上でソースコードとデモアプリケーションを持っている:https://github.com/codinn/SystemProxySettingsDemo

詳細:

デモアプリの説明

システムのプロキシ設定を変更するためのデモを。クリックした後

問題

「システムのプロキシを有効にする」、罰金である、auhorizationを要求するためのダイアログがポップアップ表示され、それ以降のクリックが再びポップアップしません。 しかし、アプリを終了して再起動すると、承認ダイアログが再度ポップアップします。

私たちはどのようにして一度だけ認証することができますか?システムのネットワーク設定でSOCKSプロキシ設定が

  • なります

    ステップ

    1. 起動デモアプリ「SystemProxySettingsDemo」を再現するために
    2. クリックして、ボタン、「システムのプロキシを有効にする」、auhorizatingダイアログがポップアップされますホストに変更:127.0.0.1、ポート:8888
    3. 「システムプロキシを無効にする」ボタンをクリックしてシステムネットワーク環境設定プロキシをクリアします
    4. アプリを終了し、 https://github.com/codinn/SystemProxySettingsDemo
    5. アップルの公式サンプル:https://developer.apple.com/library/content/samplecode/EvenBetterAuthorizationSample/Introduction/Intro.html
    6. クリックして「システムのプロキシを有効にする」ボタンを獲得し、auhorizatingダイアログは、再び enter image description here

    参照

    1. GitHubのリポジトリをポップアップ表示されます
    2. ファイル "ViewController.swift":認可参照の作成、認可要求、システムネットワークPrプロキシ設定を参照してください。

    関数を定義:

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

    4.ファイル「CommonAuthorization.swift」:セット/取得許可ポリシーデータベースエントリ 5.ファイル「codinnDemoRightRemove。SH AuthorizationRightSetとして 『タイムアウト『(ポリシーデータベースルールの属性を設定する』」:私はポリシーデータベースへの認証の権利を格納しようとした

    1. :明確な政策のデータベース項目は、アプリに

      その他の注意事項をデモするために属しています』 0、または3600、または属性「タイムアウト」を削除しても動作しない)

    2. 「AuthorizationRightSet」のパラメータ「rightDefinition」の値として「kAuthorizationRuleClassAllow」または「kAuthorizationRuleAuthenticateAsAdmin」を使用してみましたが、機能しませんいずれか
  • 答えて

    1

    これらの設定を変更する永続的な許可を維持する最善の方法は、rootとして実行されるlaunchdデーモンを作成することです。このようなデーモンは、システム管理の設定をいつでも変更することができます。
    アップルサンプル参照先:EvenBetterAuthorizationSample

    関連する問題