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

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

Разработчик

Ссылочная ссылка плагина авторизации концепции безопасности

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

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

Ссылка плагина авторизации

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

Плагины авторизации являются доступным запуском в OS X v10.4.

Необходимо считать этот документ, если необходимо расширить службы авторизации OS X, чтобы выполнить полномочия по-новому или проводить новую политику, которая слишком сложна, чтобы быть реализованной полностью с базой данных политики авторизации.

Организация этого документа

Этот документ состоит из введения и ссылки на плагин авторизации API. Это содержит следующие разделы:

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

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

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

  • Типы данных Плагина авторизации описывают структуры и другие типы данных, определенные в AuthorizationPlugin.h.

  • Константы Плагина авторизации описывают константы, определенные в AuthorizationPlugin.h.

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

См. также

Для получения дополнительной информации о службах авторизации OS X, см. следующие документы:

О плагинах авторизации

Для установки плагина авторизации Вы пишете плагин с помощью API, описанного в этом документе, устанавливаете пакет в /System/Library/CoreServices/SecurityAgentPlugins, и используйте AuthorizationRightSet функция для добавления записи в базу данных политики авторизации это ссылается на плагин. База данных политики авторизации содержит ряд правил что использование Сервера безопасности для авторизации прав для пользователя. Большинство правил непосредственно указывает критерии, чтобы позволить или запретить доступа; однако, некоторый ссылочный внешний код (называемый механизмами авторизации), которые определяют поведение. База данных авторизации описана в разделе Policy Database Руководства по программированию Authorization Services. Для вызова плагина Вы передаете имя записи базы данных что ссылки тот плагин в rights параметр AuthorizationCopyRights функция.

Типичное использование для плагинов авторизации должно проводить политику, не включенную в стандартную конфигурацию авторизации. Например, Вы могли записать плагин, разрешающий пользователя отправлять факс путем требования персонального идентификационного номера (PIN) для определенного факса.

Основная точка входа плагина должна быть функцией AuthorizationPluginCreate, который обменивается интерфейсом плагина (AuthorizationPluginInterface) и интерфейс авторизации Сервера безопасности (AuthorizationCallbacks).

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

Например, если бы Вы записали политику для отправки факсов, потребовавших, чтобы пользователи выбрали факс, они хотели использовать и ввести PIN-код для той машины, то Вы могли бы назвать политику com.ifoo.ifax.send. Для проведения политики Вы могли записать вызванный плагин SendFaxPlugin это содержит два механизма: SelectFaxMachine и GetUserPIN. Вы добавили бы свой сменный код к папке /System/Library/CoreServices/SecurityAgentPlugins поскольку пакет вызывают SendFaxPlugin.bundle и Вы использовали бы AuthorizationRightSet функция для добавления строк, показанных в Перечислении 1 базе данных политики авторизации:

Перечисление 1Plug-в записи в базе данных правил управления
  • <key>com.ifoo.ifax.send</key>
  • <dict>
  • <key>class</key>
  • <string>evaluate-mechanisms</string>
  • <key>comment</key>
  • <string>Rule to evaluate whether user has right to
  • use a specific fax machine.
  • </string>
  • <key>mechanisms</key>
  • <array>
  • <string>SendFaxPlugin:SelectFaxMachine</string>
  • <string>SendFaxPlugin:GetUserPIN</string>
  • </array>
  • </dict>

Заметьте, что каждый плагин идентифицируется именем плагина, двоеточия и имени механизма; например, SendFaxPlugin:SelectFaxMachine где SelectFaxMachine механизм в плагине SendFaxPluginКлючи.The, используемые в словарной статье, перечислены в файлах AuthorizationTags.h и AuthorizationTagsPriv.h. (Обратите внимание на то, что AuthorizationTagsPriv.h не часть общедоступного API. Apple сохраняет право изменить этот файл или его содержание с будущими выпусками.)

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

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

  • Каждый работает с полномочиями пользователя root выполнить привилегированные операции.

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

Для выполнения определенного механизма с полномочиями пользователя root добавьте запятую и слово privileged к имени механизма; например:

<string>SendFaxPlugin:ChangeUserPIN,privileged</string>

Когда механизму авторизации нужно решение об авторизации на основе политики, принадлежащей плагину, механизм авторизации вызывает каждый механизм, принадлежащий той политике, в свою очередь, в порядке, они перечислены в базе данных правил управления. Для каждого механизма механизм авторизации вызывает плагин MechanismInvoke функция, передавая плагин name:mechanism называет для того механизма.

