身份验证失败,原因是:缺少自定义请求令牌Cookie

时间:2019-09-27 13:49:20

标签: javascript cors azure-active-directory backend hapijs

我们正在运行一台hapi JS服务器,该服务器将@hapi/bell与azure提供者策略结合使用以对后端的用户进行身份验证

基本上,假设我们的后端在port225.5874.com上运行,并且有一个登录路由https://port225.5874.com/api/v2/user/sso。这是我们的路线服务器设置。

routes: {
            security: true,
            cors: {
                origin: [
                    `${configConst.client.host}:${configConst.client.hostport}`
                ],
                headers: ['Access-Control-Allow-Headers', 'Access-Control-Allow-Origin', 'Accept', 'Authorization', 'Content-Type', 'If-None-Match', 'Accept-language'],
                additionalHeaders: ['Access-Control-Allow-Headers: Origin, Content-Type, x-ms-request-id , Authorization'],
                credentials: true
            }
        }

直接在浏览器中导航到该路由会从azure提供程序返回我们信息。但是,如果我们尝试从前端客户端(即本地主机)转到该后端路由,则会抛出以下CORS错误

  

从原点“ null”到“ https://login.microsoftonline.com/ ...(从'https://port225.5874.com/api/v2/user/sso'重定向)的XMLHttpRequest的访问已被CORS策略阻止:没有'Access-Control-Allow-Origin'标头存在于请求的资源上。

对我们来说,这听起来像(我们可能是错的)'https://login.microsoftonline.com/中缺少Access-Control-Allow-Origin ...,但显然我们无法控制它。

似乎我们在前端丢失了某些东西,但不确定会是什么。有什么想法吗?

1 个答案:

答案 0 :(得分:3)

前端应使用例如MSAL.js可以对用户进行身份验证,并在后端使用JWT身份验证。

或者您必须以某种方式告诉前端请求不要遵循重定向并检测情况。