繁体   English   中英

会话管理:如何为REST服务生成身份验证令牌? (新泽西州)

[英]Session management : How to generate Authentication token for REST service ? (Jersey)

我正在尝试在我的REST服务中实现会话管理。 我在冲浪时了解了这些指南:

  1. 不使用服务器端会话 - 它违反了RESTful原则。

  2. 使用HTTP基本身份验证 - 现在不可能,因为我被要求不使用SSL / TLS(毫无疑问需要Basic身份验证。)

  3. 使用Http摘要 - 我听说这会增加网络流量。 这听起来很昂贵,尤其是当我的客户端是移动设备时。

  4. 使用cookies - 我被告知我不应该依赖cookie来保护我的重要资源,它们可以很容易地被欺骗。 另外,我通过cookie了解了跨站点脚本攻击。

  5. 我留下了生成身份验证令牌的选项,用户每次都必须发送 - 我承认这不是“完全”RESTful。

现在我需要知道,我应该如何生成这些唯一的身份验证令牌,这些令牌在业务级别上足够安全? 泽西岛有一些图书馆吗? 我应该去OAuth。我刚刚读了一些关于它们的内容,它们对我来说有用吗? 请记住,我的目标客户端是移动设备 - 他们可以访问OAuth服务吗?

为简单起见,我在使用Jasypt加密整个令牌之前使用UUID生成自己的身份验证令牌: -

String key = UUID.randomUUID().toString().toUpperCase() +
        "|" + someImportantProjectToken +
        "|" + userName +
        "|" + creationDateTime;

StandardPBEStringEncryptor jasypt = new StandardPBEStringEncryptor();

...

// this is the authentication token user will send in order to use the web service
String authenticationToken = jasypt.encrypt(key);

该键包含creationDateTime以便我可以使用它来验证生存时间。 这样,如果用户在X分钟后使用相同的身份验证令牌,它将不再起作用,我将发回403禁用代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM