仅显示密码提示一次 - 如何?

时间:2010-10-20 14:58:42

标签: cocoa security permissions authorizationservices

我正在构建一个Cocoa应用程序,用于修改用户操作系统上需要管理员权限的文件。我有一个使用authopen的概念证明工作,但它没有提供我希望实现的UX体验。每次修改文件时,都会提示用户输入密码。有没有办法在应用程序生命周期内授予应用程序权限?

目标: 应用程序一旦 要求用户输入密码,应用程序就不会提示输入密码。

下一个最佳: 应用程序启动时,应用程序会在启动时询问用户密码,在应用程序重新启动之前,应用程序不会提示输入密码。

我知道授权服务以及创建专门用于修改特权文件的守护进程的可能性,我很好奇的是,如果在潜水之前我列出的目标之一甚至太深入另一个系统。

非常感谢任何建议,批评或有用的链接。

干杯, 达斯汀

1 个答案:

答案 0 :(得分:2)

是的,使用授权服务是前进的方向。您可以通过AuthorizationCopyRights()(如果需要显示UI)在应用程序中获得AuthorizationRef,并将其传递给您的帮助程序(通过将其打包成外部表单),该程序在执行特权任务之前验证它是否真正获得了必要的权限。 。授权服务能够在/etc/authorization数据库中注册权限,因此如果您选择自定义权限,您可以选择允许谁获取它的默认设置,存在超时或其他条件等等。

要部署特权帮助工具,您应该使用服务管理框架,特别是SMJobBless(),它在将帮助程序部署为launchd作业之前验证客户端和帮助程序上的代码签名标识是否匹配。然后,您的帮助程序可以由主应用程序按需启动。

请随意询问您是否需要澄清答案中的任何步骤,但我已经在我的书Professional Cocoa Application Security中写过关于权限分离的这两个方面,所以请随意购买一两个副本;-)

相关问题