我正在连接到符合 OIDC 标准的公司 ID 提供商。我遇到无法调试或解决的错误。
这是
auth.ts
中的配置:
providers: [
{
id: "idam",
name: "acmeIDAM",
type: "oidc",
wellKnown: "https://idam.acme.com/oauth2/authorize/.well-known/openid-configuration",
authorization: "https://idam.acme.io/oauth2/authorize",
token: "https://idam.acme.io/oauth2/token",
userinfo: "https://idam.acme.io/oauth2/userinfo",
clientId: process.env.OIDC_CLIENT_ID,
clientSecret: process.env.OIDC_CLIENT_SECRET,
profile(profile, tokens) {
console.log("oauth profile ", profile, " tokens: ", tokens);
return {
id: profile.id,
name: profile?.name,
};
},
},
],
basePath: "/auth",
callbacks: {
authorized({ request, auth }) {
const { pathname } = request.nextUrl
if (pathname === "/middleware-example") return !!auth
return true
},
jwt({ token, trigger, session, account }) {
console.log(`jwt callback: ${token} ${trigger} ${account}`)
if (trigger === "update") token.name = session.user.name
if (account?.provider === "keycloak") {
return { ...token, accessToken: account.access_token }
}
return token
},
async session({ session, token }) {
console.log(`session callback: ${token} ${session}`)
if (token?.accessToken) {
session.accessToken = token.accessToken
}
return session
},
},
experimental: {
enableWebAuthn: true,
},
debug: process.env.NODE_ENV !== "production" ? true : false,
} satisfies NextAuthConfig
这会导致此错误:
[auth][原因]:OperationProcessingError:意外的 JWT“iss”(颁发者)声明值
但我无法弄清楚它的价值是什么。添加到配置中
issuer: "localhost:3000"
也不起作用。
我没有任何关于如何克服这个问题的帮助。
错误是我没有正确匹配
issuer
值。 NextAuth 包阻止了由于值不匹配而返回的传入令牌。添加正确的发行人值解决了这个问题。该值对于您正在使用的每个 IdP 的设置来说都是唯一的,因此我必须使用我的公司系统检查我自己的身份验证应用程序才能弄清楚这一点。我一开始以为是localhost:3000
,但事实并非如此:
例如,这是我的解决方案。
{
id: "idam",
name: "acmeIDAM",
type: "oidc",
wellKnown: "https://idam.acme.com/oauth2/authorize/.well-known/openid-configuration",
authorization: "https://idam.acme.io/oauth2/authorize",
token: "https://idam.acme.io/oauth2/token",
userinfo: "https://idam.acme.io/oauth2/userinfo",
issuer: "https://idam.acme.io/t/myappname/oauth2/token"
clientId: process.env.OIDC_CLIENT_ID,
clientSecret: process.env.OIDC_CLIENT_SECRET,
},
},
```