oauth2.0 NextAuth不返回自定义范围

iszxjhcz  于 2023-10-15  发布在  其他
关注(0)|答案(1)|浏览(110)

我有一个使用NextAuth的NextJS项目。当我使用默认作用域时,它工作得很好。然而,我的项目需要额外的声明,你可以看到支持的范围here

"scopes_supported": [
    "openid",
    "offline_access",
    "iss",
    "address",
    "email",
    "phone",
    "profile",
    "external_groups",
    "access_roles",
    "tenant",
    "groups",
    "identity_provider",
    "linked_identity",
    "amr",
    "custom_claims",
    "provider_claims"
  ],

我使用下面的配置来获取这些自定义声明

authorization: { params: { scope: 'openid profile email external_groups access_roles groups custom_claims provider_claims' } },

然而,我没有看到任何自定义索赔和默认索赔正在返回。你可以用代码重现错误:https://github.com/pavankjadda/next-auth-demo

t1qtbnec

t1qtbnec1#

所以这个问题是NextAuth不返回用户数据。我必须通过传递access_token来覆盖userInfo端点,以获取所需的数据

userinfo: {
    url: 'https://auth.ncats.nih.gov/_api/v2/auth/NCI-CCR-TEST/me',
    async request(context) {
    return await context.client.userinfo(context.tokens?.access_token ?? '');
  },
},

注意:确保从authorization中删除不必要的作用域,因为这会增加发送到Auth服务器的cookie

authorization: { params: { scope: 'openid profile email' } },

相关问题