Spec-Zone .ru
спецификации, руководства, описания, API

Библиотека разработчика Mac

Разработчик

Ссылочные службы авторизации концепции безопасности C ссылка

Опции
Развертывание Target:

На этой странице
Язык:

Службы авторизации C ссылка

Authorization Services является API, упрощающий управление доступом в ограниченные области операционной системы и позволяющий Вам ограничивать доступ пользователя к определенным функциям в Вашем приложении Mac. Authorization Services используется в

  • программное обеспечение, ограничивающее доступ к его собственным инструментам

  • приложения та система вызова инструменты

  • установщики программного обеспечения, устанавливающие привилегированные инструменты или требующие доступа к ограниченным областям операционной системы

Сопутствующий объем к Ссылке Authorization Services C Выполняет Привилегированные Операции С Authorization Services, объясняющей понятия позади авторизации и обеспечивающей примеры того, как использовать Authorization Services. Методы Objective C, которые эквивалентны нескольким из функций в этом документе, описаны в Ссылке Objective C Authorization Services.

Authorization Services доступна в OS X v10.0 и позже как часть Концепции безопасности.

Функции

  • Создает новую ссылку авторизации и предоставляет возможность авторизовывать или предварительно авторизовывать права.

    Объявление

    Swift

    func AuthorizationCreate(_ rights: UnsafePointer<AuthorizationRights>, _ environment: UnsafePointer<AuthorizationEnvironment>, _ flags: AuthorizationFlags, _ authorization: UnsafeMutablePointer<AuthorizationRef>) -> OSStatus

    Objective C

    OSStatus AuthorizationCreate ( const AuthorizationRights *rights, const AuthorizationEnvironment *environment, AuthorizationFlags flags, AuthorizationRef *authorization );

    Параметры

    rights

    Указатель на ряд прав авторизации Вы создаете. Передача NULL если приложение не требует никаких прав в это время.

    environment

    AuthorizationItemSet структура, используемая при авторизации или предварительной авторизации прав.

    Не используемый в OS X v10.2 и ранее.

    В OS X v10.3 и позже, можно передать значок или запросить данные использоваться в поле диалога аутентификации.

    В OS X v10.4 и позже, можно также передать имя пользователя и пароль для авторизации пользователя без взаимодействия с пользователем. Возможные значения для этого параметра перечислены в Security.framework/Headers/AuthorizationTags.h.

    Данные, переданные в этом параметре, не хранятся в ссылке авторизации; это используется только во время авторизации. Если Вы не передаете данных в этом параметре, передаете константу kAuthorizationEmptyEnvironment.

    Для списка возможных ключей в наборе авторизации посмотрите Бейджи. Для самой структуры данных посмотрите AuthorizationItemSet.

    flags

    Немного маски для указания опций авторизации. Используйте следующие наборы опции.

    • Передайте константу kAuthorizationFlagDefaults если никакие опции не необходимы.

    • Укажите kAuthorizationFlagExtendRights маска для запроса прав. Можно также указать kAuthorizationFlagInteractionAllowed маска для разрешения взаимодействия с пользователем.

    • Укажите kAuthorizationFlagPartialRights и kAuthorizationFlagExtendRights маски для запроса частичных прав. Можно также указать kAuthorizationFlagInteractionAllowed маска для разрешения взаимодействия с пользователем.

    • Укажите kAuthorizationFlagPreAuthorize и kAuthorizationFlagExtendRights маски, чтобы предварительно авторизовать права.

    • Укажите kAuthorizationFlagDestroyRights маска, чтобы препятствовать тому, чтобы Сервер безопасности сохранил права, полученные во время этого вызова.

    authorization

    Указатель на ссылку авторизации. По возврату этот параметр относится к сеансу авторизации, который создает Сервер безопасности. Передача NULL если Вы требуете функционального результата, но никакой ссылки авторизации.

    Возвращаемое значение

    Код результата. Посмотрите Коды Результата Authorization Services.

    Обсуждение

    Основная цель этой функции состоит в том, чтобы создать непрозрачную ссылочную структуру авторизации, связанную со ссылкой авторизации. Вы используете ссылку авторизации в других функциях авторизации.

    Можно использовать эту функцию для авторизации всех или частичных прав. Авторизация прав с этой функцией является самой полезной для приложений, требующих однократной авторизации. Путем передачи NULL к authorization параметр, Сервер безопасности пытается авторизовать требуемые права и возвращает надлежащий код результата, фактически не предоставляя права. Если Вы не собираетесь вызывать какие-либо другие функции авторизации, используйте этот метод, чтобы определить, есть ли у пользователя авторизация, не предоставляя прав.

    Можно также использовать эту функцию, чтобы предварительно авторизовать права путем указания kAuthorizationFlagPreAuthorize маска. Когда право имеет нулевой тайм-аут, предварительная авторизация является самой полезной. Например, можно предварительно авторизовать в приложении и если оно успешно выполняется, вызовите инструмент помощника и запросите авторизацию. Если пользователь не может позже авторизовать указанные права, это устраняет вызов инструмента помощника.

    Если Вы не указываете kAuthorizationFlagPartialRights маска и Сервер безопасности отклоняют по крайней мере одно право, тогда состояние этой функции по возврату errAuthorizationDenied.

    Если Вы не указываете kAuthorizationFlagInteractionAllowed маска и Сервер безопасности требуют взаимодействия с пользователем, тогда состояние этой функции по возврату errAuthorizationInteractionNotAllowed.

    Если Вы указываете kAuthorizationFlagInteractionAllowed маска и пользователь отменяют процесс аутентификации, тогда состояние этой функции по возврату errAuthorizationCanceled.

    Когда для Вашего приложения больше не будет нужна ссылка авторизации, используйте функцию AuthorizationFree освободить память связалось с ним.

    Оператор импорта

    Objective C

    @import Security;

    Swift

    import Security

    Доступность

    Доступный в OS X v10.0 и позже.

  • Освобождает память, связанную со ссылкой авторизации.

    Объявление

    Swift

    func AuthorizationFree(_ authorization: AuthorizationRef, _ flags: AuthorizationFlags) -> OSStatus

    Objective C

    OSStatus AuthorizationFree ( AuthorizationRef authorization, AuthorizationFlags flags );

    Параметры

    authorization

    Ссылка авторизации на свободный.

    flags

    Немного маски. В большинстве случаев передайте константу kAuthorizationFlagDefaults. Для удаления всех совместно используемых и несовместно используемых полномочий передайте константу kAuthorizationFlagDestroyRights.

    Возвращаемое значение

    Код результата. Посмотрите Коды Результата Authorization Services.

    Обсуждение

    Вызовите эту функцию, когда для Вашего приложения больше не нужна ссылка авторизации, Вы создали использование функции AuthorizationCreate.

    Оператор импорта

    Objective C

    @import Security;

    Swift

    import Security

    Доступность

    Доступный в OS X v10.0 и позже.

  • Авторизовывает и предварительно авторизовывает права.

    Объявление

    Swift

    func AuthorizationCopyRights(_ authorization: AuthorizationRef, _ rights: UnsafePointer<AuthorizationRights>, _ environment: UnsafePointer<AuthorizationEnvironment>, _ flags: AuthorizationFlags, _ authorizedRights: UnsafeMutablePointer<UnsafeMutablePointer<AuthorizationRights>>) -> OSStatus

    Objective C

    OSStatus AuthorizationCopyRights ( AuthorizationRef authorization, const AuthorizationRights *rights, const AuthorizationEnvironment *environment, AuthorizationFlags flags, AuthorizationRights **authorizedRights );

    Параметры

    authorization

    Ссылка авторизации, относящаяся к сеансу авторизации.

    rights

    Указатель на ряд прав авторизации Вы создаете. Передача NULL если приложение не требует никаких прав в это время.

    environment

    Данные, используемые при авторизации или предварительной авторизации прав. Не используемый в OS X v10.2 и ранее. В OS X v10.3 и позже, можно передать значок или запросить данные использоваться в поле диалога аутентификации. В OS X v10.4 и позже, можно также передать имя пользователя и пароль для авторизации пользователя, не выводя на экран поле диалога аутентификации. Возможные значения для этого параметра перечислены в Security.framework/Headers/AuthorizationTags.h. Данные, переданные в этом параметре, не хранятся в ссылке авторизации; это используется только во время авторизации. Если Вы не передаете данных в этом параметре, передаете константу kAuthorizationEmptyEnvironment.

    flags

    Немного маски для указания опций авторизации. Используйте следующие наборы опции.

    • Передайте константу kAuthorizationFlagDefaults если никакие опции не необходимы.

    • Укажите kAuthorizationFlagExtendRights маска для запроса прав. Можно также указать kAuthorizationFlagInteractionAllowed маска для разрешения взаимодействия с пользователем.

    • Укажите kAuthorizationFlagPartialRights и kAuthorizationFlagExtendRights маски для запроса частичных прав. Можно также указать kAuthorizationFlagInteractionAllowed маска для разрешения взаимодействия с пользователем.

    • Укажите kAuthorizationFlagPreAuthorize и kAuthorizationFlagExtendRights маски, чтобы предварительно авторизовать права.

    • Укажите kAuthorizationFlagDestroyRights маска, чтобы препятствовать тому, чтобы Сервер безопасности сохранил права, полученные во время этого вызова.

    authorizedRights

    Указатель на недавно выделенный AuthorizationRights структура. По возврату эта структура содержит права, предоставленные Концепцией безопасности. Если Вы не запрашиваете эту информацию, передачу NULL. Если Вы указываете kAuthorizationFlagPreAuthorize маска в flags параметр, метод возвращает все требуемые права, включая не предоставленных, но флаги прав, которые не могли быть предварительно авторизованы, включают kAuthorizationFlagCanNotPreAuthorize бит.

    Освободите память, связанную с этим набором путем вызывания функции AuthorizationFreeItemSet.

    Возвращаемое значение

    Код результата. Посмотрите Коды Результата Authorization Services.

    Обсуждение

    Существует три главных причины использовать эту функцию. Первая причина состоит в том, чтобы предварительно авторизовать права путем указания kAuthorizationFlagPreAuthorize, kAuthorizationFlagInteractionAllowed, и kAuthorizationFlagExtendRights маски как опции авторизации. Когда право имеет нулевой тайм-аут, предварительная авторизация является самой полезной. Например, можно предварительно авторизовать в приложении и если оно успешно выполняется, вызовите инструмент помощника и запросите авторизацию. Если Сервер безопасности не может позже авторизовать указанные права, это устраняет вызов инструмента помощника.

    Вторая причина использовать эту функцию состоит в том, чтобы авторизовать права прежде, чем выполнить привилегированную работу путем указания kAuthorizationFlagInteractionAllowed, и kAuthorizationFlagExtendRights маски как опции авторизации.

    Третья причина использовать эту функцию состоит в том, чтобы авторизовать частичные права. Путем указания kAuthorizationFlagPartialRights, kAuthorizationFlagInteractionAllowed, и kAuthorizationFlagExtendRights маски как опции авторизации, Сервер безопасности предоставляет все права, которые он может авторизовать. По возврату авторизованный набор содержит все права.

    Если Вы не указываете kAuthorizationFlagPartialRights маска и Сервер безопасности отклоняют по крайней мере одно право, тогда состояние этой функции по возврату errAuthorizationDenied.

    Если Вы не указываете kAuthorizationFlagInteractionAllowed маска и Сервер безопасности требуют взаимодействия с пользователем, тогда состояние этой функции по возврату errAuthorizationInteractionNotAllowed.

    Если Вы указываете kAuthorizationFlagInteractionAllowed маска и пользователь отменяют процесс аутентификации, тогда состояние этой функции по возврату errAuthorizationCanceled.

    Оператор импорта

    Objective C

    @import Security;

    Swift

    import Security

    Доступность

    Доступный в OS X v10.0 и позже.

  • Получает данные боковой полосы, такие как имя пользователя и другая информация, собранная во время оценки авторизации.

    Объявление

    Swift

    func AuthorizationCopyInfo(_ authorization: AuthorizationRef, _ tag: AuthorizationString, _ info: UnsafeMutablePointer<UnsafeMutablePointer<AuthorizationItemSet>>) -> OSStatus

    Objective C

    OSStatus AuthorizationCopyInfo ( AuthorizationRef authorization, AuthorizationString tag, AuthorizationItemSet **info );

    Параметры

    authorization

    Ссылка авторизации, относящаяся к сеансу авторизации.

    tag

    Строка авторизации, указывающая тип данных Сервер безопасности, должна возвратиться. Передача NULL получать всю доступную информацию.

    info

    Указатель на авторизацию установил Сервер безопасности, создает. По возврату этот набор содержит данные авторизации боковой полосы. Когда этот набор больше не будет необходим, освободите память, связанную с ним путем вызывания функции AuthorizationFreeItemSet.

    Возвращаемое значение

    Код результата. Посмотрите Коды Результата Authorization Services.

    Обсуждение

    Плагин авторизации может сохранить результаты операции аутентификации путем вызова SetContextValue функция. Можно использовать AuthorizationCopyInfo функция для получения этой информации.

    Оператор импорта

    Objective C

    @import Security;

    Swift

    import Security

    Доступность

    Доступный в OS X v10.0 и позже.

  • Освобождает память, связанную с набором авторизации.

    Объявление

    Swift

    func AuthorizationFreeItemSet(_ set: UnsafeMutablePointer<AuthorizationItemSet>) -> OSStatus

    Objective C

    OSStatus AuthorizationFreeItemSet ( AuthorizationItemSet *set );

    Параметры

    set

    Указатель на набор авторизации к свободному.

    Возвращаемое значение

    Код результата. Посмотрите Коды Результата Authorization Services.

    Обсуждение

    Когда для Вашего приложения больше не нужны наборы элемента авторизации, создаваемые Сервером безопасности в функциях AuthorizationCopyRights и AuthorizationCopyInfo, необходимо вызвать эту функцию для освобождения его.

    Оператор импорта

    Objective C

    @import Security;

    Swift

    import Security

    Доступность

    Доступный в OS X v10.0 и позже.

  • Создает внешнее представление ссылки авторизации.

    Объявление

    Swift

    func AuthorizationMakeExternalForm(_ authorization: AuthorizationRef, _ extForm: UnsafeMutablePointer<AuthorizationExternalForm>) -> OSStatus

    Objective C

    OSStatus AuthorizationMakeExternalForm ( AuthorizationRef authorization, AuthorizationExternalForm *extForm );

    Параметры

    authorization

    Ссылка авторизации, относящаяся к сеансу авторизации.

    extForm

    Указатель на внешнюю ссылку авторизации. По возврату это указывает на внешнее представление ссылки авторизации.

    Возвращаемое значение

    Код результата. Посмотрите Коды Результата Authorization Services.

    Обсуждение

    Эта функция создает внешнее представление ссылки авторизации так, чтобы можно было передать ее между процессами. Полномочия связываются сеансом, процессом и ограничениями по времени, таким образом, Вы не можете сохранить ссылку авторизации для другого процесса для использования. Вместо этого необходимо создать внешнее представление ссылки авторизации и передать ее надежно другому процессу. Используйте функцию AuthorizationCreateFromExternalForm усваивать внешнее представление ссылки авторизации.

    Если необходимо для Вашего приложения выполнить некоторые привилегированные операции, это - хорошая практика программирования для изоляции всех привилегированных операций в отдельном процессе, называемом инструментом помощника (см. Руководство по программированию Authorization Services для подробных данных). В этом случае необходимо передать ссылку авторизации на инструмент помощника так, чтобы Authorization Services могла сказать, что инструмент помощника работает от имени приложения. Выполнение так позволяет диалоговому окну авторизации показывать путь Вашего приложения, а не путь к инструменту помощника, и это позволяет системе определять, должно ли диалоговое окно авторизации иметь клавиатурный фокус.

    Оператор импорта

    Objective C

    @import Security;

    Swift

    import Security

    Доступность

    Доступный в OS X v10.0 и позже.

  • Усваивает внешнее представление ссылки авторизации.

    Объявление

    Swift

    func AuthorizationCreateFromExternalForm(_ extForm: UnsafePointer<AuthorizationExternalForm>, _ authorization: UnsafeMutablePointer<AuthorizationRef>) -> OSStatus

    Objective C

    OSStatus AuthorizationCreateFromExternalForm ( const AuthorizationExternalForm *extForm, AuthorizationRef *authorization );

    Параметры

    extForm

    Указатель на внешнее представление ссылки авторизации Вы получаете от обработки вызовов.

    authorization

    Указатель на ссылку авторизации. По возврату это указывает на локальную копию ссылки авторизации. Сервер безопасности выделяет ссылку авторизации для Вас, таким образом, Вы не должны вызывать функцию AuthorizationCreate.

    Возвращаемое значение

    Код результата. Посмотрите Коды Результата Authorization Services.

    Обсуждение

    При передаче ссылки авторизации между процессами используйте эту функцию для усвоения внешнего представления ссылки авторизации, Вы создали использование функции AuthorizationMakeExternalForm.

    Оператор импорта

    Objective C

    @import Security;

    Swift

    import Security

    Доступность

    Доступный в OS X v10.0 и позже.

  • Получает правильное определение как словарь.

    Объявление

    Swift

    func AuthorizationRightGet(_ rightName: UnsafePointer<Int8>, _ rightDefinition: UnsafeMutablePointer<Unmanaged<CFDictionary>?>) -> OSStatus

    Objective C

    OSStatus AuthorizationRightGet ( const char *rightName, CFDictionaryRef *rightDefinition );

    Параметры

    rightName

    Символьная строка ASCII, представляющая правильное имя. Подстановочные имена права допустимы.

    rightDefinition

    Ссылка на словарь. По возврату это указывает на словарь ключей, определяющих право. Передача NULL проверки, если определяется право. Необходимо выпустить память, используемую возвращенным словарем.

    Возвращаемое значение

    Код результата. Посмотрите Коды Результата Authorization Services.

    Обсуждение

    Вам не нужна ссылка авторизации для использования этой функции, потому что база данных правил управления является читаемым миром.

    Оператор импорта

    Objective C

    @import Security;

    Swift

    import Security

    Доступность

    Доступный в OS X v10.3 и позже.

  • Создает или обновляет правильную запись в базе данных правил управления.

    Объявление

    Swift

    func AuthorizationRightSet(_ authRef: AuthorizationRef, _ rightName: UnsafePointer<Int8>, _ rightDefinition: AnyObject!, _ descriptionKey: CFString!, _ bundle: CFBundle!, _ localeTableName: CFString!) -> OSStatus

    Objective C

    OSStatus AuthorizationRightSet ( AuthorizationRef authRef, const char *rightName, CFTypeRef rightDefinition, CFStringRef descriptionKey, CFBundleRef bundle, CFStringRef localeTableName );

    Параметры

    authRef

    Допустимая ссылка авторизации раньше авторизовывала модификации.

    rightName

    Символьная строка ASCII, представляющая правильное имя. База данных правил управления не принимает подстановочные имена права.

    rightDefinition

    Или CFDictionary, содержащий ключи, определяющие правила или CFString представление имени другого права, правила которого Вы хотите копировать. Посмотрите Policy Database Constants для некоторых возможных значений.

    descriptionKey

    Ссылка CFString, используемая в качестве ключа для поиска локализованных описаний. Если никакая локализация не найдена, это - само описание. Этот параметр является дополнительным; передача NULL если Вы не требуете его.

    bundle

    Пакет для получения локализаций, от если не основной пакет. Этот параметр является дополнительным; передача NULL если Вы не требуете его.

    localeTableName

    Представление CFString имени таблицы, от которого можно получить локализации. Этот параметр является дополнительным; передача NULL если у Вас нет локализаций, или Вы хотите использовать локализации, доступные в Локэлизэбле.стрингсе.

    Возвращаемое значение

    Код результата. Посмотрите Коды Результата Authorization Services.

    Обсуждение

    Право, которое Вы создаете, должно быть явным правом без подстановочных знаков. Подстановочные права для использования системными администраторами для конфигурации сайта.

    Можно использовать эту функцию, чтобы создать новое право или изменить существующее право. Например:

    • AuthorizationRightSet(NULL, "com.ifoo.ifax.send",
    • CFSTR(kAuthorizationRuleIsAdmin), CFSTR("Authorize sending of a fax"), NULL, NULL);

    добавляет правило для разрешения администраторам отправить факсы. Этот пример создает названное право “com.ifoo.ifax.send” и устанавливает правила, чтобы потребовать, чтобы пользователь был администратором при помощи kAuthorizationRuleIsAdmin постоянный. Этот пример также устанавливает комментарий, чтобы позволить системному администратору знать, что право разрешает администраторов отправлять факс.

    Поскольку первый параметр NULL, новое AuthorizationRef объект создают внутренне и избавляются. Если Вам нужно к дальнейшему использованию AuthorizationRef объект (например, при вызове AuthorizationExecuteWithPrivileges), необходимо явно создать объект и передать его в как первый параметр AuthorizationRightSet, тогда освободите его с вызовом к AuthorizationFree.

    Для указания дополнительных атрибутов для права можно передать CFDictionary введите rightDefinition параметр как показано в следующем примере.

    • CFStringRef keys[2] = {CFSTR(kRightRule), CFSTR(kRightComment)};
    • CFStringRef values[2] = {CFSTR(kAuthorizationRuleIsAdmin), CFSTR("authorizes sending of 1 fax message")};
    • AuthorizationRef authRef;
    • CFDictionaryRef aDict;
    • aDict = CFDictionaryCreate(NULL, (void *)keys, (void *)values, 2, &kCFCopyStringDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
    • AuthorizationCreate(NULL, NULL, 0, &authRef);
    • AuthorizationRightSet(authRef, "com.ifoo.ifax.send", aDict, CFSTR("Authorize sending of a fax"), NULL, NULL);
    • CFRelease(aDict);
    • ...
    • AuthorizationFree(authRef, kAuthorizationFlagDefaults);

    Этот вызов создает то же право как прежде, но добавляет определенный правильный комментарий к определению правил.

    При указании комментариев необходимо быть определенными о том, что необходимо авторизовать. Например, средние значения доказательства, требуемого для kAuthorizationRuleAuthenticateAsAdmin (имя пользователя и пароль), не должен быть включен здесь, так как то правило могло бы быть сконфигурировано по-другому.

    Оператор импорта

    Objective C

    @import Security;

    Swift

    import Security

    Доступность

    Доступный в OS X v10.3 и позже.

  • Удаляет право из базы данных правил управления.

    Объявление

    Swift

    func AuthorizationRightRemove(_ authRef: AuthorizationRef, _ rightName: UnsafePointer<Int8>) -> OSStatus

    Objective C

    OSStatus AuthorizationRightRemove ( AuthorizationRef authRef, const char *rightName );

    Параметры

    authRef

    Допустимая ссылка авторизации раньше авторизовывала модификации.

    rightName

    Символьная строка ASCII, представляющая правильное имя. Эта функция не принимает подстановочные имена права.

    Возвращаемое значение

    Код результата. Посмотрите Коды Результата Authorization Services.

    Обсуждение

    Право, которое Вы удаляете, должно быть явным правом без подстановочных знаков. Подстановочные права для использования системными администраторами для конфигурации сайта.

    Оператор импорта

    Objective C

    @import Security;

    Swift

    import Security

    Доступность

    Доступный в OS X v10.3 и позже.

  • Выполняет исполнимый инструмент с полномочиями пользователя root.

    Объявление

    Objective C

    OSStatus AuthorizationExecuteWithPrivileges ( AuthorizationRef authorization, const char *pathToTool, AuthorizationFlags options, char *const *arguments, FILE **communicationsPipe );

    Параметры

    authorization

    Ссылка авторизации, относящаяся к сеансу авторизации.

    pathToTool

    Полный путь POSIX инструмента для выполнения.

    options

    Зарезервированные опции. Передайте kAuthorizationFlagDefaults постоянный.

    arguments

    Вектор argv-стиля строк (массив завершенных нулем char * указатели, заканчивающиеся Указателем Нулевого) для отправки к инструменту. (Вы не должны передавать имя команды как первый параметр.)

    communicationsPipe

    Указатель на файловую структуру. Сервер безопасности создает файл, открывает его для чтения и записи, и подключает его к стандартному вводу и выводу инструмента. По возврату необходимо закрыться и избавиться от этого использования файла fclose когда Ваша коммуникация завершена. Передача NULL если Вам не нужен канал передачи.

    Возвращаемое значение

    Код результата. Посмотрите Коды Результата Authorization Services.

    Обсуждение

    Эта функция позволяет Вам выполнить инструмент, который Вы указываете в pathToTool параметр как отдельный, привилегированный процесс. Новый процесс будет работать с полномочиями пользователя root независимо от полномочий процесса вызова. Новый процесс может получить ссылку авторизации путем вызывания функции AuthorizationCopyPrivilegedReference. Параметры Вы передаете в arguments параметр передается к новому процессу argv параметр. Ряд дескрипторов файлов соединяется со стандартным вводом и выводом нового процесса так, чтобы Ваш процесс мог связаться с новым процессом.

    Чтобы проверить, разрешен ли пользователь выполнить эту работу, необходимо предварительно авторизовать kAuthorizationRightExecute право. Посмотрите AuthorizationItem для описания того, какая информация включена в элемент авторизации для этого права.

    Специальные замечания

    Необходимо использовать эту функцию только, чтобы позволить установщикам работать как корень и позволять a setuid инструмент для восстановления setuid бит, если потеряно. Эта функция работает, только если Сервер безопасности устанавливает соответствующие полномочия.

    Эта функция излагает проблему безопасности, потому что она без разбора выполнит любой инструмент или приложение, сильно увеличивая угрозу безопасности. Необходимо избежать использования этой функции, если это возможно. Одна альтернатива должна разделить Ваш код на две части — приложение и setuid инструмент. Приложение вызывает setuid инструмент с помощью стандартных методов. setuid инструмент может тогда выполнить привилегированные операции. Если инструмент проигрывает, его setuid укусил, используйте AuthorizationExecuteWithPrivileges функционируйте для восстановления его. Факторинг Ваша программа минимизирует использование этой функции и снижает риск вреда. Считайте Внутренний OS X: Выполнение Привилегированных Операций С Authorization Services.

    Обратите внимание на то, что эта функция уважает бит setuid, если это установлено. Т.е. если инструмент, который Вы выполняете, будет иметь свой setuid набор битов и свой набор владельца к foo, то инструмент будет выполняться с пользовательскими полномочиями foo’s, не полномочиями пользователя root. Гарантировать что Ваш вызов к AuthorizationExecuteWithPrivileges функционируйте работы, как предназначено, удостоверьтесь setuid бит инструмента, который Вы хотите выполнить, очищен перед вызовом AuthorizationExecuteWithPrivileges выполнить инструмент.

    Оператор импорта

    Objective C

    @import Security;

    Доступность

    Доступный в OS X v10.0 и позже.

    Осуждаемый в OS X v10.7.

  • Получает ссылку авторизации, мимо которой проходят AuthorizationExecuteWithPrivileges функция.

    Объявление

    Objective C

    OSStatus AuthorizationCopyPrivilegedReference ( AuthorizationRef *authorization, AuthorizationFlags flags );

    Параметры

    authorization

    Указатель на ссылку авторизации. Сервер безопасности выделяет ссылку авторизации для Вас, таким образом, Вы не должны вызывать функцию AuthorizationCreate. По возврату это указывает на копию ссылки авторизации, привыкшей в вызове к AuthorizationExecuteWithPrivileges функция.

    flags

    Зарезервированные опции. Передайте kAuthorizationFlagDefaults постоянный.

    Возвращаемое значение

    Код результата. Посмотрите Коды Результата Authorization Services.

    Обсуждение

    Эта функция получает ссылку авторизации, которую Вы передаете в функции AuthorizationExecuteWithPrivileges. Новый процесс может использовать ссылку авторизации для проверки полномочий, полученных обработкой вызовов.

    Оператор импорта

    Objective C

    @import Security;

    Доступность

    Доступный в OS X v10.0 и позже.

    Осуждаемый в OS X v10.7.

Типы данных

  • Представляет ряд данных о среде, такой как имя пользователя и другая информация, собранная во время оценки авторизации.

    Объявление

    Swift

    typealias AuthorizationEnvironment = AuthorizationItemSet

    Objective C

    typedef AuthorizationItemSet AuthorizationEnvironment;

    Оператор импорта

    Objective C

    @import Security;

    Swift

    import Security

    Доступность

    Доступный в OS X v10.0 и позже.

  • Внешнее представление ссылки авторизации.

    Объявление

    Objective C

    struct AuthorizationExternalForm { char bytes[kAuthorizationExternalFormLength]; };

    Поля

    bytes

    Массив символов, представляющих внешнюю форму ссылки авторизации.

    Обсуждение

    Ссылки авторизации связываются сеансом, процессом и ограничениями по времени, таким образом, Вы не можете сохранить ссылки авторизации для другого процесса для использования. Используйте функции AuthorizationMakeExternalForm и AuthorizationCreateFromExternalForm воплощать и усваивать ссылку авторизации. Приложения должны заботиться для не раскрытия внешней ссылки авторизации на потенциальных атакующих, так как любой процесс может использовать эту внешнюю ссылку авторизации для доступа к ссылке авторизации.

  • Представляет немного маски опций авторизации.

    Объявление

    Swift

    typealias AuthorizationFlags = UInt32

    Objective C

    typedef UInt32 AuthorizationFlags;

    Обсуждение

    Посмотрите Опции Авторизации для описания масок, которые можно использовать.

    Оператор импорта

    Objective C

    @import Security;

    Swift

    import Security

    Доступность

    Доступный в OS X v10.0 и позже.

  • Содержит информацию о праве авторизации или среде авторизации.

    Объявление

    Swift

    struct AuthorizationItem { var name: AuthorizationString var valueLength: UInt var value: UnsafeMutablePointer<Void> var flags: UInt32 }

    Objective C

    typedef struct { AuthorizationString name; UInt32 valueLength; void *value; UInt32 flags; }AuthorizationItem;

    Поля

    name

    Требуемое имя права авторизации или данных среды. Имя права - что-то, что Вы создаете. Необходимо назвать права в стиле подобными именам пакета Java. Например, "com.myOrganization.myProduct.myRight". Установите это поле в kAuthorizationRightExecute при запросе права на использование в функции AuthorizationExecuteWithPrivileges.

    Посмотрите Security.framework/Headers/AuthorizationTags.h заголовочный файл для возможных значений для данных среды.

    valueLength

    32-разрядное целое число без знака, представляющее число байтов в value поле. Установите valueLength поле к 0 если Вы устанавливаете value поле к NULL.

    value

    Указатель на информацию, имеющую отношение name поле. Например, если name поле установлено в значение, представленное константой kAuthorizationRightExecute, тогда установите value поле к полному пути POSIX инструмента Вы хотите выполниться. В большинстве других случаев, набор это поле к NULL.

    flags

    Зарезервированные биты опции. Набор к 0.

    Обсуждение

    При использовании элемента авторизации для содержания права установите name поле к имени права — например, "com.myOrganization.myProduct.myRight", valueLength и flags поля к 0, и value поле к NULL. Для получения дополнительной информации об именовании прав считайте Руководство по программированию Authorization Services

    При использовании элемента авторизации для AuthorizationExecuteWithPrivileges функция, набор name поле к kAuthorizationRightExecute, и flags поле к 0. Установите value поле к полному пути POSIX инструмента для выполнения и valueLength поле к длине байта значения в value поле.

    При использовании элемента авторизации для содержания данных среды установите name поле к имени данных среды — например, kAuthorizationEnvironmentUsername— и flags поле к 0. Установите value поле, в этом случае, к фактическому имени пользователя и valueLength поле к длине байта значения в value поле.

    Доступность

    Доступный в OS X v10.0 и позже.

  • Представляет ряд элементов авторизации.

    Объявление

    Swift

    struct AuthorizationItemSet { var count: UInt32 var items: UnsafeMutablePointer<AuthorizationItem> }

    Objective C

    typedef struct { UInt32 count; AuthorizationItem *items; }AuthorizationItemSet;

    Поля

    count

    Число элементов в items массив.

    items

    Указатель на массив элементов авторизации. Если count больше, чем 1, items точки к первому элементу в массиве таких элементов. Необходимо установить этот параметр на NULL при отсутствии элементов.

    Доступность

    Доступный в OS X v10.0 и позже.

  • Представляет указатель на непрозрачную ссылочную структуру авторизации.

    Объявление

    Swift

    typealias AuthorizationRef = COpaquePointer

    Objective C

    typedef const struct AuthorizationOpaqueRef* AuthorizationRef;

    Обсуждение

    Этот тип данных указывает на структуру на использование Сервера безопасности, чтобы хранить информацию о сеансе авторизации. Используйте функции, описанные в Функциях Authorization Services, чтобы создать, получить доступ, и освободить ссылку авторизации.

    Оператор импорта

    Objective C

    @import Security;

    Swift

    import Security

    Доступность

    Доступный в OS X v10.0 и позже.

  • Представляет ряд прав авторизации.

    Объявление

    Swift

    typealias AuthorizationRights = AuthorizationItemSet

    Objective C

    typedef AuthorizationItemSet AuthorizationRights;

    Оператор импорта

    Objective C

    @import Security;

    Swift

    import Security

    Доступность

    Доступный в OS X v10.0 и позже.

  • Представляет завершенную нулем строку в кодировании UTF-8.

    Объявление

    Swift

    typealias AuthorizationString = UnsafePointer<Int8>

    Objective C

    typedef const char* AuthorizationString;

    Оператор импорта

    Objective C

    @import Security;

    Swift

    import Security

    Доступность

    Доступный в OS X v10.0 и позже.

Константы

  • Определите допустимые опции авторизации.

    Объявление

    Swift

    var kAuthorizationFlagDefaults: Int { get } var kAuthorizationFlagInteractionAllowed: Int { get } var kAuthorizationFlagExtendRights: Int { get } var kAuthorizationFlagPartialRights: Int { get } var kAuthorizationFlagDestroyRights: Int { get } var kAuthorizationFlagPreAuthorize: Int { get } var kAuthorizationFlagNoData: Int { get }

    Objective C

    enum { kAuthorizationFlagDefaults = 0, kAuthorizationFlagInteractionAllowed = (1 << 0), kAuthorizationFlagExtendRights = (1 << 1), kAuthorizationFlagPartialRights = (1 << 2), kAuthorizationFlagDestroyRights = (1 << 3), kAuthorizationFlagPreAuthorize = (1 << 4), kAuthorizationFlagNoData = (1 << 20) };

    Константы

    • kAuthorizationFlagDefaults

      kAuthorizationFlagDefaults

      Если никакие биты не установлены, ни одна из следующих функций не доступна.

      Доступный в OS X v10.0 и позже.

    • kAuthorizationFlagInteractionAllowed

      kAuthorizationFlagInteractionAllowed

      Если бит, указанный этой маской, установлен, Вы разрешаете Серверу безопасности взаимодействовать с пользователем при необходимости.

      Доступный в OS X v10.0 и позже.

    • kAuthorizationFlagExtendRights

      kAuthorizationFlagExtendRights

      Если бит, указанный этой маской, установлен, Сервер безопасности пытается предоставить права, которые требуют. Как только Сервер безопасности отклоняет одно право, он игнорирует остающиеся требуемые права.

      Доступный в OS X v10.0 и позже.

    • kAuthorizationFlagPartialRights

      kAuthorizationFlagPartialRights

      Если бит, указанный этой маской и kAuthorizationFlagExtendRights маска установлена, Сервер безопасности предоставляет или отклоняет права на отдельной основе, и все права проверяются.

      Доступный в OS X v10.0 и позже.

    • kAuthorizationFlagDestroyRights

      kAuthorizationFlagDestroyRights

      Если бит, указанный этой маской, установлен, Сервер безопасности отменяет авторизацию от процесса, а также от любого другого процесса, совместно использующего авторизацию. Если бит, указанный этой маской, не установлен, Сервер безопасности отменяет авторизацию от процесса, но не от других процессов, совместно использующих авторизацию.

      Доступный в OS X v10.0 и позже.

    • kAuthorizationFlagPreAuthorize

      kAuthorizationFlagPreAuthorize

      Если бит, указанный этой маской, установлен, Сервер безопасности предварительно авторизовывает права, которые требуют.

      Доступный в OS X v10.0 и позже.

    • kAuthorizationFlagNoData

      kAuthorizationFlagNoData

      Частные биты. Не использовать.

      Доступный в OS X v10.0 и позже.

    Обсуждение

    Биты, представленные этими масками, сообщают Серверу безопасности, как продолжить с функцией, в которой Вы передаете их. Установите все неиспользованные биты в 0 допускать будущее расширение.

  • Определяет оценивает наборы Сервера безопасности в элементе авторизации flag поле.

    Объявление

    Swift

    var kAuthorizationFlagCanNotPreAuthorize: Int { get }

    Objective C

    enum { kAuthorizationFlagCanNotPreAuthorize = (1 << 0) };

    Константы

    • kAuthorizationFlagCanNotPreAuthorize

      kAuthorizationFlagCanNotPreAuthorize

      Указывает, что Сервер безопасности не мог предварительно авторизовать право.

      Доступный в OS X v10.0 и позже.

    Обсуждение

  • Определяет пустую среду.

    Объявление

    Objective C

    #define kAuthorizationEmptyEnvironment NULL

    Константы

    • kAuthorizationEmptyEnvironment

      kAuthorizationEmptyEnvironment

      Указывает пустую среду. Если у Вас нет данных среды для обеспечения, необходимо передать эту константу в функциях с параметром среды.

      Доступный в OS X v10.0 и позже.

  • Определяет длину байта внешней ссылки авторизации.

    Объявление

    Swift

    var kAuthorizationExternalFormLength: Int { get }

    Objective C

    enum { kAuthorizationExternalFormLength = 32 };

    Константы

    • kAuthorizationExternalFormLength

      kAuthorizationExternalFormLength

      Указывает, в числе байтов, длине массива в AuthorizationExternalForm структура.

      Доступный в OS X v10.0 и позже.

  • Укажите тип данных среды или права.

    Объявление

    Swift

    var kAuthorizationEnvironmentUsername: String { get } var kAuthorizationEnvironmentPassword: String { get } var kAuthorizationEnvironmentShared: String { get } var kAuthorizationRightExecute: String { get } var kAuthorizationEnvironmentPrompt: String { get } var kAuthorizationEnvironmentIcon: String { get }

    Objective C

    #define kAuthorizationEnvironmentUsername "username" #define kAuthorizationEnvironmentPassword "password" #define kAuthorizationEnvironmentShared "shared" #define kAuthorizationRightExecute "system.privilege.admin" #define kAuthorizationEnvironmentPrompt "prompt" #define kAuthorizationEnvironmentIcon "icon"

    Константы

    • kAuthorizationEnvironmentUsername

      kAuthorizationEnvironmentUsername

      Тип для AuthorizationItem содержа имя пользователя.

      Доступный в OS X v10.0 и позже.

    • kAuthorizationEnvironmentPassword

      kAuthorizationEnvironmentPassword

      Тип для AuthorizationItem содержа пароль.

      Доступный в OS X v10.0 и позже.

    • kAuthorizationEnvironmentShared

      kAuthorizationEnvironmentShared

      Тип для AuthorizationItem содержа совместно используемое право.

      Добавление a kAuthorizationEnvironmentShared запись в среде заставляет имя пользователя и пароль быть добавленным к совместно используемому учетному пулу сеанса вызывающего приложения. Это означает, что дальнейшие вызовы другими приложениями в этом сеансе автоматически имеют эти учетные данные в наличии для них.

      Доступный в OS X v10.0 и позже.

    • kAuthorizationRightExecute

      kAuthorizationRightExecute

      Тип для AuthorizationItem запрос права вызвать AuthorizationExecuteWithPrivileges.

      В дополнение к этому праву необходимо получить любые права, инструмент должен выполнить свою работу от Вашего имени. AuthorizationItem должен содержать полный путь инструмента, который Вы хотите выполнить в value и valueLength поля. В будущем мы ограничим право только выполнить запрашиваемый тракт, и мы выведем на экран эту информацию пользователю.

      Доступный в OS X v10.0 и позже.

    • kAuthorizationEnvironmentPrompt

      kAuthorizationEnvironmentPrompt

      Тип для AuthorizationItem содержа имя элемента авторизации, который должен быть передан в среду при указании специфичного для вызова дополнительного текста. Значение должно быть локализованной строкой UTF-8.

      Доступный в OS X v10.3 и позже.

    • kAuthorizationEnvironmentIcon

      kAuthorizationEnvironmentIcon

      Тип для AuthorizationItem содержа имя элемента авторизации, который должен быть передан в среду при указании альтернативного значка. Значение должно быть полным путем к изображению, совместимому с NSImage класс.

      Доступный в OS X v10.3 и позже.

    Обсуждение

    Эти теги являются возможными значениями для name поле элемента авторизации. Это не комплексный набор. Вы определяете имя права запросить. Эти теги среды для будущего использования.

  • Определяет константы для использования в установке прав и правил в базе данных правил управления.

    Объявление

    Swift

    var kAuthorizationRightRule: String { get } var kAuthorizationRuleIsAdmin: String { get } var kAuthorizationRuleAuthenticateAsAdmin: String { get } var kAuthorizationRuleAuthenticateAsSessionUser: String { get } var kAuthorizationRuleClassAllow: String { get } var kAuthorizationRuleClassDeny: String { get } var kAuthorizationComment: String { get }

    Objective C

    #define kAuthorizationRightRule "rule" #define kAuthorizationRuleIsAdmin "is-admin" #define kAuthorizationRuleAuthenticateAsAdmin "authenticate-admin" #define kAuthorizationRuleAuthenticateAsSessionUser "authenticate-session-user" #define kAuthorizationRuleClassAllow “allow” #define kAuthorizationRuleClassDeny “deny” #define kAuthorizationComment "comment”

    Константы

    • kAuthorizationRightRule

      kAuthorizationRightRule

      Указывает ключ делегации правила. Вместо того, чтобы указать точное поведение, некоторые правила поставляются с системой и могут использоваться в качестве правил делегата. Используйте это с любой из констант определения правила делегата.

      Доступный в OS X v10.3 и позже.

    • kAuthorizationRuleIsAdmin

      kAuthorizationRuleIsAdmin

      Указывает определение правила делегата постоянное указание, что пользователь должен быть администратором.

      Доступный в OS X v10.3 и позже.

    • kAuthorizationRuleAuthenticateAsAdmin

      kAuthorizationRuleAuthenticateAsAdmin

      Указывает определение правила делегата постоянное указание, что пользователь должен аутентифицировать как администратор.

      Доступный в OS X v10.3 и позже.

    • kAuthorizationRuleAuthenticateAsSessionUser

      kAuthorizationRuleAuthenticateAsSessionUser

      Указывает определение правила делегата постоянное указание, что пользователь должен аутентифицировать как владелец сеанса (вошел в систему пользователь).

      Доступный в OS X v10.3 и позже.

    • kAuthorizationRuleClassAllow

      kAuthorizationRuleClassAllow

      Указывает определение правила делегата, постоянное, который всегда позволяет указанное право.

      Доступный в OS X v10.3 и позже.

    • kAuthorizationRuleClassDeny

      kAuthorizationRuleClassDeny

      Указывает определение правила делегата, постоянное, который всегда отклоняет указанное право.

      Доступный в OS X v10.3 и позже.

    • kAuthorizationComment

      kAuthorizationComment

      Указывает комментарии для правила. Комментарии, кажется, в базе данных правил управления для администратора понимают то, для чего правило. Комментарии правила не являются тем же как локализованными описаниями, представленными пользователю.

      Доступный в OS X v10.3 и позже.

    Обсуждение

    Можно использовать эти константы при создании или изменении правила в базе данных правил управления с помощью AuthorizationRightSet функция.

Коды результата

Наиболее распространенные коды результата, возвращенные Сервером безопасности, перечислены в таблице ниже.

  • Работа завершилась успешно.

    Значение

    0

    Описание

    Работа завершилась успешно.

    Доступный в OS X v10.0 и позже.

  • set параметр недопустим.

    Значение

    - 60001

    Описание

    set параметр недопустим.

    Доступный в OS X v10.0 и позже.

  • authorization параметр недопустим.

    Значение

    - 60002

    Описание

    authorization параметр недопустим.

    Доступный в OS X v10.0 и позже.

  • tag параметр недопустим.

    Значение

    - 60003

    Описание

    tag параметр недопустим.

    Доступный в OS X v10.0 и позже.

  • authorizedRights параметр недопустим.

    Значение

    - 60004

    Описание

    authorizedRights параметр недопустим.

    Доступный в OS X v10.0 и позже.

  • Сервер безопасности отклонил авторизацию для один или несколько требуемые права. Эта ошибка также возвращается, если не было никакого определения, найденного в базе данных правил управления, или определение не могло бы быть создано.

    Значение

    - 60005

    Описание

    Сервер безопасности отклонил авторизацию для один или несколько требуемые права. Эта ошибка также возвращается, если не было никакого определения, найденного в базе данных правил управления, или определение не могло бы быть создано.

    Доступный в OS X v10.0 и позже.

  • Пользователь отменил работу.

    Значение

    - 60006

    Описание

    Пользователь отменил работу.

    Доступный в OS X v10.0 и позже.

  • Сервер безопасности отклонил авторизацию, потому что не позволяется никакое взаимодействие с пользователем.

    Значение

    - 60007

    Описание

    Сервер безопасности отклонил авторизацию, потому что не позволяется никакое взаимодействие с пользователем.

    Доступный в OS X v10.0 и позже.

  • Произошла нераспознанная внутренняя ошибка.

    Значение

    - 60008

    Описание

    Произошла нераспознанная внутренняя ошибка.

    Доступный в OS X v10.0 и позже.

  • Сервер безопасности отклонил воплощение ссылки авторизации.

    Значение

    - 60009

    Описание

    Сервер безопасности отклонил воплощение ссылки авторизации.

    Доступный в OS X v10.0 и позже.

  • Сервер безопасности отклонил интернализацию ссылки авторизации.

    Значение

    - 60010

    Описание

    Сервер безопасности отклонил интернализацию ссылки авторизации.

    Доступный в OS X v10.0 и позже.

  • flags параметр недопустим.

    Значение

    - 60011

    Описание

    flags параметр недопустим.

    Доступный в OS X v10.0 и позже.

  • Инструменту не удалось выполниться.

    Значение

    - 60031

    Описание

    Инструменту не удалось выполниться.

    Доступный в OS X v10.0 и позже.

  • Попытке выполнить инструмент не удалось возвратить успех или код ошибки.

    Значение

    - 60032

    Описание

    Попытке выполнить инструмент не удалось возвратить успех или код ошибки.

    Доступный в OS X v10.0 и позже.