假设OpenID Connect隐式流主要由单页面应用程序(SPA)使用,可能首先使用AJAX调用来访问后端/ API,而不是通过加载SPA本身 .
现在,如果API检测到没有令牌发送请求,它应该如何响应?
恕我直言,使用重定向响应没有多大意义,因为这只会导致重定向AJAX请求,而不是整个浏览器窗口(这是必要的) .
所以,回复 401
好吗?或者还有另一种(更好的)做法?假设 401
是正常的,服务器应该以某种方式指示要使用哪个身份提供者,或者这完全取决于客户端,后端假定客户端知道它信任哪个身份提供者?
1 回答
RFC6749未指出应如何设计响应 .
但是,由于客户端需要API响应,因此资源服务器应使用适当的HTTP代码和响应正文发送API响应 .
如果资源服务器拒绝请求,因为令牌已经出现或无效,则响应代码应为400.如果访问令牌尚未使用已重新启动的作用域发出,或者资源所有者对资源没有权限,则代码应该如果没有找到令牌,则代码应为401 .
正文可能类似于规范中描述的错误响应:
关于指示使用哪个IdP的方式,我知道specification is being written,但是现在由您决定客户端应该如何与您的资源服务器进行交互(例如文档) .