首页 文章

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

提问于
浏览
0

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

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

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

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

1 回答

  • 1

    RFC6749未指出应如何设计响应 .

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

    如果资源服务器拒绝请求,因为令牌已经出现或无效,则响应代码应为400.如果访问令牌尚未使用已重新启动的作用域发出,或者资源所有者对资源没有权限,则代码应该如果没有找到令牌,则代码应为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,但是现在由您决定客户端应该如何与您的资源服务器进行交互(例如文档) .

相关问题