本附录包括以下几节:
GSS-API 函数提供的 GSS-API 函数表。
GSS-API 状态码讨论 GSS-API 函数返回的状态码,并提供这些状态码的列表。
GSS-API 数据类型和值讨论 GSS-API 使用的各种数据类型。
GSS-API 中特定于实现的功能介绍 Sun GSS-API 实现独有的功能。
Kerberos v5 状态码列出了 Kerberos v5 机制可以返回的状态码。
其他 GSS-API 定义可在 gssapi.h 文件中找到。
Solaris 软件实现了 GSS-API 函数。有关每个函数的更多信息,请参见其手册页。另请参见早期 GSS-API 版本中的函数。
本节说明了早期 GSS-API 版本中包含的函数。
OID
的函数Sun 的 GSS-API 实现中提供了下列函数,这些函数满足了便捷性和向后兼容性的需要。但是,其他 GSS-API 实现可能不支持这些函数。
尽管可以将机制的名称从字符串转换为 OID,但程序员应尽可能地使用缺省 GSS-API 机制。
以下函数已被更新的函数所替代。在所有情况下,新函数的功能与较早的函数等效。尽管支持较早的函数,但开发者应尽可能地将这些函数替换为更新的函数。
主状态码是按下图所示方式在 OM_uint32 中进行编码的。
如果 GSS-API 例程返回的 GSS 状态码的高 16 位包含非零值,则调用失败。 如果调用错误字段为非零值,则应用程序的例程调用是错误的。 表 B–1 中列出了调用错误。 如果例程错误字段为非零值,则说明该例程因例程特定错误(在表 B–2 中列出)而失败。无论高 16 位指示失败还是成功,都可以设置状态码的补充信息字段中的位。表 B–3 中列出了各个位的含义。
下表列出了 GSS-API 返回的调用错误。这些错误特定于特定语言绑定(在本例中为 C)。
表 B–1 GSS-API 调用错误
错误 |
字段中的值 |
含义 |
---|---|---|
GSS_S_CALL_INACCESSIBLE_READ |
1 |
不能读取所需的输入参数 |
GSS_S_CALL_INACCESSIBLE_WRITE |
2 |
不能写入所需的输出参数 |
GSS_S_CALL_BAD_STRUCTURE |
3 |
参数格式错误 |
下表列出了 GSS-API 例程错误,即 GSS-API 函数返回的一般错误。
表 B–2 GSS-API 例程错误
错误 |
字段中的值 |
含义 |
---|---|---|
GSS_S_BAD_MECH |
1 |
请求不受支持的机制。 |
GSS_S_BAD_NAME |
2 |
提供无效名称。 |
GSS_S_BAD_NAMETYPE |
3 |
提供的名称属于不受支持的类型。 |
GSS_S_BAD_BINDINGS |
4 |
提供不正确的通道绑定。 |
GSS_S_BAD_STATUS |
5 |
提供无效状态码。 |
GSS_S_BAD_MIC、GSS_S_BAD_SIG |
6 |
令牌具有无效的 MIC。 |
GSS_S_NO_CRED |
7 |
凭证不可用、不可访问或不受支持。 |
GSS_S_NO_CONTEXT |
8 |
未建立上下文。 |
GSS_S_DEFECTIVE_TOKEN |
9 |
令牌无效。 |
GSS_S_DEFECTIVE_CREDENTIAL |
10 |
凭证无效。 |
GSS_S_CREDENTIALS_EXPIRED |
11 |
引用的凭证已过期。 |
GSS_S_CONTEXT_EXPIRED |
12 |
上下文已过期。 |
GSS_S_FAILURE |
13 |
各种故障。基础机制检测到未定义特定 GSS–API 状态码的错误。 机制特定状态码(即次状态码)提供了有关错误的更多详细信息。 |
GSS_S_BAD_QOP |
14 |
无法提供请求的保护质量。 |
GSS_S_UNAUTHORIZED |
15 |
本地安全策略禁止该操作。 |
GSS_S_UNAVAILABLE |
16 |
操作或选项不可用。 |
GSS_S_DUPLICATE_ELEMENT |
17 |
请求的凭证元素已存在。 |
GSS_S_NAME_NOT_MN |
18 |
提供的名称不是机制名称 (mechanism name, MN)。 |
名称 GSS_S_COMPLETE(零值)指示缺少 API 错误或补充信息位。
下表列出了 GSS-API 函数返回的补充信息值。
表 B–3 GSS-API 补充信息代码
代码 |
位数 |
含义 |
---|---|---|
GSS_S_CONTINUE_NEEDED |
0 (LSB) |
仅由 gss_init_sec_context() 或 gss_accept_sec_context() 返回。必须再次调用例程才能完成其函数。 |
GSS_S_DUPLICATE_TOKEN |
1 |
该令牌是早期令牌的副本。 |
GSS_S_OLD_TOKEN |
2 |
令牌的有效期限已过期。 |
GSS_S_UNSEQ_TOKEN |
3 |
已处理后面的令牌。 |
GSS_S_GAP_TOKEN |
4 |
未收到预期的每条消息令牌。 |
有关状态码的更多信息,请参见GSS-API 状态码。
函数 gss_display_status() 将 GSS-API 状态码转换为文本格式。采用此格式,可以向用户显示代码或将代码置于文本日志中。gss_display_status() 一次仅显示一个状态码,而且某些函数可以返回多个状态条件。因此,应该将 gss_display_status() 作为循环的一部分进行调用。如果 gss_display_status() 指示非零状态码,则函数可以提取其他状态码。
OM_uint32 message_context; OM_uint32 status_code; OM_uint32 maj_status; OM_uint32 min_status; gss_buffer_desc status_string; ... message_context = 0; do { maj_status = gss_display_status( &min_status, status_code, GSS_C_GSS_CODE, GSS_C_NO_OID, &message_context, &status_string); fprintf(stderr, "%.*s\n", \ (int)status_string.length, \ (char *)status_string.value); gss_release_buffer(&min_status, &status_string,); } while (message_context != 0);
宏 GSS_CALLING_ERROR()、GSS_ROUTINE_ERROR() 和 GSS_SUPPLEMENTARY_INFO() 使用 GSS 状态码。这些宏可以删除相关字段以外的所有信息。例如,可以将 GSS_ROUTINE_ERROR() 应用于状态码,以删除调用错误和补充信息字段。此操作仅保留例程错误字段。 可以将这些宏提供的值与相应类型的 GSS_S_xxx 符号直接进行比较。如果状态码指示调用错误或例程错误,则宏 GSS_ERROR() 返回非零值,否则将返回零值。 由 GSS-API 定义的所有宏一次可以评估多个参数。
本节介绍各种类型的 GSS-API 数据类型和值。某些数据类型(如 gss_cred_id_t 或 gss_name_t)对用户是不透明的。这些数据类型无需介绍。本节介绍以下主题:
基本 GSS-API 数据类型 -给出 OM_uint32
、gss_buffer_desc、gss_OID_desc、gss_OID_set_desc_struct 和 gss_channel_bindings_struct 数据类型的定义。
名称类型 -给出为指定名称由 GSS-API 识别的各种名称格式。
通道绑定的地址类型 -给出可用作 gss_channel_bindings_t 结构的 initiator_addrtype 和 acceptor_addrtype 字段的各种值。
本节介绍 GSS-API 使用的数据类型。
OM_uint32
OM_uint32
是与平台无关的 32 位无符号整数。
包含 gss_buffer_t
指针的 gss_buffer_desc 的定义采用以下格式:
typedef struct gss_buffer_desc_struct { size_t length; void *value; } gss_buffer_desc, *gss_buffer_t;
包含 gss_OID
指针的 gss_OID_desc 的定义采用以下格式:
typedef struct gss_OID_desc_struct { OM_uint32 length; void*elements; } gss_OID_desc, *gss_OID;
包含 gss_OID_set
指针的 gss_OID_set_desc 的定义采用以下格式:
typedef struct gss_OID_set_desc_struct { size_t count; gss_OID elements; } gss_OID_set_desc, *gss_OID_set;
gss_channel_bindings_struct 结构和gss_channel_bindings_t 指针的定义的格式如下:
typedef struct gss_channel_bindings_struct { OM_uint32 initiator_addrtype; gss_buffer_desc initiator_address; OM_uint32 acceptor_addrtype; gss_buffer_desc acceptor_address; gss_buffer_desc application_data; } *gss_channel_bindings_t;
名称类型指示关联名称的格式。有关名称和名称类型的更多信息,请参见GSS-API 中的名称和GSS-API OID。GSS-API 支持下表中的 gss_OID 名称类型。
建议将符号名称 GSS_C_NO_NAME 作为参数值,以指示在名称传输中未提供任何值。
此值对应于空输入值,而不是实际的对象标识符。 如果指定了该值,则该值基于机制特定缺省可列显语法指示关联名称的解释。
标识匿名名称的方式。可以比较此值,以与机制无关的方式确定名称是否引用匿名主体。
使用 gss_export_name() 函数导出的名称。
用于表示与主机关联的服务。此名称格式是按照以下方式使用两个元素(服务和主机名)构造的:service@hostname。
用于指示与本地系统中的用户对应的数字用户标识符。该值的解释特定于 OS。gss_import_name() 函数将此 UID 解析为用户名,之后该 UID 就表示为用户名形式。
用于指示一个数字字符串,该字符串表示本地系统中的用户的数字用户标识符。 该值的解释特定于 OS。此名称类型与计算机 UID 格式类似,不同的是缓冲区包含表示用户 ID 的字符串。
本地系统中的命名用户。该值的解释特定于 OS。该值采用以下格式:username。
下表给出了 gss_channel_bindings_struct 结构的 initiator_addrtype 和 acceptor_addrtype 字段的可能值。这些字段指示名称可以采用的格式,例如 ARPAnet IMP 地址或 AppleTalk 地址。通道绑定将在在 GSS-API 中使用通道绑定中讨论。
表 B–4 通道绑定地址类型
字段 |
值(十进制) |
地址类型 |
---|---|---|
GSS_C_AF_UNSPEC |
0 |
未指定的地址类型 |
GSS_C_AF_LOCAL |
1 |
本地主机 |
GSS_C_AF_INET |
2 |
Internet 地址类型,例如 IP |
GSS_C_AF_IMPLINK |
3 |
ARPAnet IMP |
GSS_C_AF_PUP |
4 |
pup 协议,例如 BSP |
GSS_C_AF_CHAOS |
5 |
MIT CHAOS 协议 |
GSS_C_AF_NS |
6 |
XEROX NS |
GSS_C_AF_NBS |
7 |
nbs |
GSS_C_AF_ECMA |
8 |
ECMA |
GSS_C_AF_DATAKIT |
9 |
Datakit 协议 |
GSS_C_AF_CCITT |
10 |
CCITT |
GSS_C_AF_SNA |
11 |
IBM SNA |
GSS_C_AF_DECnet |
12 |
DECnet |
GSS_C_AF_DLI |
13 |
直接数据链接接口 |
GSS_C_AF_LAT |
14 |
LAT |
GSS_C_AF_HYLINK |
15 |
NSC 超级通道 |
GSS_C_AF_APPLETALK |
16 |
AppleTalk |
GSS_C_AF_BSC |
17 |
BISYNC |
GSS_C_AF_DSS |
18 |
分布式系统服务 |
GSS_C_AF_OSI |
19 |
OSI TP4 |
GSS_C_AF_X25 |
21 |
X.25 |
GSS_C_AF_NULLADDR |
255 |
未指定任何地址 |
在 API 的实现之间 GSS-API 的某些方面可能有所不同。大多数情况下,实现之间的差异对程序只有很小的影响。在所有情况下,开发者都可以不依赖特定于给定实现(包括 Sun 实现)的任何操作来最大化可移植性。
Sun 实现中没有自定义的 GSS-API 函数。
GSS-API 实现在与名称对应的可列显语法中可能有所不同。对于可移植性,应用程序不应该比较使用人工可读(即可列显)格式的名称。相反,这些应用程序应该使用 gss_compare_name() 来确定内部格式名称是否与任何其他名称匹配。
Sun 的 gss_display_name() 实现按以下方式显示名称。如果 input_name 参数表示用户主体,则 gss_display_name() 将返回 user_principal@realm 作为 output_name_buffer,返回 gss_OID 值作为 output_name_type。如果 Kerberos v5 是基础机制,则 gss_OID 为 1.2.840.11354.1.2.2。
如果 gss_display_name() 接收到的名称是 gss_import_name() 使用 GSS_C_NO_OID 名称类型创建的,则 gss_display_name() 将在 output_name_type 参数中返回 GSS_C_NO_OID。
gss_display_name() 函数将输出字符串 "<anonymous>",以指示匿名 GSS-API 主体。与此名称关联的名称类型 OID 为 GSS_C_NT_ANONYMOUS
。Sun 实现支持的其他有效可列显名称不应以尖括号 (<>) 括起。
以下数据类型已作为指针实现,但某些实现可能将这些类型指定为算术类型:gss_cred_t
、gss_ctx_id_t
和 gss_name_t
。
如果上下文建立失败,则 Sun 实现不会自动删除部分生成的上下文。因此,应用程序应该通过使用 gss_delete_sec_context() 删除上下文来处理此事件。
Sun 实现将通过内存管理自动释放存储的数据(如内部名称)。但是,当不再需要数据元素时,应用程序仍然应该调用相应的函数(如 gss_release_name())。
对通道绑定的支持随机制而变化。Diffie-Hellman 机制与 Kerberos v5 机制都支持通道绑定。
开发者应该假设通道绑定数据没有保密性保护。尽管 Kerberos v5 机制提供此保护,但通道绑定数据的保密性对于 Diffie-Hellman 机制不可用。
Sun 实现检测并拒绝相同上下文的多次尝试导入。
Sun 的 GSS-API 实现支持通过 gss_acquire_cred() 获取 GSS_C_INITIATE、GSS_C_ACCEPT 和 GSS_C_BOTH 凭证。
Sun 的 GSS-API 实现支持凭证到期。因此,程序员可以在函数(如 gss_acquire_cred() 和 gss_add_cred())中使用与凭证生命周期相关的参数。
Sun 的 GSS-API 实现支持上下文到期。因此,程序员可以在函数(如 gss_init_sec_context() 和 gss_inquire_context())中使用与上下文生命周期相关的参数。
Sun 的 GSS-API 实现(与任何基础机制相反)不对 gss_wrap() 处理的消息强加最大大小。应用程序可以使用 gss_wrap_size_limit() 确定最大消息大小。
调用 gss_wrap_size_limit() 时,Sun 的 GSS-API 实现可以检测无效 QOP 值。
在 Sun 的 GSS-API 实现中,函数仅返回 minor_status 参数中特定于机制的信息。其他实现可能包括特定于实现的返回值作为返回的次状态码的一部分。
每个 GSS-API 函数都会返回两个状态码:主状态码和次状态码。主状态码与 GSS-API 的行为相关。例如,如果应用程序尝试在安全上下文到期后传输消息,则 GSS-API 将返回 GSS_S_CONTEXT_EXPIRED 的主状态码。GSS-API 状态码中列出了主状态码。
次状态码是由给定的 GSS-API 实现支持的基础安全机制返回的。每个 GSS-API 函数都采用 minor_status 或 minor_stat 参数作为第一个变量。无论函数是否成功返回,应用程序都可以检查此参数,以了解基础机制返回的状态。
下表列出了 minor_status 参数中的 Kerberos v5 返回的状态消息。有关 GSS-API 状态码的更多信息,请参见GSS-API 状态码。
下表列出了 Kerberos v5 中状态码 1 的返回的次状态消息。
表 B–5 Kerberos v5 状态码 1
次状态 |
值 |
含义 |
---|---|---|
KRB5KDC_ERR_NONE |
-1765328384L |
无错误 |
KRB5KDC_ERR_NAME_EXP |
-1765328383L |
数据库中的客户机项已过期 |
KRB5KDC_ERR_SERVICE_EXP |
-1765328382L |
数据库中的服务器项已过期 |
KRB5KDC_ERR_BAD_PVNO |
-1765328381L |
请求的协议版本不受支持 |
KRB5KDC_ERR_C_OLD_MAST_KVNO |
-1765328380L |
客户机的密钥用旧的主密钥加密 |
KRB5KDC_ERR_S_OLD_MAST_KVNO |
-1765328379L |
服务器的密钥用旧的主密钥加密 |
KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN |
-1765328378L |
在 Kerberos 数据库中找不到客户机 |
KRB5KDC_ERR_S_PRINCIPAL_UNKNOWN |
-1765328377L |
在 Kerberos 数据库中找不到服务器 |
KRB5KDC_ERR_PRINCIPAL_NOT_UNIQUE |
-1765328376L |
主体具有 Kerberos 数据库中的多项 |
KRB5KDC_ERR_NULL_KEY |
-1765328375L |
客户机或服务器具有空密钥 |
KRB5KDC_ERR_CANNOT_POSTDATE |
-1765328374L |
票证的生效期不能延后 |
KRB5KDC_ERR_NEVER_VALID |
-1765328373L |
请求的有效生命周期为负数或太短 |
KRB5KDC_ERR_POLICY |
-1765328372L |
KDC 策略拒绝请求 |
KRB5KDC_ERR_BADOPTION |
-1765328371L |
KDC 无法实现请求的选项 |
KRB5KDC_ERR_ETYPE_NOSUPP |
-1765328370L |
KDC 不支持加密类型 |
KRB5KDC_ERR_SUMTYPE_NOSUPP |
-1765328369L |
KDC 不支持校验和类型 |
KRB5KDC_ERR_PADATA_TYPE_NOSUPP |
-1765328368L |
KDC 不支持 padata 类型 |
KRB5KDC_ERR_TRTYPE_NOSUPP |
-1765328367L |
KDC 不支持传输的类型 |
KRB5KDC_ERR_CLIENT_REVOKED |
-1765328366L |
已撤销客户机的凭证 |
KRB5KDC_ERR_SERVICE_REVOKED |
-1765328365L |
已撤销服务器的凭证 |
下表列出了 Kerberos v5 中状态码 2 的返回的次状态消息。
表 B–6 Kerberos v5 状态码 2
次状态 |
值 |
含义 |
---|---|---|
KRB5KDC_ERR_TGT_REVOKED |
-1765328364L |
已撤销 TGT |
KRB5KDC_ERR_CLIENT_NOTYET |
-1765328363L |
客户机尚无效,请稍后重试 |
KRB5KDC_ERR_SERVICE_NOTYET |
-1765328362L |
服务器尚无效,请稍后重试 |
KRB5KDC_ERR_KEY_EXP |
-1765328361L |
口令已过期 |
KRB5KDC_ERR_PREAUTH_FAILED |
-1765328360L |
预验证失败 |
KRB5KDC_ERR_PREAUTH_REQUIRED |
-1765328359L |
需要其他预验证 |
KRB5KDC_ERR_SERVER_NOMATCH |
-1765328358L |
请求的服务器和票证不匹配 |
KRB5PLACEHOLD_27 到 KRB5PLACEHOLD_30 |
-1765328357L 到 -1765328354L |
KRB5 错误码 27 到 30(保留) |
KRB5KRB_AP_ERR_BAD_INTEGRITY |
-1765328353L |
解密完整性检查失败 |
KRB5KRB_AP_ERR_TKT_EXPIRED |
-1765328352L |
票证已过期 |
KRB5KRB_AP_ERR_TKT_NYV |
-1765328351L |
票证尚无效 |
KRB5KRB_AP_ERR_REPEAT |
-1765328350L |
请求为重放 |
KRB5KRB_AP_ERR_NOT_US |
-1765328349L |
票证不是供我们使用 |
KRB5KRB_AP_ERR_BADMATCH |
-1765328348L |
票证/验证者不匹配 |
KRB5KRB_AP_ERR_SKEW |
-1765328347L |
时钟相位差太大 |
KRB5KRB_AP_ERR_BADADDR |
-1765328346L |
网络地址不正确 |
KRB5KRB_AP_ERR_BADVERSION |
-1765328345L |
协议版本不匹配 |
KRB5KRB_AP_ERR_MSG_TYPE |
-1765328344L |
消息类型无效 |
KRB5KRB_AP_ERR_MODIFIED |
-1765328343L |
消息流已经过修改 |
KRB5KRB_AP_ERR_BADORDER |
-1765328342L |
消息无序 |
KRB5KRB_AP_ERR_ILL_CR_TKT |
-1765328341L |
非法的跨领域票证 |
KRB5KRB_AP_ERR_BADKEYVER |
-1765328340L |
密钥版本不可用 |
下表列出了 Kerberos v5 中状态码 3 的返回的次状态消息。
表 B–7 Kerberos v5 状态码 3
次状态 |
值 |
含义 |
---|---|---|
KRB5KRB_AP_ERR_NOKEY |
-1765328339L |
服务密钥不可用 |
KRB5KRB_AP_ERR_MUT_FAIL |
-1765328338L |
相互验证失败 |
KRB5KRB_AP_ERR_BADDIRECTION |
-1765328337L |
消息方向不正确 |
KRB5KRB_AP_ERR_METHOD |
-1765328336L |
需要替换验证方法 |
KRB5KRB_AP_ERR_BADSEQ |
-1765328335L |
消息中的序列号不正确 |
KRB5KRB_AP_ERR_INAPP_CKSUM |
-1765328334L |
消息中的校验和类型不适合 |
KRB5PLACEHOLD_51 到 KRB5PLACEHOLD_59 |
-1765328333L 到 -1765328325L |
KRB5 错误码 51 到 59(保留) |
KRB5KRB_ERR_GENERIC |
-1765328324L |
一般性错误 |
KRB5KRB_ERR_FIELD_TOOLONG |
-1765328323L |
字段对于此实现太长 |
KRB5PLACEHOLD_62 到 KRB5PLACEHOLD_127 |
-1765328322L 到 -1765328257L |
KRB5 错误码 62 到 127(保留) |
未返回值 |
-1765328256L |
仅供内部使用 |
KRB5_LIBOS_BADLOCKFLAG |
-1765328255L |
文件锁定模式的标志无效 |
KRB5_LIBOS_CANTREADPWD |
-1765328254L |
无法读取口令 |
KRB5_LIBOS_BADPWDMATCH |
-1765328253L |
口令不匹配 |
KRB5_LIBOS_PWDINTR |
-1765328252L |
口令读取中断 |
KRB5_PARSE_ILLCHAR |
-1765328251L |
组件名称存在非法字符 |
KRB5_PARSE_MALFORMED |
-1765328250L |
主体的错误格式表示 |
KRB5_CONFIG_CANTOPEN |
-1765328249L |
无法打开/找到 Kerberos /etc/krb5/krb5 配置文件 |
KRB5_CONFIG_BADFORMAT |
-1765328248L |
Kerberos /etc/krb5/krb5 配置文件的格式不正确 |
KRB5_CONFIG_NOTENUFSPACE |
-1765328247L |
空间不足,无法返回完整信息 |
KRB5_BADMSGTYPE |
-1765328246L |
为编码指定了无效的消息类型 |
KRB5_CC_BADNAME |
-1765328245L |
凭证高速缓存名称格式错误 |
下表列出了 Kerberos v5 中状态码 4 的返回的次状态消息。
表 B–8 Kerberos v5 状态码 4
次状态 |
值 |
含义 |
---|---|---|
KRB5_CC_UNKNOWN_TYPE |
-1765328244L |
未知的凭证高速缓存类型 |
KRB5_CC_NOTFOUND |
-1765328243L |
未找到匹配的凭证 |
KRB5_CC_END |
-1765328242L |
到达凭证高速缓存的结尾 |
KRB5_NO_TKT_SUPPLIED |
-1765328241L |
请求未提供票证 |
KRB5KRB_AP_WRONG_PRINC |
-1765328240L |
请求中的主体错误 |
KRB5KRB_AP_ERR_TKT_INVALID |
-1765328239L |
票证具有无效的标志集 |
KRB5_PRINC_NOMATCH |
-1765328238L |
请求的主体和票证不匹配 |
KRB5_KDCREP_MODIFIED |
-1765328237L |
KDC 回复与预期情况不匹配 |
KRB5_KDCREP_SKEW |
-1765328236L |
KDC 回复中的时钟相位差太大 |
KRB5_IN_TKT_REALM_MISMATCH |
-1765328235L |
初始票证请求中的客户机/服务器领域不匹配 |
KRB5_PROG_ETYPE_NOSUPP |
-1765328234L |
程序缺少加密类型支持 |
KRB5_PROG_KEYTYPE_NOSUPP |
-1765328233L |
程序缺少密钥类型支持 |
KRB5_WRONG_ETYPE |
-1765328232L |
消息中未使用请求的加密类型 |
KRB5_PROG_SUMTYPE_NOSUPP |
-1765328231L |
程序缺少校验和类型支持 |
KRB5_REALM_UNKNOWN |
-1765328230L |
找不到请求领域的 KDC |
KRB5_SERVICE_UNKNOWN |
-1765328229L |
Kerberos 服务未知 |
KRB5_KDC_UNREACH |
-1765328228L |
无法访问请求领域的任何 KDC |
KRB5_NO_LOCALNAME |
-1765328227L |
未找到主体名称的本地名称 |
KRB5_MUTUAL_FAILED |
-1765328226L |
相互验证失败 |
KRB5_RC_TYPE_EXISTS |
-1765328225L |
已注册重放高速缓存类型 |
KRB5_RC_MALLOC |
-1765328224L |
无更多内存可供分配(用重放高速缓存代码) |
KRB5_RC_TYPE_NOTFOUND |
-1765328223L |
重放高速缓存类型未知 |
下表列出了 Kerberos v5 中状态码 5 的返回的次状态消息。
表 B–9 Kerberos v5 状态码 5
次状态 |
值 |
含义 |
---|---|---|
KRB5_RC_UNKNOWN |
-1765328222L |
一般性未知 RC 错误 |
KRB5_RC_REPLAY |
-1765328221L |
消息为重放 |
KRB5_RC_IO |
-1765328220L |
重放 I/O 操作失败 |
KRB5_RC_NOIO |
-1765328219L |
重放高速缓存类型不支持非易失性存储 |
KRB5_RC_PARSE |
-1765328218L |
重放高速缓存名称解析和格式错误 |
KRB5_RC_IO_EOF |
-1765328217L |
重放高速缓存 I/O 的文件结束 |
KRB5_RC_IO_MALLOC |
-1765328216L |
无更多内存可供分配(用重放高速缓存 I/O 代码) |
KRB5_RC_IO_PERM |
-1765328215L |
重放高速缓存代码中权限被拒绝 |
KRB5_RC_IO_IO |
-1765328214L |
重放高速缓存 I/O 代码中的 I/O 错误 |
KRB5_RC_IO_UNKNOWN |
-1765328213L |
一般性未知 RC/IO 错误 |
KRB5_RC_IO_SPACE |
-1765328212L |
存储重放信息的系统空间不足 |
KRB5_TRANS_CANTOPEN |
-1765328211L |
无法打开/找到领域转换文件 |
KRB5_TRANS_BADFORMAT |
-1765328210L |
领域转换文件的格式不正确 |
KRB5_LNAME_CANTOPEN |
-1765328209L |
无法打开或找到 lname 转换数据库 |
KRB5_LNAME_NOTRANS |
-1765328208L |
不能对请求的主体进行转换 |
KRB5_LNAME_BADFORMAT |
-1765328207L |
转换数据库项的格式不正确 |
KRB5_CRYPTO_INTERNAL |
-1765328206L |
密码系统内部错误 |
KRB5_KT_BADNAME |
-1765328205L |
密钥表名称格式错误 |
KRB5_KT_UNKNOWN_TYPE |
-1765328204L |
未知的密钥表类型 |
KRB5_KT_NOTFOUND |
-1765328203L |
未找到密钥表项 |
KRB5_KT_END |
-1765328202L |
到达密钥表的结尾 |
KRB5_KT_NOWRITE |
-1765328201L |
无法写入指定的密钥表 |
下表列出了 Kerberos v5 中状态码 6 的返回的次状态消息。
表 B–10 Kerberos v5 状态码 6
次状态 |
值 |
含义 |
---|---|---|
KRB5_KT_IOERR |
-1765328200L |
写入密钥表时出错 |
KRB5_NO_TKT_IN_RLM |
-1765328199L |
找不到请求领域的票证 |
KRB5DES_BAD_KEYPAR |
-1765328198L |
DES 密钥包含错误的奇偶校验 |
KRB5DES_WEAK_KEY |
-1765328197L |
DES 密钥为弱密钥 |
KRB5_BAD_ENCTYPE |
-1765328196L |
错误的加密类型 |
KRB5_BAD_KEYSIZE |
-1765328195L |
密钥大小与加密类型不兼容 |
KRB5_BAD_MSIZE |
-1765328194L |
消息大小与加密类型不兼容 |
KRB5_CC_TYPE_EXISTS |
-1765328193L |
已注册凭证高速缓存类型 |
KRB5_KT_TYPE_EXISTS |
-1765328192L |
已注册密钥表类型 |
KRB5_CC_IO |
-1765328191L |
凭证高速缓存 I/O 操作失败 |
KRB5_FCC_PERM |
-1765328190L |
凭证高速缓存文件权限不正确 |
KRB5_FCC_NOFILE |
-1765328189L |
未找到凭证高速缓存文件 |
KRB5_FCC_INTERNAL |
-1765328188L |
内部文件凭证高速缓存错误 |
KRB5_CC_WRITE |
-1765328187L |
写入凭证高速缓存文件时出错 |
KRB5_CC_NOMEM |
-1765328186L |
没有更多内存可供分配(用凭证高速缓存代码) |
KRB5_CC_FORMAT |
-1765328185L |
凭证高速缓存中的格式错误 |
KRB5_INVALID_FLAGS |
-1765328184L |
无效的 KDC 选项组合,即内部库错误 |
KRB5_NO_2ND_TKT |
-1765328183L |
请求缺失的第二个票证 |
KRB5_NOCREDS_SUPPLIED |
-1765328182L |
未向库例程提供凭证 |
KRB5_SENDAUTH_BADAUTHVERS |
-1765328181L |
发送了错误的 sendauth 版本 |
KRB5_SENDAUTH_BADAPPLVERS |
-1765328180L |
sendauth 发送了错误的应用程序版本 |
KRB5_SENDAUTH_BADRESPONSE |
-1765328179L |
错误响应(sendauth 交换期间) |
KRB5_SENDAUTH_REJECTED |
-1765328178L |
服务器在执行 sendauth 交换期间拒绝验证 |
下表列出了 Kerberos v5 中状态码 7 的返回的次状态消息。
表 B–11 Kerberos v5 状态码 7
次状态 |
值 |
含义 |
---|---|---|
KRB5_PREAUTH_BAD_TYPE |
-1765328177L |
预验证类型不受支持 |
KRB5_PREAUTH_NO_KEY |
-1765328176L |
未提供所需的预验证密钥 |
KRB5_PREAUTH_FAILED |
-1765328175L |
一般性预验证故障 |
KRB5_RCACHE_BADVNO |
-1765328174L |
重放高速缓存的格式版本号不受支持 |
KRB5_CCACHE_BADVNO |
-1765328173L |
凭证高速缓存格式版本号不受支持 |
KRB5_KEYTAB_BADVNO |
-1765328172L |
密钥表格式的版本号不受支持 |
KRB5_PROG_ATYPE_NOSUPP |
-1765328171L |
程序缺少地址类型支持 |
KRB5_RC_REQUIRED |
-1765328170L |
消息重放检测需要 rcache 参数 |
KRB5_ERR_BAD_HOSTNAME |
-1765328169L |
主机名无法规范 |
KRB5_ERR_HOST_REALM_UNKNOWN |
-1765328168L |
无法确定主机的领域 |
KRB5_SNAME_UNSUPP_NAMETYPE |
-1765328167L |
未针对名称类型定义转换到服务主体 |
KRB5KRB_AP_ERR_V4_REPLY |
-1765328166L |
最初的票证响应似乎为版本 4 错误 |
KRB5_REALM_CANT_RESOLVE |
-1765328165L |
无法解析请求领域的 KDC |
KRB5_TKT_NOT_FORWARDABLE |
-1765328164L |
请求票证无法获取可转发票证 |
KRB5_FWD_BAD_PRINCIPAL |
-1765328163L |
尝试转发凭证时的错误主体名称 |
KRB5_GET_IN_TKT_LOOP |
-1765328162L |
在 krb5_get_in_tkt 中检测到循环 |
KRB5_CONFIG_NODEFREALM |
-1765328161L |
配置文件 /etc/krb5/krb5.conf 未指定缺省领域 |
KRB5_SAM_UNSUPPORTED |
-1765328160L |
obtain_sam_padata 中的 SAM 标志错误 |
KRB5_KT_NAME_TOOLONG |
-1765328159L |
密钥表名称太长 |
KRB5_KT_KVNONOTFOUND |
-1765328158L |
密钥表中的主体的密钥版本号不正确 |
KRB5_CONF_NOT_CONFIGURED |
-1765328157L |
未配置 Kerberos /etc/krb5/krb5.conf 配置文件 |
ERROR_TABLE_BASE_krb5 |
-1765328384L |
缺省值 |