RESTful HTTP API中的授权,401 WWW

我正在创建一个RESTful服务来向Web应用程序提供数据。 我有两个相关的问题。

1.如何处理未经授权的请求?

我打算用以下代码回应请求:

  • 资源是否打开并找到? 200 OK
  • 你需要通过身份验证才能访问资源? 401未经授权
  • 你没有获得一类资源吗? 403禁止
  • 你有权访问一类资源,但不能访问此特定资源? 404不能防止人们了解他们无法访问的资源的存在。
  • 资源不存在吗? 404未找到
  • 这是RESTful服务行为的推荐方式吗?

    2. 401响应提供什么WWW-Authenticate头文件?

    我阅读了维基百科(可能不是最准确的资源,但它适用于我),401响应必须包含WWW-Authenticate标头,但是经过进一步的搜索,我找不到任何说明此值意味着什么的资源以及什么它应该是。

    我发现了几个关于这个头文件的SO问题和论坛主题,他们似乎都是关于OAuth的,建议不要使用401状态码,或者说你可以制作一些东西。

    这个头文件应该包含什么正确的值?


    回答你的问题:

    如何处理未经授权的请求?

    您描述它的方式几乎是RESTful服务的推荐方式。 据我所知,这绝对没有错。

    401响应提供什么WWW-Authenticate头文件?

    通常, WWW-Authenticate标头告诉客户端服务器将接受哪种认证。 如果客户端发出未经授权的请求,这意味着他发送的请求缺少或无效的Authorization标头,服务器将使用WWW-Authenticate来告诉客户端他将接受哪种认证方案(即Basic,Digest或OAuth),以及什么境界。

    想象一下,它就像服务器方面的某种识别问题或挑战,即类似“你是谁?”。 或者“通过以下方式提供凭证证明你是谁!”。

    例如: WWW-Authenticate: Basic realm="My App"

    这里服务器告诉客户他使用了一个名为Basic的认证方案。 领域只不过是一些标识服务器上受保护空间的字符串。


    基于我的研究(谷歌搜索),我决定发送:Newauth realm =“使用登录令牌”。

    http://greenbytes.de/tech/tc/httpauth/#unknown网站有不同auth方法的测试用例,我还没有发现任何描述'get auth token'的内容,因此我认为它是'Newauth'。

    对我来说也很重要:这不会在客户端创建登录提示。

    链接地址: http://www.djcxy.com/p/12455.html

    上一篇: Authorization in RESTful HTTP API, 401 WWW

    下一篇: Forcing a custom HTTP 401 unauthorized page in ASP.NET