当身份验证cookie过期并且需要续订时,oData或AJAX服务应如何响应?
时服务器应该向客户端发送什么
禁止oData或AJAX服务访问(拒绝访问)
当会话凭据过时且需要续订时,可能通过重定向到ADFS,OpenID或Azure ACS IDP
只需查看维基百科,我就可以猜测我应该为第一个场景发送403.x的某个版本,为第二个场景发送401.
请确认上述内容是否正确,以及我应该在响应标题和正文中包含的内容。
我认为不正确的一些例子执行以下操作:
答案 0 :(得分:1)
使用HTTP状态代码始终是安全的,而不是烹饪您自己的令牌或任何类似的东西。
由于OData的基本原理是使任何知道如何通信HTTP的客户端成为可能,因此围绕HTTP状态代码是有意义的。客户将决定如何处理特定的状态代码。
答案 1 :(得分:0)
HTTP状态代码是可行的方法。 OData特别没有定义已在较低级别实现的任何内容(例如安全性和身份验证)。
401表示Unauthenticated,403表示Unauthorized。对于secnario 1,您只能说“拒绝访问”,而不是 为什么 您拒绝访问。用户是否未通过身份验证?然后返回401.用户是否经过身份验证但缺少权限?然后返回403。
对于方案2,我同意,返回详细的401状态(即为您的身份验证提供程序提供有效的“WWW-Authenticate”标头。)
我推荐的维基百科文章(你可能已经发现了这个)是:https://secure.wikimedia.org/wikipedia/en/wiki/List_of_HTTP_status_codes
希望这有助于某人。 : - )