首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解密LTPA令牌版本2

如何解密LTPA令牌版本2
EN

Stack Overflow用户
提问于 2013-08-25 10:27:24
回答 2查看 9.3K关注 0票数 3

我正在做一个项目,这是WebShpere和PHP应用程序之间需要的SSO实现。

但是,在查看了实现SSO的可能方法之后,我发现了LTPA令牌,它用于实现不同IBM技术之间的SSO。

但是LTPA令牌2是加密的cookie文件。如果我想使用这个文件中的信息,比如(用户i,用户名,电子邮件),我应该解密.等)。

我已经对LTPA 2和更低版本进行了深入的搜索,这是我从IBM找到的最好的定义。

LTPA2签名采用SHA-1作为哈希算法,RSA (1024位密钥)作为加密算法.在附加数字签名之后,用户数据和签名将使用从LTPA密钥文件中获取的3 3DES或AES密钥加密(请参阅“消费LTPA令牌”和“生成LTPA令牌”)。

但我仍然试图破译这个标记而没有运气。

有什么帮助吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-25 16:49:44

阿尔弗雷科项目做到了这一点。看看这个指针的博客帖子,包括工作代码。

为了澄清问题,LTPA令牌的内容或多或少类似于"uid=user、cn=users、ou=myorg、dc=com@ldaprealm%timeout%RSA签名“,使用共享的AES密钥加密,并用Base64编码。LTPA v2将不使用3 AES,而只使用AES。所以,您真正需要做的是对cookie进行AES解密,并且您已经可以读取用户名了。你不需要验证RSA签名。

票数 6
EN

Stack Overflow用户

发布于 2013-08-25 13:59:33

为什么你需要从文件中解密?令牌不是和你打的电话一起传递的吗?传递时,LTPA令牌是通过Base64编码的,您可以很容易地对它进行解码。下面是如何从令牌获取信息的示例:

代码语言:javascript
复制
import javax.security.auth.Subject;      
import javax.xml.bind.DatatypeConverter;
import com.ibm.websphere.security.cred.WSCredential;
import com.ibm.wsspi.security.token.Token;

Subject subject = ...; // obtain current JAAS subject

Set<?> publicCredentials = subject.getPublicCredentials();
for (Object credential : publicCredentials) {
    if (credential instanceof Token) {
        System.out.println(DatatypeConverter.printBase64Binary(((Token) credential).getBytes()));
        System.out.println(((Token) credential).getName());
        System.out.println(((Token) credential).getUniqueID());
        System.out.println(((Token) credential).getAttributeNames());
    }
}
票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18428016

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档