【问题标题】:Okta Logout With Nuxt.js/Vue and OpenIdOkta 使用 Nuxt.js/Vue 和 OpenId 注销
【发布时间】:2021-09-14 16:03:39
【问题描述】:

我看到很多人都有这个问题(不仅仅是 Vue),当你尝试注销用户时会看到这个错误:

{
"errorCode": "invalid_client",
"errorSummary": "A client_id must be provided in the request.",
"errorLink": "invalid_client",
"errorId": "oae1R3sir06RJOLBoPOl08IUQ",
"errorCauses": []
}

这非常令人困惑,因为 Okta 文档没有说您需要将 client_id 指定为查询参数,而是您需要提供 id_token_hint 和 post_logout_redirect_uri。我已经尝试了多种方法,首先使用内置的 Vue auth 模块:

this.$auth.logout();

此方法重定向到正确的注销 url,但仅提供 client_id 和重定向 url 作为查询参数(与此处的 Okta 文档不匹配:https://developer.okta.com/docs/guides/sign-users-out/vue/sign-out-of-okta/

在查看了该文档后,我设置了这样的方法:

      this.token = (this.$auth.strategy as LocalScheme).token.get() as string;
      this.token = this.token.replace('Bearer ', '');

      // Clear remote session
      window.location.href = `${
        this.$auth.ctx.$config.OAUTH_ISSUER
      }/v1/logout?id_token_hint=${
        this.token
      }&post_logout_redirect_uri=${encodeURIComponent(
        'http://localhost:3000'
      )}`;

两种方法都给出了完全相同的错误,此时我无法判断这是否是 Okta 应用程序设置的问题,或者是我在提供查询参数时做错了什么。

【问题讨论】:

    标签: typescript vue.js nuxt.js okta


    【解决方案1】:

    我不认为你做错了什么。当我为你准备一个例子时,我能够遇到像你这样的情况。最初我有一个 authZ 服务器和 client_id 参数,但我将它们更改为预览环境。在同一个浏览器中,我遇到了您描述的问题。

    我打开了一个不同的浏览器,它对我有用,所以可能存在某种 cookie 问题。

    示例(虽然不是 Vue)位于 glitch.com。想看就看吧。

    【讨论】:

    • 我已经尝试创建一个隐身标签以确保它不是浏览器并且仍然无法正常工作。似乎也找不到您在该网站上谈论的示例...
    • 应该在这个文件中 - glitch.com/edit/#!/…
    • 哦,好的,我现在看到了,是的,看起来您正在做一些非常相似的事情,我想知道我的令牌或 okta 应用程序现在设置是否有问题。我假设获取令牌的 vue 方法返回 id 令牌,但我并不完全确定。
    • @ThePaxBisonica 您是否使用 VUE 找到了解决方案?我遇到了同样的错误,它告诉我在请求中需要一个 client_id。谢谢。
    猜你喜欢
    • 2017-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-10
    • 1970-01-01
    • 1970-01-01
    • 2017-02-23
    • 2023-03-31
    相关资源
    最近更新 更多