OpenID Connect隐式流程:使用重定向进行响应?

时间:2017-02-10 08:10:36

标签: oauth-2.0 authorization openid-connect

假设OpenID Connect隐式流主要由单页面应用程序(SPA)使用,可能首先通过使用AJAX调用来完成对后端/ API的访问,通过加载SPA本身。

现在,如果API检测到没有令牌发送请求,它应该如何响应?

恕我直言,使用重定向进行响应没有多大意义,因为这只会导致重定向AJAX请求,而不是整个浏览器窗口(这是必要的)。

那么,回复是否有401罚款?或者还有另一种(更好的)做法?假设一个401是好的,服务器应该以某种方式指出要使用哪个身份提供者,或者这完全取决于客户端,后端假定客户端知道它信任哪个身份提供者?

1 个答案:

答案 0 :(得分:1)

RFC6749并未说明应如何设计回复。

但是,由于客户端需要API响应,因此资源服务器应使用适当的HTTP代码和响应正文发送API响应。

如果资源服务器因令牌已成功或无效而拒绝请求,则响应代码应为400。 如果尚未使用重新引用的作用域发出访问令牌,或者资源所有者对资源没有权限,则代码应为403。 如果未找到令牌,则代码应为401。

正文可能类似于规范中描述的错误响应:

HTTP/1.1 403 OK
Content-Type: application/json;charset=UTF-8
Cache-Control: no-store
Pragma: no-cache
{
    "error":"insufficient_scope",
    "error_description":"The scope 'WRITE' is required.",
    "error_uri":"https%3A%2F%2Fwww.example.com%2Fdoc%2Ferror403%2Finsufficient_scope"
}

关于指示使用哪个IdP的方式,我知道specification is being written,但是现在需要指出客户端应该如何与资源服务器进行交互(例如文档)。