kinit: Preauthentication failed while getting initial credentials
kinit -kt /etc/security/keytabs/ozone.keytab om/o103@EXAMPLE.COM
kinit: Preauthentication failed while getting initial credentials
# 说明这个主体在使用中,不能再重复登录
Oct 17 00:26:40 ecf55c551ef1 krb5kdc[11](info): AS_REQ (7 etypes {aes256-cts-hmac-sha1-96(18), aes128-cts-hmac-sha1-96(17), aes256-cts-hmac-sha384-192(20), aes128-cts-hmac-sha256-128(19), DEPRECATED:arcfour-hmac(23), camellia128-cts-cmac(25), camellia256-cts-cmac(26)}) 192.168.69.101: NEEDED_PREAUTH: om/o103@EXAMPLE.COM for krbtgt/EXAMPLE.COM@EXAMPLE.COM, Additional pre-authentication required
Oct 17 00:26:50 ecf55c551ef1 krb5kdc[11](info): preauth (encrypted_timestamp) verify failure: Preauthentication failed
Oct 17 00:26:50 ecf55c551ef1 krb5kdc[11](info): AS_REQ (7 etypes {aes256-cts-hmac-sha1-96(18), aes128-cts-hmac-sha1-96(17), aes256-cts-hmac-sha384-192(20), aes128-cts-hmac-sha256-128(19), DEPRECATED:arcfour-hmac(23), camellia128-cts-cmac(25), camellia256-cts-cmac(26)}) 192.168.69.101: PREAUTH_FAILED: om/o103@EXAMPLE.COM for krbtgt/EXAMPLE.COM@EXAMPLE.COM, Preauthentication failed
# 进入 kadmin 命令行界面
kadmin
# 列出所有主体
kadmin: list_principals
# 创建新主体
kadmin: add_principal testuser@EXAMPLE.COM
# 验证主体存在
kadmin: list_principals
# 退出 kadmin 命令行界面
kadmin: quit
kadmin.local -q "addprinc root/admin"
Authenticating as principal root/admin@EXAMPLE.COM with password.
No policy specified for root/admin@EXAMPLE.COM; defaulting to no policy
Enter password for principal "root/admin@EXAMPLE.COM": 
Re-enter password for principal "root/admin@EXAMPLE.COM": 
add_principal: Principal or policy already exists while creating "root/admin@EXAMPLE.COM".
## 使用 kadmin.local 命令添加主体(principal)时,可以同时设置密码。以下是如何更改密码的示例:
kadmin.local -q "addprinc -pw <password> root/admin@EXAMPLE.COM"
## 如果您已经创建了主体,但想要更改密码,可以使用以下命令:
kadmin.local -q "cpw -pw <new_password> root/admin@EXAMPLE.COM"
kadmin 命令是一个强大的工具,用于管理和维护 Kerberos 数据库。以下是一些常见的 kadmin 命令:
主体管理命令:
addprinc:添加新的主体(principal)到 Kerberos 数据库。modprinc:修改现有的主体(principal)的属性。delprinc:删除主体(principal)从 Kerberos 数据库。list_principals:列出 Kerberos 数据库中的所有主体(principal)。
密码管理命令:
cpw:更改主体的密码。
策略管理命令:
add_policy:添加新的策略(policy)到 Kerberos 数据库。mod_policy:修改现有的策略(policy)的属性。del_policy:删除策略(policy)从 Kerberos 数据库。list_policies:列出 Kerberos 数据库中的所有策略(policy)。
其他命令:
get_principal:获取主体的详细信息。get_policy:获取策略的详细信息。ktadd:将主体添加到密钥表(keytab)文件中。ktremove:从密钥表(keytab)文件中删除主体。
以下是 kadmin 命令的详细用法:
# 添加新主体
kadmin: addprinc [-policy policy_name] [-pw password] principal_name
# 修改主体属性
kadmin: modprinc [-policy policy_name] [-pw password] principal_name
# 删除主体
kadmin: delprinc principal_name
# 列出所有主体
kadmin: list_principals
# 更改密码
kadmin: cpw [-pw password] principal_name
# 添加新策略
kadmin: add_policy [-description description] policy_name
# 修改策略属性
kadmin: mod_policy [-description description] policy_name
# 删除策略
kadmin: del_policy policy_name
# 列出所有策略
kadmin: list_policies
# 获取主体详细信息
kadmin: get_principal principal_name
# 获取策略详细信息
kadmin: get_policy policy_name
请注意,具体的命令选项和用法可能会因 Kerberos 实现和版本而有所不同。
以下是 Kerberos 命令行工具的用途:
k5srvutil:k5srvutil 是一个 Kerberos 服务端实用程序,用于管理 Kerberos 服务端。它可以用于启动、停止和重启 Kerberos 服务端。
kadmin:kadmin 是一个 Kerberos 管理工具,用于管理 Kerberos 数据库。它可以用于添加、删除和修改 Kerberos 用户、组和策略。
kdestroy:kdestroy 是一个 Kerberos 命令行工具,用于销毁 Kerberos 票据(ticket)。它可以用于删除缓存的 Kerberos 票据。
kinit:kinit 是一个 Kerberos 命令行工具,用于获取和缓存 Kerberos 票据(ticket)。它可以用于认证用户和服务。
klist:klist 是一个 Kerberos 命令行工具,用于列出缓存的 Kerberos 票据(ticket)。它可以用于查看当前用户的 Kerberos 票据。
kpasswd:kpasswd 是一个 Kerberos 命令行工具,用于更改 Kerberos 用户的密码。它可以用于更新用户的密码。
ksu:ksu 是一个 Kerberos 命令行工具,用于切换到另一个 Kerberos 用户。它可以用于模拟另一个用户。
kswitch:kswitch 是一个 Kerberos 命令行工具,用于切换 Kerberos 票据(ticket)。它可以用于切换到另一个 Kerberos 票据。
ktutil:ktutil 是一个 Kerberos 命令行工具,用于管理 Kerberos 密钥表(keytab)。它可以用于添加、删除和修改密钥表条目。
kvno:kvno 是一个 Kerberos 命令行工具,用于显示 Kerberos 服务的版本号。它可以用于查看服务的版本号。
kadmin.local:kadmin.local 是一个 Kerberos 管理工具,用于管理 Kerberos 数据库。它可以用于添加、删除和修改 Kerberos 用户、组和策略。
kadmind:kadmind 是一个 Kerberos 管理守护进程,用于管理 Kerberos 数据库。它可以用于添加、删除和修改 Kerberos 用户、组和策略。
kdb5_ldap_util:kdb5_ldap_util 是一个 Kerberos 数据库工具,用于管理 Kerberos 数据库与 LDAP 目录服务之间的交互。
kdb5_util:kdb5_util 是一个 Kerberos 数据库工具,用于管理 Kerberos 数据库。它可以用于添加、删除和修改 Kerberos 用户、组和策略。
kprop:kprop 是一个 Kerberos 命令行工具,用于传播 Kerberos 数据库更改到从服务器。
kpropd:kpropd 是一个 Kerberos 守护进程,用于监听从服务器的更新请求,并将更新应用于本地数据库。
kproplog:kproplog 是一个 Kerberos 命令行工具,用于显示 Kerberos 数据库更新日志。
krb5-send-pr:krb5-send-pr 是一个 Kerberos 命令行工具,用于发送 Kerberos 问题报告。
krb5kdc:krb5kdc 是一个 Kerberos 密钥分发中心(KDC)守护进程,用于管理 Kerberos 密钥和票据。
gss-server:gss-server 是一个 Kerberos 服务端示例程序,用于演示 GSS-API(通用安全服务 API)的使用。
sim_server:sim_server 是一个 Kerberos 服务端示例程序,用于模拟 Kerberos 服务端的行为。
sserver:sserver 是一个 Kerberos 服务端示例程序,用于演示 Kerberos 身份验证和授权。
uuserver:uuserver 是一个 Kerberos 客户端示例程序,用于演示 Kerberos 身份验证和授权。
JAAS
JAAS 是 Java Authentication and Authorization Service 的缩写。
JAAS 是 Java 平台提供的一种认证和授权服务,用于管理用户身份验证和访问控制。它提供了一套 API 和工具,使得开发者可以在 Java 应用程序中实现认证和授权功能。
JAAS 的主要功能包括:
- 身份验证(Authentication):验证用户的身份,确保用户是谁。
 - 授权(Authorization):控制用户对资源的访问权限,确保用户可以访问哪些资源。
 
JAAS 配置文件通常名为 jaas.conf,用于配置 JAAS 的认证和授权策略。该文件通常包含以下信息:
- 认证模块(Authentication Module):指定用于认证的模块。
 - 授权策略(Authorization Policy):指定访问控制策略。
 
在 Kerberos 认证中,JAAS 配置文件通常用于配置 Kerberos 认证模块,以实现基于 Kerberos 的认证和授权。
authentication 英 [ɔːˌθentɪˈkeɪʃn] 美 [ɔːˌθentɪˈkeɪʃn]
n. 证明真实性,鉴定;身份验证,认证
authorization 英 [ˌɔːθəraɪˈzeɪʃ(ə)n] 美 [ˌɔːθərəˈzeɪʃ(ə)n]
 n. 批准书,授权书;批准,授权
DEFAULT_REGISTRY_CLIENT_JAAS_CONTEXT
default client-side registry JAAS context: “Client”.
https://hadoop.apache.org/docs/stable/api/org/apache/hadoop/registry/client/api/RegistryConstants.html
