美文网首页
kerbos认证过程笔记

kerbos认证过程笔记

作者: 一生爱漂泊 | 来源:发表于2019-12-28 14:30 被阅读0次

    参考文章链接https://blog.csdn.net/scythe666/article/details/53429819

    kerbos认证过程

    第一步骤、client向AS发送Authentication Service Request即ASR申请,内容包含:

    Pre-authentication data:包含用以证明自己身份的信息。说白了,就是证明自己知道自己声称的那个account的Password。一般地,它的内容是一个被Client的Master key加密过的Timestamp。

    Client name & realm: 简单地说就是Domain name\Client

    Server Name:注意这里的Server Name并不是Client真正要访问的Server的名称,而我们也说了TGT是和Server无关的(Client只能使用Ticket,而不是TGT去访问Server)。这里的Server Name实际上是KDC的Ticket Granting Service的Server Name

    获取client的master key加密的 session-key(skdc-client ) 和 TGT, TGT包含skdc-client session-key ,client-name, end time(TGT的过期时间)

    第二步骤、client向server请求TGT,server走第一步中client走的步骤申请 KDC和server的TGT

    第三步骤、client向KDC中TGS Exchange发送Ticket Granting Service Request(KRB_TGS_REQ)

    大体包含以下内容:

    Client-TGT:Client通过AS Exchange获得的Ticket Granting Ticket,TGT被KDC的Master Key进行加密。

    server-TGT:server通过AS Exchange获得的Ticket Granting Ticket,TGT被KDC的Master Key进行加密。

    Authenticator:用以证明当初TGT的拥有者是否就是自己,所以它必须以Session Key(SKDC-Client:Logon Session Key)来进行加密。

    Client name & realm: 简单地说就是Domain name\Client。

    Server name & realm: 简单地说就是Domain name\Server,这回是Client试图访问的那个Server。

    KDC收到请求后先确定Client-TGT是不是AS颁发给客户端的,以自身masterkey解密客户端TGT,然后获取session-key也就是client-kdc key,然后解密Authenticator,验证通过后,返回一个KRB_TGS_REP:

    1、使用Logon Session Key(SKDC-Client)加密过用于Client和Server的Session Key(SServer-Client)

    2、使用Server的Master Key进行加密的Ticket

    3、使用server-TGT中skdc-server session-key加密的TICKET:

            Session Key:SServer-Client。

            Client name & realm: 简单地说就是Domain name\Client。

             End time: Ticket的到期时间。

    客户端收到KRB_TGS_REP之后,通过skdc-client session-key解密server-client session key

    第四步骤、向server发送KRB_AP_REQ:

            1、使用server-client key加密的Authenticator验证client的身份

            2、3步骤中获取的kdc-server session-key加密的TICKET

    server收到KRB_AP_REQ之后,通过自己缓存的kdc-server session-key解密Ticket,从而获得Session Key(SServer-Client)通过SServer-Client解密Authenticator实现对Client的验证。

    如果向server发送KRB_AP_REQ设置需要进行双向验证Server从Authenticator提取Timestamp,使用Session Key(SServer-Client)进行加密,并将其发送给Client用于Client验证Server的身份。

    相关文章

      网友评论

          本文标题:kerbos认证过程笔记

          本文链接:https://www.haomeiwen.com/subject/zcdsoctx.html