我知道OAuth可以用作授权协议。授权用户后,我想通过基于角色的访问控制(RBAC)启用授权。例如,定义一个

问题描述 投票:0回答:1
和github用作OAuth提供商。 我的配置是基本的:

import { NextAuthOptions } from "next-auth"; import GitHubProvider from "next-auth/providers/github"; export const nextAuthConfig = { providers: [ GitHubProvider({ clientId: process.env.GITHUB_ID!, clientSecret: process.env.GITHUB_SECRET!, }), ], } satisfies NextAuthOptions;

当对用户进行认证时,我会收到他们的电子邮件。从那里开始,我应该如何评估其在OAUTH方案方面的作用? 我最初的想法是根据电子邮件在数据库中获得角色。然后,我需要将此角色存储在相关的位置,因此可能在数据库中的用户会话中(假设角色不会经常更改以简化问题),或者在JWT中进行。

成功身份验证后,我应该如何将角色归因于用户?

更完整的Oauth流动如下:

您的下一个应用程序将重定向到您的授权服务器(AS),您存储用户帐户和任何自定义字段(例如角色)

AS可以使用各种登录方法,包括身份提供商(IDP),例如GitHub。然后,它可以使用从IDP返回的值(如电子邮件)来识别用户帐户,然后将任何用户帐户值发布给返回您的应用程序的任何用户帐户值。

authentication next.js oauth-2.0 authorization rbac
1个回答
0
投票

interface Claims { idTokenClaims: any: customClaims: any; }

    在NextAuth中,您可以覆盖
  • jwtcallback

    ,进行数据库查找并使用额外属性更新

    token
  • 对象。
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.