名称
pam_authenticate ― PAM フレームワーク内での認証の実行
構文
cc [
flag ... ] file ... -lpam [ library ... ]
#include <security/pam_appl.h>
int pam_authenticate(pam_handle_t
*pamh, int flags);
説明
pam_authenticate() を呼び出して、現在のユーザーを認証します。このユーザーは、通常、システム内で構成されている認証サービスに基づき、パスワードまたは認証トークンのようなものの入力を要求されます。スマートカード認証の場合、このトークンは PIN
(個人識別番号) になります。対象ユーザーは、以前に呼び出した pam_start() や pam_set_item() で指定されていなければなりません。 flags フィールドには以下のフラグを設定できます。
| PAM_SILENT | | 認証サービスのメッセージ作成を禁止します。 |
| PAM_DISALLOW_NULL_AUTHTOK |
| | | ユーザーの認証トークンがヌルの場合、認証サービスは PAM_AUTH_ERROR を返さなければなりません。 |
アプリケーション使用法
PAM インタフェースのスレッドへの対応状況については、 pam(3) を参照してください。
注意
ユーザー名またはパスワードが不正であるために認証が失敗した場合、アプリケーションは、 pam_authenticate() を再試行し、リトライ回数を保持しなければなりません。認証サービスモジュールは内部のリトライ回数を実現し、アプリケーションに再試行を行わせたくない場合はエラー PAM_MAXTRIES を返すことができます。
PAM フレームワークが認証モジュールをロードできない場合、 PAM_ABORT を返します。これは重大な失敗であり、アプリケーションは認証を再試行してはならないことを示します。
セキュリティ上の理由により、認証が失敗した位置はユーザーには知らされません。したがって、複数の認証サービスがスタックされていて 1 つのサービスが失敗した場合、 pam_authenticate() は、ユーザーがすべてのサービスに対して再認証を行うよう要求します。
PAM_DISALLOW_NULL_AUTHTOK が指定されていない限り、認証データベース内のヌルの認証トークンで認証は成功します。このような場合、ユーザーに認証トークンの入力を求めるプロンプトは表示されません。
認証はスマートカードで行うことができます。この場合、ユーザーがスマートカード リーダに自分のスマートカードを差し込むと、スマートカードの
PIN の入力を求められます。
戻り値
正常終了すると、PAM_SUCCESS が返されます。 pam(3) で説明したエラー戻り値の他に、以下の値が返されることがあります。
| PAM_AUTH_ERR | | 認証に失敗しました。 |
| PAM_CRED_INSUFFICIENT |
| | | 資格認定が不十分なために認証データにアクセスできません。 |
| PAM_AUTHINFO_UNAVAIL |
| | | 基底の認証サービスが認証情報を取り出せません。 |
| PAM_USER_UNKNOWN |
| | | 基底の認証モジュールがユーザーを認識できません。 |
| PAM_MAXTRIES | | 認証サービスが保持しているリトライ回数が限界になりました。これ以上は試行できません。 |