1

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

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

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

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

4

2 回答 2

2

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

于 2014-02-19T23:27:21.273 回答
0

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

有关详细信息,请参阅:http ://bugs.java.com/view_bug.do?bug_id=2182089

于 2015-04-17T16:04:38.080 回答