java - mod_auth_tkt - java 实现

标签 java mod-auth

有人实现过 mod_auth_tkt使用 Java 生成 cookie?

我对如何在 Java 中生成 iptstamp(可以在 PHP 中使用 pack 函数完成)和 hextimestamp 感到困惑。

生成cookie的算法如下:

cookie := digest + hextimestamp + user_id + '!' + token_list + '!' + user_data

digest := MD5(digest0 + key)

digest0 := MD5(iptstamp + key + user_id + '\0' + token_list + '\0' + user_data)
  • iptstamp 是一个 8 字节长的字节数组,字节 0-3 填充客户端的 IP 地址,作为网络字节顺序的二进制数,字节 4-7 填充时间戳,如下所示网络字节顺序的二进制数。

  • hextimestamp 是 8 个字符长的十六进制数字,表示 iptstamp 中使用的时间戳。

  • token_list 是该用户的可选逗号分隔访问 token 列表。
    如果为特定区域设置了 TKTAuthToken,则检查此列表。

  • user_data 是可选的

最佳答案

只需将 IP 地址转换为 4 个字节并附加时间戳即可。

iptstamp = ip_chars + ts_chars

http://code.cmlenz.net/diva/changeset/173/branches http://www.mail-archive.com/modauthtkt-users@lists.sourceforge.net/msg00003.html

使用以下内容获取网络字节顺序。

ByteBuffer bb = ByteBuffer.allocate(4096);
bb.order(ByteOrder.BIG_ENDIAN);

查看

Network Order short (Java)

关于java - mod_auth_tkt - java 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9102678/

相关文章:

java - 重现线程干扰

mysql - 使用 MySQL 进行 SVN 身份验证

django - 为静态站点设置密码保护的最简单方法?

java - 如何从 HttpServlet 获取客户端的 MAC 地址?

java - 无法从记录集中检索多个结果

java - 谷歌云连接服务器和 smack

java - 在java中创建一个数组数组

apache - Require ip 127.0.0.1 有时有效,有时无效

svn - 匿名 SVN checkout ,但验证提交