具有自定义 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
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