Oauth 2.0 OpenID连接隐式流:使用重定向响应?

Oauth 2.0 OpenID连接隐式流:使用重定向响应?,oauth-2.0,authorization,openid-connect,Oauth 2.0,Authorization,Openid Connect,假设OpenID Connect隐式流主要由单页应用程序SPA使用,那么对后端/API的第一次访问可能是通过使用AJAX调用完成的,而不是通过加载SPA本身 现在,如果API检测到请求在没有令牌的情况下发送,它应该如何响应 依我看,用重定向来响应没有太大意义,因为这只会导致AJAX请求被重定向,而不是必要的整个浏览器窗口 那么,以401罚款作为回应吗?还是有其他更好的方法?假设401很好,那么服务器是否应该以某种方式指示使用哪个身份提供程序,或者这完全取决于客户端,并且后端假定客户端知道它信任哪

假设OpenID Connect隐式流主要由单页应用程序SPA使用,那么对后端/API的第一次访问可能是通过使用AJAX调用完成的,而不是通过加载SPA本身

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

依我看,用重定向来响应没有太大意义,因为这只会导致AJAX请求被重定向,而不是必要的整个浏览器窗口

那么,以401罚款作为回应吗?还是有其他更好的方法?假设401很好,那么服务器是否应该以某种方式指示使用哪个身份提供程序,或者这完全取决于客户端,并且后端假定客户端知道它信任哪个身份提供程序?

没有指示应如何设计响应

但是,由于客户端需要API响应,因此资源服务器应该发送一个带有适当HTTP代码和响应主体的API响应

如果资源服务器拒绝该请求是因为令牌溢出或无效,则响应代码应为400。 如果访问令牌没有与Reaired作用域一起发出,或者如果资源所有者没有关于资源的权利,那么代码应该是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的方式,我知道a,但目前由您指示客户端应如何与您的资源服务器交互,例如文档