OAuth 2.0生成Token和Secret Token

6
我正在使用Apache Oltu框架实现OAuth 2.0提供者服务器,并寻求一些关于如何在Java中生成访问令牌和密钥令牌的想法。请建议。

按照Oatuh文档操作,谷歌搜索并自行解决问题! - Juned Ahsan
1个回答

17

OAuth 2.0 规范 没有说明如何生成令牌和密钥令牌。因此,您可以使用现有/锚定数据来生成令牌,也可以使用随机序列来生成令牌。唯一的区别是,如果您使用预先知道的数据(例如用户数据,比如用户名、创建日期等),则可以随时恢复令牌。如果使用随机的数据序列,则一旦令牌丢失,就无法恢复。

换句话说,RFC 不限制您的生成过程。

我可能会使用用户详细信息数据加上一些随机数据进行字符串拼接,然后进行 Base64 编码。

String keySource = username + creationDate + random;
byte [] tokenByte = new Base64(true).encodeBase64(keySource.getBytes());
String token = new String(tokenByte);

1
谢谢您的建议,我的要求是拥有一个自包含的令牌,其中包含客户端ID、应用程序ID等信息,并拥有一个秘密令牌,可用于解密已发行的令牌并获取令牌中的信息。请为我提供一些实现此目标的方法。 - willsteel
1
然后,您可以创建令牌,其中包括客户端ID、应用程序ID等。生成秘密令牌并将其存储在数据库中。使用DES算法使用秘密令牌加密/解密已发行的令牌。以下是如何在Java中使用DES的示例:http://java-espresso.blogspot.com/2011/09/des-algorithm-code-in-java.html - Sqeezer
谢谢,这正是我在寻找的。您能否建议一些比DES更安全且可用于我的要求的其他算法? - willsteel
1
AES更安全。它使用更长的密钥进行编码/解码。使用方法与DES非常相似,唯一的区别是算法名称。您可以在此处找到使用示例http://www.code2learn.com/2011/06/encryption-and-decryption-of-data-using.html。 - Sqeezer
嘿,我遇到了一个问题,我通过DES生成的令牌包含像+、=这样的字符,这会导致问题,因为我将令牌作为查询参数传递给客户端。有没有办法只生成字母数字令牌? - willsteel
显示剩余8条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接