next-auth - nextauth 与自定义 Okta 提供程序
问题描述
next-auth npm 包默认使用标准 Okta 域授权服务器,形式为https://${yourOktaDomain}/oauth2.
我必须连接到自定义 Okta 授权服务器,形式为:https://${yourOktaDomain}/oauth2/${authServerId}.
问题是:如何配置 nextauth 以识别 Okta 授权服务器我需要自定义服务器吗?如果没有此信息,NextAuth 不会形成正确的 URI。我在 NextAuth 站点1上找不到配置选项
解决方案
您可以通过在使用提供程序时指定它们来覆盖 NextAuth.js 提供程序的任何设置,因为“提供程序”实际上只是 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
实际上有一个正在运行的拉取请求,它应该开箱即用地解决这个问题。我认为它具有您需要的更改,因此可能值得检查其中的更改并在您的应用程序中指定。
(如果这些选项对您有用,如果您可以对该 PR 留下反馈,那就太好了!)
推荐阅读
- ldap - 继承虚拟属性 LDAP
- android-studio - Gradle 同步失败 Android Studio 3.6
- html - 基于下拉框渲染动态表单
- android - 更新到 Android Studio 3.6 后,应用程序在运行时崩溃
- virtual-machine - 如何将“iso存档”转换为“iso”?什么是“iso存档”?
- pandas - 查找事件的发生
- python - Qt for Python:Slot() 装饰器有什么用处?
- typescript - 对可观察的对象数组进行排序
- python - Jupyter Notebook / Anaconda '内核错误'(白痴证明修复)
- java - 将 jdk 从 8u221 升级到 8u241 得到 java.net.SocketException: Broken pipe (Write failed) 异常