在REST Web应用程序中实现会话和安全性?

时间:2016-06-05 06:45:09

标签: java rest jersey jersey-2.0

请注意:

这是一篇很长的帖子。

不确定帖子的标题是否合适:(

唐氏选民请在起飞前提供一些建设性的反馈来改进这篇文章。

=============================================== ===========

我正在实现一个简单的 REST API in Java ,它公开了3个服务:

  1. 允许客户注册其应用程序。 发布/注册
  2.   

    请求:

    {
    "display_name" : "MyAwesomeApplication" 
    }
    
      

    响应:

    {
    "application_id" : "abc123def123..." ,
    "application_secret" : "abc123def123..." ,
    "display_name" : "MyAwesomeApplication" 
    }
    
    1. 允许应用程序在发送日志消息之前进行身份验证。 POST / auth
    2. 此端点使用简化版的基本身份验证

        

      标题

      Name                         Value
      Authorization                application_id:application_secret
      
        

      响应

      {
      "access_token" : "c47026d9­90bf­4480­a259­a953bc103495" 
      }
      
      1. 发送日志消息。 POST / log
      2.   

        标题

        Name                         Value
        Authorization                access_token
        
          

        请求

        {
        "application_id" : "abc123def123..." ,
        "logger" : "com.logger.service.Uploader" ,
        "level" : "Error" ,
        "message" : "The communication pipeline is broken." 
        }
        
          

        响应:

        {
        "success" : true|false
        }
        

        所以,我已经成功实现了这些功能需求,但我不知道如何实现非功能性需求,如

        1。敏感数据必须加密。

        2。每个应用程序(我的网络服务的用户)只允许一个活动会话。

        3. 会话生命周期必须可在数据库中配置。

        4. 必须异步处理所有日志请求。

        5. 日志端点需要通过访问令牌进行身份验证。

        6。实施速率限制请求以避免可能的攻击,应用程序每分钟只允许60个请求。如果您用完了60个api呼叫,那么您将收到“超出速率限制”消息,并且必须等待5分钟才能再次发出请求。

        有人可以指点一些针对这些用例的资源/教程吗?

        我几乎已经阅读了所有我可以在SO和谷歌中得到的东西,而且我阅读的越多,我就越感到困惑。可能不是试图在REST方面学习这些技能,我应该尝试在一个非常基本的客户端 - 服务器Web应用程序中实现它们,请建议是否应该是这种情况。

        这是我的第一个REST网络应用,所以请相应地考虑我一个完整的菜鸟和指南。

0 个答案:

没有答案