我已经在亚马逊S3上托管了Range9应用程序,作为静态网站托管,并与OIDC认证提供者(OKTA)和授权授予与PKCE集成在一起。
应用程序部署成功,当我单击Login时,我的应用程序被重定向到okta进行登录,但是当OKTA使用隐式/回调重定向时,我的浏览器抛出以下错误-
404 Not Found
Code: NoSuchKey
Message: The specified key does not exist.
Key: implicit/callback我还使用CloudFront将http重定向到https。
我的应用程序设置是:
发布于 2020-10-19 15:51:17
谢谢加里!
我能够通过以下步骤解决这个问题:
<body>
<script>
var hash = window.location.hash;
const newHashpath = hash.replace("#!/",""); //(/#!(\/.*)$/.exec(window.location.pathname) || [])[1];
if (newHashpath) {
// history.replace(path);
window.history.pushState({},'',newHashpath);
}
</script>
<app-root></app-root>
</body>
发布于 2020-10-16 10:15:36
当收到登录响应时,感觉S3在这里提供错误的文件,而不是您的index.html文件。
理解登录响应URI
这将是一个值,如下所示,您需要使这个值服务于您的index.html文件:
工作代码示例
您可以登录到我的在线云SPA来与类似的SPA进行比较(我的是用ReactJS编码的)。
在我的例子中,注册的重定向URI是这样的,它包括一个尾部反斜杠,以防止丢失登录响应查询参数的S3重定向:
完整的登录响应如下所示:
默认文档
在index.html设置中,这通常被指定为S3,尽管您可以通过lambda边缘函数进一步定制它--请参阅下面的可视化博客文章的链接。
默认文档应该处理登录响应
我总是将登录响应作为主index.html页面加载的一部分处理--参见这个源文件中对handleLoginResponse的调用。你需要用角度来做同样的事情。
进一步信息
也许浏览下面的博客文章会提供一些有用的进一步信息--希望这些细节能帮助你解决你的问题:
https://stackoverflow.com/questions/64381891
复制相似问题