【问题标题】:gss name is corrupted in java for irish fada chars爱尔兰 fada 字符在 java 中的 gss 名称已损坏
【发布时间】:2014-02-19 17:10:44
【问题描述】:

windows-xp 将授权标头中的 SPNEGO 令牌发送到我们的服务器,该服务器理解 kerberos 协议。服务端应用使用java提供的gss-api实现。

我们的代码从 spnego 令牌中提取 upn 名称,并使用 LDAP 存储对其进行验证。如果 upn 名称包含唯一的 ascii 字符(小于 127),那么一切正常。

但如果用户名包含非 ascii 字符(例如 irish fada),则 java gss-api 出于某种原因将它们解释为垃圾字符。

我想知道 Java7 GSS 名称是否可以包含非 ascii 字符?

【问题讨论】:

    标签: java unicode kerberos gssapi


    【解决方案1】:

    根据 RFC 3641,RFC 1510 要求主体名称为 GeneralString,即 UTF-8 encoded string。因此,您应该首先检查 Wireshark 中的字节,看看它们是否正常。如果您认为 JGSS 不遵循,您应该向 Oracle 提交票证。

    【讨论】:

    • 这是 Kerberos 的一部分,一直存在争议,许多较旧的 kerberos 实现不遵循最新的 rfc。我对 Java kerberos 库的体验是它们跟不上不断发展的标准。
    【解决方案2】:

    幸运的是,Java 7 有办法做到这一点。只需将系统属性-Dsun.security.krb5.msinterop.kstring=true 添加到运行服务器的命令行即可。

    更多详情见:http://bugs.java.com/view_bug.do?bug_id=2182089

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-28
      • 2012-05-22
      • 1970-01-01
      相关资源
      最近更新 更多