Механизм вызывает SetResult функционируйте для создания отчетов о решении об авторизации. Механизм авторизации не считает авторизацию завершенной и утвержденной, пока все механизмы не возвратили положительное (kAuthorizationResultAllow) решение об авторизации, один из механизмов возвратил отрицание (kAuthorizationResultDeny) решение, максимальное количество повторений было достигнуто (kAuthorizationResultUndefined), или пользователь отменил попытку (kAuthorizationResultUserCanceled).

Механизмы в авторизации могут передать вспомогательную информацию путем установки и получения данных контекста и подсказок. Подсказки являются значениями данных для использования во время авторизации; например, можно использовать подсказку для передачи промежуточного значения с одного механизма на последующий механизм. Они не сохраняются как часть результата авторизации. Данные контекста являются информацией, которая может быть полезной для приложения, такой как имя пользователя, вводимое пользователем во время процесса авторизации. Данные контекста могут быть добавлены, читать, или измененный каждым механизмом в авторизации и сохраняются Сервером безопасности. Данные контекста могут также быть сделаны доступными для клиента авторизации после того, как авторизация будет завершена. Посмотрите SetHintValue и SetContextValue для получения дополнительной информации о подсказках и данных контекста.

Когда плагин авторизации устанавливает данные контекста, он тегирует данные с флагом, указывающим, должна ли информация быть возвращена клиенту авторизации по запросу (при помощи AuthorizationCopyInfo функция) или ограничивается ли это механизмами, вовлеченными в авторизацию.

Функции

