【问题标题】:Showing Password Prompt Only Once - How to?仅显示一次密码提示 - 如何?
【发布时间】:2010-10-20 23:08:24
【问题描述】:

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

目标: 应用程序要求用户输入一次密码曾经,往后的应用程序不会提示输入密码。

次佳: 应用程序启动时应用程序要求用户输入密码一次,应用程序在应用程序重新启动之前不会提示输入密码。

我知道授权服务和创建一个专门处理修改特权文件的守护程序的可能性,我很好奇的是我列出的任何一个目标在潜水之前是否甚至可能对另一个系统太深入了。

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

干杯, 达斯汀

【问题讨论】:

    标签: cocoa security permissions authorizationservices


    【解决方案1】:

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

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

    如果您想澄清答案中的任何步骤,请随时询问,但是我已经在我的书Professional Cocoa Application Security 中写了关于特权分离的这两个方面的内容,所以请随意购买一两本;-)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-16
      • 1970-01-01
      • 1970-01-01
      • 2016-04-14
      • 2023-03-25
      • 2018-11-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多