zoukankan      html  css  js  c++  java
  • Kerberos身份验证过程

    Kerberos是一种身份验证协议,用于单点登录(SSO)。SSO的概念是只进行一次身份验证,并使用令牌访问您有权使用的任何服务。
    

     

     Kerberos身份验证过程如下:

    第一步 计算机将密码转换为NTLM哈希,然后使用哈希对该时间戳进行加密,然后将其作为身份验证票证(TGT)请求中的身份验证器发送给KDC。(简称AS_REQ),

    这里UPN是解释看这里https://docs.microsoft.com/en-us/azure/active-directory/hybrid/howto-troubleshoot-upn-changes

    第二步 KDC用本地数据库里面的用户名的密码取解密验证UPN和时间搓,经过验证后,讲TGT签名加密返回给User,这里又有两种加密方式,一种是使用KDC的密码加密的TGT,另一种是会话密钥以及有效期的时间戳,并使用用户密码的哈希值加密。现在用户机器内存里面会有KDC返回的TGT和session KEy,这个TGT用于请求服务的时候,seesion Key用于与KDC的交互从而无需凭证,域内的所有资源都可以当成service,并且需要的TGT相同。

    第三步:user使用sessionkey带着TGT向KDC发送请求以获取TGS(访问服务的票据),SPN包含服务名称 ip 端口号和时间搓。(简称TGS_REQ)

    SPN看这里https://docs.microsoft.com/en-us/windows-server/networking/sdn/security/kerberos-with-spn

    第四步:KDC使用用户在第二步的seession KEy or KDC‘S 解密该请求数据,并且检查SPN和使用KDC密码加密的时间戳和TGT,如果所有信息均有效,那么KDC将返回service provider的密码hash加密的TGS,使用AS_REP会话密钥加密票证到期时间戳。(TGS_REP)

    第五步:user的计算机将使用AS过程的密钥解密并且提取TGS,用户计算机将该票据作为请求票据向域内的service进行请求,service用自身的密码解密该请求,并且提取AS过程中的session key以及客户端的其他属性和group,它验证这些详细信息并授予对应用程序的访问权限。

    参考

    https://docs.microsoft.com/en-us/windows-server/networking/sdn/security/kerberos-with-spn
    https://docs.microsoft.com/en-us/azure/active-directory/hybrid/howto-troubleshoot-upn-changes
    https://www.qomplx.com/about-kerberos/
    https://docs.microsoft.com/en-us/windows-server/security/windows-authentication/credentials-processes-in-windows-authentication
    https://blog.securelayer7.net/exploring-exploiting-active-directory-pen-test/
  • 相关阅读:
    Spark ListenerBus 和 MetricsSystem 体系分析
    Scala使用JUnit4单元测试
    Error:java: Compilation failed: internal java compiler error
    Spark 2.2 DataFrame的一些算子操作
    Spark SQL中UDF和UDAF
    Scala基础
    Spark Sql的UDF和UDAF函数
    Kafka笔记整理(二):Kafka Java API使用
    Kafka笔记整理(一)
    【口语英语】小学英语1-6年级听力必备知识汇总,建议收藏!
  • 原文地址:https://www.cnblogs.com/-zhong/p/14438634.html
Copyright © 2011-2022 走看看