Ваш плагин авторизации связывается с механизмом авторизации через функции обратного вызова механизма. Эти функции объявляются в AuthorizationCallbacks структура передала Вашему плагину через AuthorizationPluginCreate функция.

  • Возвратите результат операции авторизации.

    Объявление

    Objective C

    OSStatus (*SetResult)( AuthorizationEngineRef inEngine, AuthorizationResult inResult );

    Параметры

    inEngine

    Непрозрачный дескриптор, передающийся Вашему плагину, когда механизм авторизации вызывает Ваш MechanismCreate функция.

    inResult

    Результат попытки авторизации. Посмотрите Результат Авторизации для возможных значений.

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

    Код результата. Возможные результаты errAuthorizationSuccess (никакая ошибка) и errAuthorizationInternal (Сервер безопасности внутренняя ошибка).

    Обсуждение

    Когда приложение вызывает AuthorizationCopyRights функционируйте для запроса определенного права авторизации, Агент безопасности ищет то право в базе данных политики авторизации. Если то право соответствует Вашему плагину, механизм авторизации вызывает MechanismInvoke функция для каждого механизма перечислена в базе данных правил управления для Вашего плагина.

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

    Обратите внимание на то, что можно отделить отдельный процесс и возвратиться из MechanismInvoke перед вызовом SetResult. Например, Вы могли бы сделать так, чтобы избежать блокировать Сервер безопасности, если Ваш механизм занимает существенное количество времени для завершения или если Вы хотите быть в состоянии отменить работу путем вызова RequestInterrupt функция (если, например, пользователь нажал Cancel).In, что случай, Ваш отдельный процесс должен вызвать SetResult функционируйте для создания отчетов о результате; механизм авторизации не вызывает следующий механизм, пока Вы не делаете так.

    Механизм авторизации отправляет Вам точку входа в SetResult функция в AuthorizationCallbacks структура, когда Вы вызываете AuthorizationPluginCreate функция.

    Доступность

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

  • Запросите механизм авторизации прервать в настоящее время активный механизм авторизации.

    Объявление

    Objective C

    OSStatus (*RequestInterrupt)( AuthorizationEngineRef inEngine, );

    Параметры

    inEngine

    Непрозрачный дескриптор, передающийся Вашему плагину, когда механизм авторизации вызывает Ваш MechanismCreate функция.

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

    Код результата. Возможные результаты errAuthorizationSuccess (никакая ошибка) и errAuthorizationInternal (Сервер безопасности внутренняя ошибка).

    Обсуждение

    Когда Вы вызываете эту функцию, механизм безопасности вызывает MechanismDeactivate функционируйте для в настоящее время активного механизма своего плагина; т.е. механизм, в последний раз вызванный и это еще не вызвало SetResult функционируйте для создания отчетов о его результате. Ваш механизм должен тогда остановить любую активную обработку и вызвать DidDeactivate функция. Когда все механизмы неактивны (т.е. они вызвали также SetResult или DidDeactivate), механизм авторизации вызывает MechanismInvoke функция для вызвавшего механизма RequestInterrupt так, чтобы это могло возобновить процесс авторизации от той точки. После того, как все механизмы вызвали SetResult, механизм авторизации вызывает каждый механизм MechanismDestroy функция.

    Если Ваш механизм отделяет отдельный процесс или поток UI, тот поток может вызвать RequestInterrupt функция, чтобы повторно вызвать механизм, даже если тот механизм уже вызвал SetResult функция. Например, если Ваш плагин реализует метод аутентификации смарт-карты, читение и оценивание карты могли бы занять несколько минут для выполнения. Поэтому во избежание блокирования другой обработки, в то время как карта оценивается, Вы могли бы отделить поток UI, чтобы взаимодействовать с пользователем и затем возвратиться из MechanismInvoke. Когда карта была считана, поток UI вызывает SetResult функция со значением kAuthorizationResultAllow и изменяет UI для запроса PIN пользователя. Механизм авторизации вызывает следующий механизм, проверяющий PIN. Если пользователь вытаскивает карту, прежде чем проверка будет завершена, поток UI может вызвать RequestInterrupt. Механизм авторизации тогда вызывает активный механизм MechanismDeactivate функция, заставляя его завершить проверку PIN и вызов DidDeactivate. Тогда механизм авторизации вызывает Ваш механизм UI MechanismInvoke функционируйте снова. Ваш UI может тогда предложить пользователю повторно вставлять карту.

    Для понимания этой последовательности лучше предположите, что плагин содержит три механизма: A, B, и C. Механизм A вызвал SetResult и не имеет никаких активных процессов. Механизм B вызвал SetResult, но все еще имеет выполнение потока UI. Механизм C выполняет и еще не вызвал SetResult. Пользователь нажимает Cancel или иначе прерывает поток UI, заставляя поток UI вызвать RequestInterrupt функция. Следующая последовательность событий происходит:

    1. Механизм авторизации вызывает механизм C MechanismDeactivate функция.

    2. Механизм C останавливает активную обработку и вызывает DidDeactivate функция.

    3. Механизм авторизации вызывает механизм B MechanismInvoke функция (потому что механизм B является вызвавшим тем RequestInterrupt).

    4. Механизм B обновляет UI и вызывает SetResult функция со значением kAuthorizationResultAllow.

    5. Механизм авторизации вызывает механизм C MechanismInvoke функция.

    6. Механизм C завершает обработку и вызовы SetResult с kAuthorizationResultAllow.

    7. Механизм авторизации вызывает MechanismDestroy функция каждого механизма поочередно (A, B, тогда C).

    Механизм авторизации отправляет Вам точку входа в RequestInterrupt функция в AuthorizationCallbacks структура, когда Вы вызываете AuthorizationPluginCreate функция.

    Доступность

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

  • Сообщите об успешной деактивации механизма авторизации.

    Объявление

    Objective C

    OSStatus (*DidDeactivate)( AuthorizationEngineRef inEngine, );

    Параметры

    inEngine

    Непрозрачный дескриптор, передающийся Вашему плагину, когда механизм авторизации вызывает Ваш MechanismCreate функция.

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

    Код результата. Возможные результаты errAuthorizationSuccess (никакая ошибка) и errAuthorizationInternal (Сервер безопасности внутренняя ошибка).

    Обсуждение

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

    Механизм авторизации отправляет Вам точку входа в DidDeactivate функция в AuthorizationCallbacks структура, когда Вы вызываете AuthorizationPluginCreate функция.

    Доступность

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

  • Считайте значение, собранное во время авторизации.

    Объявление

    Objective C

    OSStatus (*GetContextValue)( AuthorizationEngineRef inEngine, AuthorizationString inKey, AuthorizationContextFlags *outContextFlags, const AuthorizationValue **outValue);

    Параметры

    inEngine

    Непрозрачный дескриптор, передающийся Вашему плагину, когда механизм авторизации вызывает Ваш MechanismCreate функция.

    inKey

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

    outContextFlags

    На выходных точках к флагу, указывающему, доступно ли это значение клиенту авторизации.

    outValue

    На вводе выделите указатель на AuthorizationValue структура. На выводе структура содержит размер данных и указателя на данные. Поскольку Ваш AuthorizationValue структуре не принадлежат данные, Вы не должны освобождать структуру или данные, на которые указывает структура.

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

    Код результата. Возможные результаты errAuthorizationSuccess (никакая ошибка) и errAuthorizationInternal (Сервер безопасности внутренняя ошибка).

    Обсуждение

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

    Механизм авторизации отправляет Вам точку входа в GetContextValue функция в AuthorizationCallbacks структура, когда Вы вызываете AuthorizationPluginCreate функция.

    Не вызывайте эту функцию после вызова SetResult функция. Если Вы делаете так, полученные данные GetContextValue функция не могла бы отразить текущую стоимость даже при том, что функция возвращается errAuthorizationSuccess код результата.

    Доступность

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

  • Храните данные, собранные во время авторизации как пара ключ/значение.

    Объявление

    Objective C

    OSStatus (*SetContextValue)( AuthorizationEngineRef inEngine, AuthorizationString inKey, AuthorizationContextFlags inContextFlags, const AuthorizationValue *inValue);

    Параметры

    inEngine

    Непрозрачный дескриптор, передающийся Вашему плагину, когда механизм авторизации вызывает Ваш MechanismCreate функция.

    inKey

    Ключ, идентифицирующий значение, Вы храните. Для стандартных значений, таких как имена пользователей, используйте ключи, перечисленные в DirectoryService/DirServicesConst.h. Если необходимо определить новый ключ, используйте обратную доменную нотацию (такой как com.apple.ifoo) и удостоверьтесь, что ключ уникален. Например, можно использовать название компании в качестве префикса для ключевого имени.

    inContextFlags

    Флаг, указывающий, должно ли это значение быть доступно клиенту авторизации.

    inValue

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

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

    Код результата. Возможные результаты errAuthorizationSuccess (никакая ошибка) и errAuthorizationInternal (Сервер безопасности внутренняя ошибка).

    Обсуждение

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

    Когда Вы храните эти данные контекста, Вы отмечаете их, чтобы указать, может ли клиент авторизации получить значение с AuthorizationCopyInfo функция. Если данные установлены быть извлекаемыми (kAuthorizationContextFlagExtractable), для клиента авторизации возможно использовать AuthorizationCopyInfo функция для получения значения. Если данные отмечены как энергозависимые (kAuthorizationContextFlagVolatile), значение не доступно клиенту. В любом случае уязвимые данные, такие как пароль пользователя не предоставлены клиенту.

    Механизм авторизации отправляет Вам точку входа в SetContextValue функция в AuthorizationCallbacks структура, когда Вы вызываете AuthorizationPluginCreate функция.

    Не вызывайте эту функцию после вызова SetResult функция. Если Вы делаете так, функция не устанавливает данные контекста, даже при том, что функция возвращается errAuthorizationSuccess код результата.

    Доступность

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

  • Считайте значение, сохраненное сменным механизмом авторизации.

    Объявление

    Objective C

    OSStatus (*GetHintValue)( AuthorizationEngineRef inEngine, AuthorizationString inKey, const AuthorizationValue **outValue);

    Параметры

    inEngine

    Непрозрачный дескриптор, передающийся Вашему плагину, когда механизм авторизации вызывает Ваш MechanismCreate функция.

    inKey

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

    outValue

    На вводе выделите указатель на AuthorizationValue структура. На выводе структура содержит размер данных и указателя на данные. Поскольку Ваш AuthorizationValue структуре не принадлежат данные, Вы не должны освобождать структуру или данные, на которые указывает структура.

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

    Код результата. Возможные результаты errAuthorizationSuccess (никакая ошибка) и errAuthorizationInternal (Сервер безопасности внутренняя ошибка).

    Обсуждение

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

    Механизм авторизации отправляет Вам точку входа в GetHintValue функция в AuthorizationCallbacks структура, когда Вы вызываете AuthorizationPluginCreate функция.

    Не вызывайте эту функцию после вызова SetResult функция. Если Вы делаете так, полученные данные GetHintValue функция не могла бы отразить текущую стоимость даже при том, что функция возвращается errAuthorizationSuccess код результата.

    Доступность

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

  • Храните данные, необходимые во время авторизации как пара ключ/значение.

    Объявление

    Objective C

    OSStatus (*SetHintValue)( AuthorizationEngineRef inEngine, AuthorizationString inKey, const AuthorizationValue *inValue);

    Параметры

    inEngine

    Непрозрачный дескриптор, передающийся Вашему плагину, когда механизм авторизации вызывает Ваш MechanismCreate функция.

    inKey

    Ключ, идентифицирующий значение, Вы храните. Для стандартных значений, таких как метка времени, используйте ключи, перечисленные в DirectoryService/DirServicesConst.h. Если необходимо определить новый ключ, удостоверьтесь, что ключ уникален. Например, можно использовать название компании в качестве префикса для ключевого имени.

    inValue

    Указатель на AuthorizationValue структура, содержащая размер данных и указателя на данные. И структура и данные копируются в хранение, сохраняемое механизмом авторизации.

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

    Код результата. Возможные результаты errAuthorizationSuccess (никакая ошибка) и errAuthorizationInternal (Сервер безопасности внутренняя ошибка).

    Обсуждение

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

    Механизм авторизации отправляет Вам точку входа в SetHintValue функция в AuthorizationCallbacks структура, когда Вы вызываете AuthorizationPluginCreate функция.

    Не вызывайте эту функцию после вызова SetResult функция. Если Вы делаете так, функция не устанавливает данные подсказки, даже при том, что функция возвращается errAuthorizationSuccess код результата.

    Доступность

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

  • Считайте параметры за этот механизм авторизации от базы данных политики авторизации. Параметры базы данных политики авторизации еще не были реализованы.

    Объявление

    Objective C

    OSStatus (*GetArguments)( AuthorizationEngineRef inEngine, const AuthorizationValueVector **outArguments);

    Параметры

    inEngine

    Непрозрачный дескриптор, передающийся Вашему плагину, когда механизм авторизации вызывает Ваш MechanismCreate функция.

    outValue

    На вводе выделите указатель на AuthorizationValueVector структура. На выводе структура содержит число параметров и указателя на данные. Поскольку Ваш AuthorizationValueVector структуре не принадлежат данные, Вы не должны освобождать структуру или данные, на которые указывает структура.

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

    Код результата. Возможные результаты errAuthorizationSuccess (никакая ошибка) и errAuthorizationInternal (Сервер безопасности внутренняя ошибка).

    Обсуждение

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

    Механизм авторизации отправляет Вам точку входа в GetArguments функция в AuthorizationCallbacks структура, когда Вы вызываете AuthorizationPluginCreate функция.

    Доступность

    Эта функция доступна в OS X v10.4 и позже; однако, база данных еще не поддерживает параметры.

  • Считайте сеанс ID.

    Объявление

    Objective C

    OSStatus (*GetSessionID)( AuthorizationEngineRef inEngine, AuthorizationSessionId *outSessionId);

    Параметры

    inEngine

    Непрозрачный дескриптор, передающийся Вашему плагину, когда механизм авторизации вызывает Ваш MechanismCreate функция.

    outSessionId

    На выводе, точках к сеансу ID.

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

    Код результата. Возможные результаты errAuthorizationSuccess (никакая ошибка) и errAuthorizationInternal (Сервер безопасности внутренняя ошибка).

    Обсуждение

    Сеанс ID является уникальным значением, предоставленным механизмом авторизации для данного сеанса авторизации. Обычно, все механизмы в Вашем плагине вызывают поочередно для данного сеанса авторизации и нет никакой потребности попросить сеанса у ID. Однако, если необходимо было запустить демона авторизации (например), что данные кэшей от различных сеансов авторизации, и затем использует те данные позже, Вы, возможно, должны были бы отслеживать, которого сеанса элемент определенных данных прибыл из. Если Вы хотите реализовать такую систему, ID сеанса доступен для Вашего использования.

    Механизм авторизации отправляет Вам точку входа в GetSessionID функция в AuthorizationCallbacks структура, когда Вы вызываете AuthorizationPluginCreate функция.

    Доступность

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

