Kerberos Authentication

Kerberos是MIT开发的一种双端认证机制, 原意是守护地狱的三头犬.

什么叫双端认证呢? 就是不光是服务器要认证用户, 用户也要认证服务器.

 

Kerberos是通过ticket来进行认证的. ticket相当于门票的意思. ticket是有有效期的, 有效期内都可以使用, 不用每次都申请新的.

Kerberos认证系统中, 有一个或多个用来生成和检验ticket的认证服务器, 叫KDC. 所有需要认证的服务都有一个principal, 比如我在系统中配了一台ldap服务器, 这个服务器通过Kerberos来进行验证, 那么这个服务器在KDC就有一个注册的principal. KDC在注册principal的时候会生成一个或多个用来加密的key, 加密方式有很多种, 比如DES.

 

举个例子吧. 马尔代夫卡尼岛自从提供一价全包服务之后生意火爆, 导致出现了一些不好的现象, 一些没交钱的用户偷渡到岛上混吃混喝, 还有一些黑心的员工提供劣质服务欺骗用户. 为了打击这些现象, 卡尼岛决定引入一种叫做"三头看门狗"式服务规范.

当你预定了一个一价全包的马尔代夫卡尼岛7日游, 你交完钱之后, 就可以去"卡尼岛票据中心"领取一张"全包票", 拿这张票, 岛上服务全部免费! 于是你就拿了一张"全包票"开始了你的卡尼岛之行. 你听说岛上有一个"ldap服务中心", 可以提供一种叫ldap的"马杀鸡"服务相当的爽, 于是你跑去想试试. 你去请求服务的时候, "ldap服务中心"会问你要一张"ldap票". 可是你手里只有一张"全包票", 怎么办呢? 于是你拿着你的"全包票"跑去找"卡尼岛票据中心", "卡尼岛票据中心"检查完你的"全包票"之后, 查看他的"服务注册清单", 发现"ldap马杀鸡服务"在上面, 就会发给你"ldap票", 拿着它你就可以享受"马杀鸡"服务, 并且, 下次去的时候, 拿着你上次申请的"ldap票"就可以了.

 

这里卡尼岛是一个"realm", 是Kerberos服务认证的通行范围. "卡尼岛票据中心"是这个realm中的KDC, 负责分发和检查ticket. ldap服务在KDC注册了一个"ldap"的principal. 你通过用户和密码可以从KDC拿到初始ticket. 当你需要访问ldap服务的时候, 拿初始ticket去KDC换一张ldap ticket. KDC检查你要访问的principal, 给你一张加密过的ldap ticket, 密钥只有KDC和ldap服务器知道. 你拿着这张ticket去访问ldap服务的时候, ldap会用它的密钥来解密, 解出来是对的就可以提供你ldap服务了.

你可能感兴趣的:(Kerberos,authentication,服务器,加密,解密)