【问题标题】:Changing system proxy with authorizing once and for all一劳永逸地更改系统代理
【发布时间】:2017-07-19 06:18:47
【问题描述】:

我正在尝试使用身份验证更改系统代理设置。系统代理可以更改成功,但是当我的应用重新启动时,总​​是弹出授权对话框(需要用户名和密码)。

我怎样才能一劳永逸地授权?

我在 GitHub 上有一个带有源代码的演示应用程序:https://github.com/codinn/SystemProxySettingsDemo

详情:

演示应用说明

更改系统代理设置的演示。

问题

点击“启用系统代理”后,会弹出请求授权的对话框,后续点击不会再弹出,没关系。 但是如果我们退出并重新启动应用程序,授权对话框将再次弹出。

我们怎样才能一劳永逸地授权?

复制步骤

  1. 启动演示应用“SystemProxySettingsDemo”
  2. 点击“启用系统代理”按钮,会弹出授权对话框
  3. 系统网络首选项中的 SOCKS 代理设置将更改为主机:127.0.0.1,端口:8888
  4. 点击“禁用系统代理”按钮清除系统网络首选项代理
  5. 退出应用,然后重新启动
  6. 点击“启用系统代理”按钮,再次弹出授权对话框

参考文献

  1. GitHub 存储库:https://github.com/codinn/SystemProxySettingsDemo
  2. 苹果官方样品:https://developer.apple.com/library/content/samplecode/EvenBetterAuthorizationSample/Introduction/Intro.html
  3. 文件“ViewController.swift”:创建授权参考、请求授权、系统网络首选项代理设置。

函数定义:

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

4。文件“CommonAuthorization.swift”:设置/获取授权策略数据库条目 5. 文件“codinnDemoRightRemove.sh”:清除策略数据库条目属于演示应用

其他说明:

  1. 我尝试使用“AuthorizationRightSet”将授权权限存储到策略数据库(将策略数据库规则属性“超时”设置为 0 或 3600,或删除属性“超时”),但它不起作用李>
  2. 还尝试使用“kAuthorizationRuleClassAllow”或“kAuthorizationRuleAuthenticateAsAdmin”作为函数“AuthorizationRightSet”的参数“rightDefinition”的值,但它也不起作用

【问题讨论】:

    标签: macos configuration authorization system


    【解决方案1】:

    保持持久授权以更改这些设置的最佳方法是创建一个以 root 身份运行的启动守护程序。这样的守护进程可以随时更改系统配置首选项,无需进一步授权。
    苹果样品参考:EvenBetterAuthorizationSample

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-25
      • 2016-07-20
      • 2017-06-16
      • 1970-01-01
      • 2016-09-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多