- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图弄清楚kerberos身份验证是如何工作的,但我发现的信息总是缺少一些东西,就好像其中的一部分被认为是理所当然的。我大致了解该过程,但缺少一些细节。
获取 TGT:
首先,用户应从 KDC 获取 TGT(票证授予票证) - 用户发送仅包含其用户名 (UPN) 且不包含密码的请求。提供一些额外信息以防止重新发送请求,例如 IP 地址和时间戳。如果需要预身份验证,则时间将与用户的密码一起进行哈希处理。
KDC 正在向用户发回以下信息:A. TGT - 带有时间戳、用户名、IP 地址和 session key - TGT 使用只有 KDC 知道的 secret 进行加密,因此任何人都无法更改。
B. 用户和 KDC 在后续通信中使用的 session key 。
这些内容使用用户密码(KDC 和用户之间的基本共享 secret )进行加密。如果使用预身份验证,服务器将在发回信息之前检查时间戳是否有效。
用户接收信息并使用密码对其进行解密 - 然后将其存储在内存中(kerberos 托盘)。
获取 TGS:
当用户被请求从服务中验证自身身份时,他向 KDC 发送 TGS(票证授予服务)请求,该请求包含 TGT、UPN 和 SPN(服务主体名称 - 例如,网页的 URI)。
然后,KDC 解密 TGT 并验证其真实性,确认它与来自同一 IP 地址的 UPN 相对应并且仍然有效(票证具有有效时间段)。
KDC 向用户发送使用服务密码加密的 TGS。
用户向服务提供 TGS - 该服务使用自己的密码对其进行解密。
身份验证已完成,因为服务依赖于其密码仅在其与 KDC 之间共享这一事实,因此它相信 KDC 之前已对用户进行了身份验证。
几个问题:
我错过了什么还是仅此而已?
用户和 KDC 何时使用 session key ?在什么时候?为什么有必要?为什么用户密码不够?
用户和服务之间还应该有一个 session key (据我所知) - 何时以及为何使用它(与上一个问题相同)?
Kerberos 在各方之间有 5 分钟的间隙限制 - 我理解为什么保持时间同步很重要,因为它被用作我们加密和解密的东西,那么为什么任何间隙都可以呢?为什么是 5 分钟?
如果您有任何更正,我将很高兴。
提前致谢,托默
最佳答案
所以,我想我已经找到了答案。
由于问题有一些不准确的地方,我会进行一些更正。
Getting TGT:
- First a user should get a TGT (Ticket Granting Tickets) from the KDC - the user sends a request with only it's user name (UPN) and without it's password. Some extra information is given to prevent a resent of the request such as ip address and a timestamp. If preauthentication is required then the time is hashed with the user's password.
- The KDC is sending the user back the following:
A. TGT - with a timestamp, user name, ip address and a session key - the TGT is encrypted with a secret only the KDC knows and therefore cannot be changed by anyone.
所有这些都简称为“验证器”。
B. Session key for the user and the KDC to be used in later communication.Those things are encrypted using the users password (a basic shared secret amongst the KDC and the user). In case a preauthentication was used the server will check if the timestamp was valid before sending the information back.
TGT 本身仅由 KDC 的 secret 进行哈希处理,而不会根据用户的密码进行哈希处理。
- The users receive the information and decrypt it using it's password - and then stores it in it's memory (kerberos tray).
Getting TGS:
- When the user is requested to authenticate itself from a service he sends a request to the KDC for a TGS (Ticket Granting Service), the request contains the TGT, UPN and the SPN
该请求还包括一个新的身份验证器(而不是提到的 UPN),KDC 将对照 TGT 中的身份验证器进行检查。身份验证器使用用户的 session key 和 KDC 进行加密。 KDC 将使用其密码解密 TGT,然后从中提取 session key (它不会保存其中的信息),然后使用 session key 解密身份验证器。
(Service Principal Name - say, the URI of a webpage).
SPN 不包含 URI - 它包含主机、服务和端口 - 类似于:HTTP/localhost:80 或 ldap/localdc。如果使用默认端口(例如 HTTP 为 80 或 LDAP 为 389),则可以省略端口号。
- The KDC then decrypts the TGT and validate it's authenticity, that it is corresponds with the UPN, from the same IP address and still valid (the ticket has an effective time period).3. The KDC sends a TGS to the user encrypted with the service password.
KDC 还会发送一个 session key 供客户端和用户稍后使用。它使用 KDC 的 session key 和之前的用户进行加密发送 - session key (客户端和服务器)的另一个副本位于 TGS 本身内部,TGS 内部还驻留有客户端的身份验证器。
- The user presents the TGS to the service - which decrypts it using it's own password.5. The authentication is complete since the service counts on the fact that it's password is only shared between it and the KDC so it trusts that the KDC authenticated the user earlier.
用户还发送一个使用客户端和服务器的 session key 加密的身份验证器。然后,服务器使用其密码解密 TGS - 从 TGS 中提取 session key ,并使用它来解密身份验证器,并将其与 TGS 中的 key 进行比较。如果有效则客户端的身份验证完成。 Kerberos 还提供一个选项,供客户端对服务器进行身份验证(称为相互身份验证) - 如果客户端发送了相互身份验证标志,则还有另一个步骤。
A few questions:
- Am I missing something or that's it?
- When does the user and the KDC ever use the session key? At what point? Why is it necessary? Why does the user password isn't enough?
- There should also be a session key between the user and the service (to the best of my knowledge) - when and why is it used (same as the last question)?
- Kerberos has a 5 minute gap limitation between all parties - I understand why keeping the time in sync is important since it is used as something that we encrypt and decrypt so how come any gap is OK? Why 5 minutes?
希望有帮助。
所有内容都在此链接中(如果从头到尾阅读整个内容,则非常重复 - 您应该只阅读您想要理解的部分)- https://Technet.microsoft.com/en-us/library/cc772815(v=ws.10).aspx
我还阅读了一些 RFC - https://www.rfc-editor.org/rfc/rfc1510
还有两个不太详细的链接:
https://technet.microsoft.com/en-us/library/cc961976.aspx
https://technet.microsoft.com/en-us/library/aa480475.aspx (涉及 IIS 身份验证 - 有一部分提到并解释了 kerberos)。
关于kerberos - Kerberos 身份验证的工作原理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39735008/
我已经开始配置 kerberos。 谁能解释我们在 krb5.conf 文件中设置的票证生命周期和更新生命周期。 ticket_lifetime = 2d renew_lifetime = 7d 是
kerberos 只加密身份验证过程还是所有客户端通信? 我的印象是它就像 LAN 的 VPN。 以便所有 LAN 通信都被加密。就像所有互联网通信都通过 VPN 加密一样。 问候奥布里 最佳答案 K
我试图弄清楚kerberos身份验证是如何工作的,但我发现的信息总是缺少一些东西,就好像其中的一部分被认为是理所当然的。我大致了解该过程,但缺少一些细节。 获取 TGT: 首先,用户应从 KDC 获取
是否可以进行可选的 kerberos 身份验证? 我想要的是:如果客户端(浏览器)不在域中,它被重定向到用户名/密码网络登录。否则它会做 SPNEGO 做 Kerberos 认证。 有什么解决办法吗?
目前正在寻找使用 AD 的联合服务器。首先想到的是使用 ADFS 来管理跨域和领域的服务请求。也就是说,应用程序必须有权访问特定用例的 Kerberos 票证。 AD FS 是否在任何时候使用 Ker
我们想通过 Polybase 将我们的 SQL Server 2016 Enterprise 与我们的 Kerberized OnPrem Hadoop-Cluster 和 Cloudera 5.14
哪个性能测试工具支持带有 Kerberos 身份验证的网页? 仅仅回退到 NTLM 的工具是不够的。 最佳答案 我做了一些研究,可用工具列表是: Visual Studio 2010 Load tes
据我了解, SPN 是 Windows 服务的身份验证工具。 Kerberos 是一个用户认证服务 SPNEGO-GSSAPI 是第三方 API能够使用这些服务。 SSPI:是发送的中立层从 SPNE
我知道中央身份验证服务(CAS)和Kerberos都可以用于对建立 session 进行身份验证。这两种协议(protocol)至少涉及三方,并且将创建票证授予票证持续时间身份验证,那么CAS之间有哪
是否可以进行可选的 kerberos 身份验证? 我想要的是:如果客户端(浏览器)不在域上,它将被重定向到用户名/密码 Web 登录。否则它将执行 SPNEGO 执行 Kerberos 身份验证。 如
在我的 Kerberos 系统中: 运行 kinit test并输入 passwd ,成功。 通过 kadmin.local -q "xst -k test.keytab test" 生成 key 表
如何从 NIFI 连接到启用 Kerberos 的 Kudu? 我只看到一个处理器可以访问 Kudu - PutKUDU 并且它不支持 Kerberos。我没有在网上看到任何有关使用 Kerberos
我正在处理与数据库的 kerberized 连接。我想我了解kerberization的基础知识。用户请求KDC的“Authentication Server”部分获取TGT(Ticket Grant
情况如下: 我在 Windows 7 上使用 MIT Kerberos 客户端 kfw 4.0.1 执行此操作。我正在通过 OpenVPN 连接到使用 Kerberos 5 保护的 YARN 集群。这
我在我的机器上使用 MIT kerberos 5 对用户进行身份验证。这会将票证授予用户。我想将票的 maxlife 重置超过 24 小时。默认情况下,kerberos 票证的最长生命周期为 24 小
我最近提出了一个问题,涉及我在让 MIT Kerberos 与 Microsoft 的 LSA 凭据缓存良好配合时遇到的一些问题。 有人告诉我,设置注册表项 AllowTGTSessionKey 应该
我确实有一个具有 KERBEROS 安全性的 Hadoop 集群和另一个没有 KERBEROS 的 Hadoop 集群。 我可以将文件从 KERBEROS hadoop 集群复制到非 KERBEROS
这来自 Kerberos 示例应用程序,位于 https://github.com/spring-projects/spring-security-kerberos/tree/master/sprin
我正在尝试在启用 Kerberos 身份验证的安全模式下设置单节点 Hadoop 集群,使用 hadoop-2.4.0和 jdk1.7.0_25 . 为此,我按照文档中的描述创建了 key 表文件。在
最近使用 Kerberos 安装 samba 共享停止工作。在另一台服务器上具有相同挂载选项的相同共享有效。所以我假设我们的 DNS 设置和/或 Active Directory 设置没有任何问题。似
我是一名优秀的程序员,十分优秀!