Обратные вызовы

  • Инициализирует плагин и обменивается интерфейсами с механизмом авторизации.

    Объявление

    Objective C

    OSStatus AuthorizationPluginCreate ( const AuthorizationCallbacks *callbacks, AuthorizationPluginRef *outPlugin, const AuthorizationPluginInterface **outPluginInterface );

    Параметры

    callbacks

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

    outPlugin

    На вводе, указатель, который можно присвоить, на выводе, к ссылочному значению, которое Вы определяете. Механизм авторизации пасует назад эту ссылку на Вас в любых последующих вызовах к Вашим функциям outPluginInterface->MechanismCreate (MechanismCreate) и outPluginInterface->PluginDestroy (MechanismDestroy) так, чтобы можно было идентифицировать экземпляр затронутого плагина.

    outPluginInterface

    На вводе, указатель, который Вы присваиваете, на выводе, к структуре, содержащей точки входа в плагине. Эта структура остается допустимой до вызовов механизма авторизации outPluginInterface->PluginDestroy.

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

    Код результата. Возвратиться errAuthorizationSuccess (никакая ошибка), если функция завершается успешно и errAuthorizationInternal (Сервер безопасности внутренняя ошибка), если происходит ошибка.

    Обсуждение

    Эта функция является основной точкой входа к плагину. Механизм авторизации вызывает эту функцию только один раз. Плагин получает структуру (AuthorizationCallbacks) содержа точки входа к функциям Сервера безопасности (описанный в Вызове Механизма Авторизации) и возвраты структура (AuthorizationPluginInterface) содержа точки входа ко всем подпрограммам плагина (Функции интерфейса Плагина Авторизации). Обе из этих структур содержат номера версий. Механизм авторизации соответствует версию своего интерфейса к версии в Вашем плагине AuthorizationPluginInterface структура, чтобы гарантировать, что более старые плагины будут продолжать функционировать правильно после Сервера безопасности, обновляется.

    Если Ваш плагин работает в OS X v10.5 или позже и выводит на экран окно, прежде чем пользователь вошел в систему, необходимо установить kHIWindowBitCanBeVisibleWithoutLogin флаг на окне.

    Для какао, NSWindow метод, чтобы сделать это:

    • - (void)setCanBecomeVisibleWithoutLogin:(BOOL)flag;

    Этот метод доступен в OS X v10.5 и позже; см. Ссылку класса NSWindow.

    Для Углерода Вы устанавливаете kHIWindowBitCanBeVisibleWithoutLogin припишите непосредственно; посмотрите Ссылку Менеджера окон. Этот атрибут также поддерживается IBCarbonRuntime и при архивации окна.

    Доступность

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

