kadmin.local kinitadmin/admin kadmin
增删改查账户:在管理员的状态下使用addprinc,delprinc,modprinc,listprincs命令。使用?可以列出所有的命令。
kamdin:addprinc-randkeyhdfs/hadoop1 kamdin:delprinchdfs/hadoop1 kamdin:listprincs命令 生成keytab:使用xst命令或者ktadd命令 kadmin:xst-k/xxx/xxx/kerberos.keytabhdfs/server1 用户操作
查看当前的认证用户:klist
认证用户:kinit-kt/xx/xx/kerberos.keytabhdfs/server1 删除当前的认证的缓存:kdestroy
google authenticator:
基于TOTP(Time-based One-time Password,基于时间的一次性密码)
TOTP(基于时间的一次性密码算法)是支持时间作为动态因素基于HMAC一次性密码算法的扩展。
条件:
1)Prover与Verifier之间必须时钟同步;
2)Prover与Verifier之间必须共享密钥;
3)Prover与Verifier之间必须使用相同的时间步长
算法:
K 共享密钥
T 时间
T0 开始计数的时间步长
X 时间步长
TOTP = Truncate(HMAC-SHA-1(K, (T - T0) / X))
使用Google Authenticator的步骤:
1. 服务器端对每个用户生成一个唯一的密钥SecretKey。
2. 用户在手机上安装Google Authenticator。首次使用需要将密钥输入到Google Authenticator。可通过手动和扫描系统生成的二维码等两种方式输入密钥信息。
3. Google Authenticator每隔一段时间为系统自动生成一个新的密码。用户在输入口令前需先输入生成的动态验证码。
客户端实现
python实现:
#!/usr/bin/envpython
#-*-coding:utf-8-*-
importhmac,base64,struct,hashlib,time,sys,os
defget_hotp_token(secret,intervals_no):
key=base64.b32decode(secret)
msg=struct.pack(">Q",intervals_no)
h=hmac.new(key,msg,hashlib.sha1).digest()
o=ord(h[19])&15
h=(struct.unpack(">I",h[o:o+4])[0]&0x7fffffff)%1000000
returnh
defget_totp_token(secret):
returnget_hotp_token(secret,intervals_no=int(time.time())//30)
#Sec=str(sys.argv[1])
Sec=xxxxxxx
validation_code=str(get_totp_token(Sec))
printvalidation_code
ruby实现:
#!/usr/bin/ruby requirerubygems requirebase32 requireopenssl int=30 now=Time.now.to_i/int key=Base32.decodexxxxxxxx sha=OpenSSL::Digest::Digest.new(sha1) (-1..1).eachdo|x| bytes=[now+x].pack(>q).reverse hmac=OpenSSL::HMAC.digest(sha,key.to_s,bytes) offset=hmac[-1]&0x0F hash=hmac[offset...offset+4] code=hash.reverse.unpack(L)[0] code&=0x7FFFFFFF code%=1000000 putscode end
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-24622-4.html
婚姻制度实际上在快速走向消亡
凡凡凡凡凡
但会有一场战争