具有自定义 Okta 提供程序的 nextauth

nextauth with custom Okta provider

next-auth npm 包默认使用 标准 Okta 域 授权服务器,形式为 https://${yourOktaDomain}/oauth2. 我必须连接到 自定义 Okta 授权 服务器,形式为:https://${yourOktaDomain}/oauth2/${authServerId}. 问题是:如何配置 nextauth 以识别我需要的 Okta 授权服务器是 自定义 服务器?如果没有此信息,NextAuth 就不会形成正确的 URI。我在 NextAuth 网站上找不到配置选项 1

您可以通过在使用提供程序时指定它们来覆盖 NextAuth.js 提供程序的任何设置,因为 'providers' 实际上只是 JSON 个对象。

例如您可以像这样添加 authorizationUrl 属性:

import Providers from `next-auth/providers`
/* ... */
providers: [
  Providers.Okta({
    clientId: process.env.OKTA_CLIENT_ID,
    clientSecret: process.env.OKTA_CLIENT_SECRET,
    domain: process.env.OKTA_DOMAIN,
    authorizationUrl: `https://${yourOktaDomain}/oauth2/${authServerId}?response_type=code`
  })
}
/* ... */

Okta 的默认提供者配置选项在这里: https://github.com/nextauthjs/next-auth/blob/main/src/providers/okta.js

实际上有一个 Pull Request for this in flight 可以开箱即用地解决这个问题。我认为它具有您需要的更改,因此可能值得检查其中更改的内容并在您的应用中指定。

(如果这些选项适合您,您可以留下关于该 PR 的反馈,那就太好了!)

一些与此类似的问题可以通过使用 Next-Auth v4 beta 来解决。 https://github.com/nextauthjs/next-auth/tree/beta