logto sdk 如何获取token

2024-02-03

logto browser sdk 是平台无关的sdk,可以使用 logto browser sdk 来进行用户登陆。 获取 token, 如果 token 过期了,他们会去尝试使用 refresh token 来获取到最新的 token 来进行登陆。 那么我们将面临两个问题,

  1. refresh token 如果没有过期的话,访问 oidc/token 来得到新 token
  2. 如果 refresh token 过期了的话,得到 400 是这样的吗?

如何获取最新的token,通过 /oidc/.well-known/openid-config 去得到 token_endpoint 的地址,拿 token_endpoint 去访问后台,应该落入 /oidc/token 之中。

找一下 logto 的后台源码。logto core 使用 koa 作为 web 框架,写的比较灵活。

  • routes 文件夹里面都是对外 api 的实现。
  • libraries 是如 logto browser sdk 的替代实现 在 packages/core/src/libraries/cloud-connection.test.ts:40,37。
  • tenant 是核心挂载 koa 路由的文件

我想知道 /oidc/token 如何挂载在路由上,和它的处理方式是怎样的?

在 logto 挂载路由的位置

    // Mount OIDC
    const provider = initOidc(envSet, queries, libraries);
    app.use(mount('/oidc', provider.app));

oidc-provider 是 oidc 的 node 标准实现, 通过 koa 组合进 logto。 以下是关键位置。

  addOidcEventListeners(oidc, queries);
  registerGrants(oidc, envSet, queries);

注册路由的位置

  • 单纯javascript写成的,写法上灵活自由。

附录:

  • koa-body 可以扩展 koa 的解析能力。处理多种不同的body。
copyright ©2019-2024 shenzhen
粤ICP备20041170号-1