EN JA
KRB5_GET_CREDENTIALS(3)
KRB5_GET_CREDENTIALS(3) FreeBSD Library Functions Manual KRB5_GET_CREDENTIALS(3)

名称

krb5_get_credentials, krb5_get_credentials_with_flags, krb5_get_kdc_cred, krb5_get_renewed_credskrbtgt を使用して KDC から資格証明を取得する

ライブラリ

Kerberos 5 ライブラリ (libkrb5, -lkrb5)

書式

#include < krb5.h>

krb5_error_code
krb5_get_credentials( krb5_context context, krb5_flags options, krb5_ccache ccache, krb5_creds *in_creds, krb5_creds **out_creds);

krb5_error_code
krb5_get_credentials_with_flags( krb5_context context, krb5_flags options, krb5_kdc_flags flags, krb5_ccache ccache, krb5_creds *in_creds, krb5_creds **out_creds);

krb5_error_code
krb5_get_kdc_cred( krb5_context context, krb5_ccache id, krb5_kdc_flags flags, krb5_addresses *addresses, Ticket *second_ticket, krb5_creds *in_creds, krb5_creds **out_creds);

krb5_error_code
krb5_get_renewed_creds( krb5_context context, krb5_creds *creds, krb5_const_principal client, krb5_ccache ccache, const char *in_tkt_service);

解説

krb5_get_credentials_with_flags() は、 in_creds->serverccache で最初に見つかる in_creds->client ( in_creds 構造体の残りは無視される) によって指定された資格証明を取得し、存在しないか、または期限が切れていたなら、 ccache の krbtgt を使用する KDC から資格証明を取って来ます。 out_creds に返された資格証明は、関数 krb5_free_creds() を使用して解放されるべきです。

options 引数に渡される有効なフラグは、次の通りです:

KRB5_GC_CACHED
単に ccache をチェックし、資格証明を取って来るためのネットワークに出て行きません。
KRB5_GC_USER_USER
ユーザチケットをユーザに要求します。このオプションは、結果のユーザを ccache のユーザ資格証明に格納しません。
KRB5_GC_EXPIRED_OK
たとえその期限が切れても資格証明を返し、デフォルトの振る舞いは、KDC から資格証明を再び取って来ることを試みます。

flags は、KDCOptions であり、呼び出し側は、ビットフールドに書き込まなければならず、整数に関連している構造体を使用しないことに注意してください。

krb5_get_credentials() は、 flags フィールドがないことを除いて、 krb5_get_credentials_with_flags() 同じように動作します。

krb5_get_kdc_cred() は、上記の関数と同じように動作しますが、呼び出し側は、すべての情報を書き込まなければならず、有線プロトコルに似ています。

krb5_get_renewed_creds() は、資格証明キャッシュ ccache ( NULL であるなら、デフォルトの krbtgt) を使用して in_tkt_service によって与えられた資格証明を更新します。結果は、 creds に格納されて、 krb5_free_creds を使用して解放されるべきです。

使用例

ここに、資格証明キャッシュ id または KDC から資格証明を取得し、それを呼び出し側に返す例の関数があります。

#include <krb5.h> 
 
int 
getcred(krb5_context context, krb5_ccache id, krb5_creds **creds) 
{ 
    krb5_error_code ret; 
    krb5_creds in; 
 
    ret = krb5_parse_name(context, "client@EXAMPLE.COM", 
     &in.client); 
    if (ret) 
 krb5_err(context, 1, ret, "krb5_parse_name"); 
 
    ret = krb5_parse_name(context, "host/server.example.com@EXAMPLE.COM", 
     &in.server); 
    if (ret) 
 krb5_err(context, 1, ret, "krb5_parse_name"); 
 
    ret = krb5_get_credentials(context, 0, id, &in, creds); 
    if (ret) 
 krb5_err(context, 1, ret, "krb5_get_credentials"); 
 
    return 0; 
}
July 26, 2004 HEIMDAL