home link download back number special issue

HMDT - Special Issue / Authentication API 完全理解 / APIs


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

Home | Link | Download | Back Number | Speciall Issue

mailto: mkino@xd5.so-net.ne.jp

HMDT