反序列化 Kerberos 令牌

问题描述 投票:0回答:1

从服务器(很可能是某种 MS 软件)获取 Kerberos 令牌时,我收到以下响应。

如您所见,没有像 JWT 那样的过期时间或类似内容。所以我想知道令牌是否包含该信息,并考虑将其反序列化。但是,如果可能的话,我无法识别用于序列化信息的算法。 (我期望 Base64 等,但事实并非如此。)

那么问题:关于如何做到这一点有什么想法吗?

谢谢,

约亨

<?xml version="1.0" encoding="utf-16"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <soap:Body>
    <GetKerberosTokenResponse xmlns="http://tempuri.org/">
      <GetKerberosTokenResult>YIIOcQYJKoZIhvcSAQICAQBugg5gMIIOXKADAgEFoQMCAQ6iBwMFAAAAAACjggy8YY
... Lots of lines removed for brevity ...
IWRzKQKdEnG9mT3U2qIKeS/Mhp+sif9O9212sEFgwH1WGI=</GetKerberosTokenResult>
    </GetKerberosTokenResponse>
  </soap:Body>
</soap:Envelope>
authentication kerberos
1个回答
0
投票

Kerberos 版本 5 使用 ASN.1 作为其序列化格式。您得到的结果是一个 Base64 编码的 ASN.1 对象。

您可以在 RFC 4120 第 5.3 节以及附录 A 中找到 Kerberos ASN.1 模块,尽管 SOAP 响应中实际拥有的是来自

RFC 4178
附录 A 的 SPNEGO NegTokenInit 对象(包含Kerberos
AP-REQ
对象,然后包含实际的
Ticket
以及一次性身份验证器)。

Kerberos 票证的到期时间及其其他元数据可在票证的

EncTicketPart
字段中找到,该字段使用 服务密钥(在服务的密钥表中找到或从服务派生的密钥)进行加密户口密码)。这是因为 Kerberos 不使用数字签名 - 它基于预共享密钥和对称加密。

通常,如果您是请求实际票证的 Kerberos 客户端,您将收到可使用您自己的(客户端)密钥解密的票证元数据的另一个副本;然后您将使用票证及其会话密钥来生成身份验证器并生成令牌。但在您的情况下,您没有任何这些 – SOAP Web 应用程序代表您获取票证并直接生成一次性身份验证令牌 – 因此您在其中找到的所有数据都使用服务的密钥进行加密(因此当然,客户无法篡改它)。

换句话说,除非您拥有服务密钥,否则您将无法解密票证的内容。

© www.soinside.com 2019 - 2024. All rights reserved.