Необходимо объявить и реализовать функции, упомянутые в AuthorizationPluginInterface структура, которую Вы передаете механизму авторизации с AuthorizationPluginCreate функция.

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

    Объявление

    Objective C

    OSStatus (*PluginDestroy)( AuthorizationPluginRef inPlugin );

    Параметры

    inPlugin

    Ссылка плагина авторизации Вы присвоились к плагину в AuthorizationPluginCreate функция.

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

    Код результата. Возвратиться errAuthorizationSuccess (никакая ошибка), если функция завершается успешно и errAuthorizationInternal (Сервер безопасности внутренняя ошибка), если происходит ошибка.

    Обсуждение

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

    Доступность

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

  • Создайте механизм авторизации.

    Объявление

    Objective C

    OSStatus (*MechanismCreate)( AuthorizationPluginRef inPlugin, AuthorizationEngineRef inEngine, AuthorizationMechanismId mechanismId, AuthorizationMechanismRef *outMechanism );

    Параметры

    inPlugin

    Ссылка плагина авторизации Вы присвоились к плагину в AuthorizationPluginCreate функция.

    inEngine

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

    mechanismID

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

    outMechanism

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

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

    Код результата. Возвратиться errAuthorizationSuccess (никакая ошибка), если функция завершается успешно и errAuthorizationInternal (Сервер безопасности внутренняя ошибка), если происходит ошибка.

    Обсуждение

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

    Когда механизм авторизации вызывает Ваш MechanismCreate функция, необходимо создать механизм типа, указанного mechanismID параметр и возврат ссылка механизма авторизации. Впоследствии, механизм авторизации может вызвать Ваш MechanismInvoke функция для выполнения авторизации, или может направить Вас, чтобы деактивировать или уничтожить экземпляр механизма путем вызова Вашего MechanismDeactivate или MechanismDestroy функции.

    Доступность

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

  • Вызовите механизм авторизации для выполнения операции авторизации.

    Объявление

    Objective C

    OSStatus (*MechanismInvoke)( AuthorizationMechanismRef inMechanism );

    Параметры

    inMechanism

    Ссылка механизма авторизации, которую Вы возвратили когда Ваш MechanismCreate функция была вызвана для создания механизма.

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

    Код результата. Возвратиться errAuthorizationSuccess (никакая ошибка), если функция завершается успешно и errAuthorizationInternal (Сервер безопасности внутренняя ошибка), если происходит ошибка.

    Обсуждение

    Когда механизм авторизации вызывает Ваш MechanismInvoke функция, необходимо выполнить операцию авторизации, обозначенную ссылкой механизма. Можно использовать функции GetArguments, GetContextValue, и GetHintValue получить больше информации, если таковые имеются, об авторизации.

    Доступность

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

  • Деактивируйте механизм авторизации.

    Объявление

    Objective C

    OSStatus (*MechanismDeactivate)( AuthorizationMechanismRef inMechanism );

    Параметры

    inMechanism

    Ссылка механизма авторизации, которую Вы возвратили когда Ваш MechanismCreate функция была вызвана для создания механизма.

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

    Код результата. Возвратиться errAuthorizationSuccess (никакая ошибка), если функция завершается успешно и errAuthorizationInternal (Сервер безопасности внутренняя ошибка), если происходит ошибка.

    Обсуждение

    Механизм авторизации вызывает MechanismDeactivate функция каждого активного механизма, когда Вы вызываете RequestInterrupt функция. Для деактивации механизма необходимо остановить любую обработку, которая является в настоящее время в стадии реализации; например, необходимо завершить любые потоки или процессы UI, которые Вы инициировали.

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

    Доступность

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

  • Уничтожьте механизм авторизации.

    Объявление

    Objective C

    OSStatus (*MechanismDestroy)( AuthorizationMechanismRef inMechanism );

    Параметры

    inMechanism

    Ссылка механизма авторизации, которую Вы возвратили когда Ваш MechanismCreate функция была вызвана для создания механизма.

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

    Код результата. Возвратиться errAuthorizationSuccess (никакая ошибка), если функция завершается успешно и errAuthorizationInternal (Сервер безопасности внутренняя ошибка), если происходит ошибка.

    Обсуждение

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

    Доступность

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

