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_creds — krbtgt を使用して 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->server と ccache で最初に見つかる 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 |