3. APIs
◆ 構造体、定数、フラグ
◇ AuthorizationRef
認証に使われるオブジェクトだ。Authorization API は、すべてこの AuthorizationRef を使って処理をするんだ。
|
Security/Authorization.h
|
typedef const struct AuthorizationOpaqueRef *AuthorizationRef;
|
こいつを作るには AuthorizationCreate() を呼ぶ。使い終わって破棄するときは AuthorizationFree() だ。
◇ AuthorizationFlags
これは Authorization API を呼ぶときに設定するフラグなんだ。
|
Security/Authorization.h
|
enum {
kAuthorizationFlagDefaults = 0,
kAuthorizationFlagInteractionAllowed = (1 << 0),
kAuthorizationFlagExtendRights = (1 << 1),
kAuthorizationFlagPartialRights = (1 << 2),
kAuthorizationFlagDestroyRights = (1 << 3),
kAuthorizationFlagPreAuthorize = (1 << 4),
// private bits (do not use)
kAuthorizationFlagNoData = (1 << 20)
};
|
各フラグの意味は、だいたいこんな感じだ。もちろん、各 API でちょっとずつフラグの解釈は違うけどね。
kAuthorizationFlagDefaults
読んでそのまま、デフォルトのフラグね。特に何も指定しないときに使われるんだ。
kAuthorizationFlagInteractionAllowd
これを指定すると、必要なときに認証ダイアログを表示するんだ。あの、ユーザ名とパスワードを求めるやつね。ダイアログの準備、生成と後片付けは、Authorization API にまかせてしまっていいんだ。
kAuthorizationFlagExtendRights
自分の権限を拡張するんだ。たとえば、いまは一介のユーザに過ぎないけど admin の権限が欲しいんだー、というときに設定するんだ。
kAuthorizationFlagDestroyRights
これには意味が 2 つある。1 つは、AuthorizationFree() で使われるときで、メモリと権限を解放する、という意味。もう 1 つは、AuthorizationCreate() とかで使われるときで、権限を変えないことを保証する、という意味があるんだ。例えば、いまの自分の権限を調べたいだけで、絶対に変えたくないんだ、っていうときに使えるんだ。
◇ AuthorizationItem
認証に必要な情報を格納するのがこの AuthorizationItem だ。たとえばユーザ名とかパスワードとかね。
|
Security/Authorization.h
|
typedef struct {
AuthorizationString name;
UInt32 valueLength;
void *value;
UInt32 flags;
} AuthorizationItem;
|
name のところには情報の種類を指定するんだけど、こんなものがあるんだ。
kAuthorizationEnvironmentUsername
ユーザ名だ。そのままだな。
kAuthorizationEnvironmentPassword
パスワードだ。これもそのままだぞ。
kAuthorizationEnvironmentShared
これはユーザ名とパスワードの両方らしい。
kAuthorizationRightExecute
これは将来使われるみたい。いまはまだサポートされてない。
◇ AuthorizationItemSet
AuthorizationItem が複数あるのが AuthorizationItemSet だ。
|
Security/Authorization.h
|
typedef struct {
UInt32 count;
AuthorizationItem *items;
} AuthorizationItemSet;
|
◇ AuthorizationRights
AuthorizationRights は AuthorizationItemSet のことね。
|
Security/Authorization.h
|
typedef AuthorizationItemSet AuthorizationRights;
|
◇ AuthorizationEnivironment
AuthorizationEnvirionment も AuthorizationItemSet のこと。この 3 つは実体は同じ物だね。
|
Security/Authorization.h
|
typedef AuthorizationItemSet AuthorizationEnvironment;
|
◇ kAuthorizationEmptyEnvironment
kAuthorizationEmptyEnvironment は AuthorizationEnvironment に指定できる定数だ。何も指定しないときに使えるよ。
|
Security/Authorization.h
|
#define kAuthorizationEmptyEnvironment NULL
|
|