Типы данных

Константы

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

    Объявление

    Objective C

    typedef UInt32 AuthorizationContextFlags; enum { kAuthorizationContextFlagExtractable = (1 << 0), kAuthorizationContextFlagVolatile = (1 << 1), kAuthorizationContextFlagSticky = (1 << 2) };

    Константы

    • kAuthorizationContextFlagExtractable

      kAuthorizationContextFlagExtractable

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

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

    • kAuthorizationContextFlagVolatile

      kAuthorizationContextFlagVolatile

      Значение не сохраняется для клиента авторизации.

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

    • kAuthorizationContextFlagSticky

      kAuthorizationContextFlagSticky

      Эти данные сохраняются посредством прерванной или неработающей оценки.

      Этот флаг может использоваться для распространения состояния ошибки от нисходящего плагина до восходящего. Это не помнят в ссылке авторизации (см. Ссылку Authorization Services C.

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

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

    Objective C

    @import Security;

    Доступность

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

  • Результат оценки авторизации.

    Объявление

    Objective C

    enum { kAuthorizationResultAllow, kAuthorizationResultDeny, kAuthorizationResultUndefined, kAuthorizationResultUserCanceled, };

    Константы

    • kAuthorizationResultAllow

      kAuthorizationResultAllow

      Операция авторизации успешно выполнилась, и авторизацию нужно предоставить.

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

    • kAuthorizationResultDeny

      kAuthorizationResultDeny

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

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

    • kAuthorizationResultUndefined

      kAuthorizationResultUndefined

      Операция авторизации перестала работать и не должна быть повторена для этого сеанса.

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

    • kAuthorizationResultUserCanceled

      kAuthorizationResultUserCanceled

      Пользователь запросил, чтобы была завершена оценка авторизации.

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

  • Версия интерфейса реализована плагином.

    Объявление

    Objective C

    enum { kAuthorizationPluginInterfaceVersion = 0 };

    Обсуждение

    Сменный интерфейс определяется AuthorizationPluginInterface структура и описала в Функциях, Реализованных Плагином.

  • Версия интерфейса реализована механизмом авторизации.

    Объявление

    Objective C

    enum { kAuthorizationCallbacksVersion = 0 };

    Обсуждение

    Интерфейс механизма авторизации определяется AuthorizationCallbacks структура и описала в Вызове Механизма Авторизации.

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

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

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

    Значение

    0

    Описание

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

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

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

    Значение

    - 60008

    Описание

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

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