我正在扩展我们产品上的登录选项以支持 MS 身份平台,以便能够使用 Azure AD 登录(并获得 SSO/MFA) 目前我们正在使用 .Net Core + JWT (JwtBearerDefaults.AuthenticationScheme)环境是 Angular 客户端、.Net Core APA 和后端数据库。
我有设置工作。
我的挑战是,在我们的业务模型和后端数据库中,我们有大约 2.000 个用户权限和我们自己的用户/角色模型授予访问权限。
我目前正在从 MSAL 获取 IdToken,并在我的概念证明中使用 oid 将 Azure ID 与我们的用户模型耦合。
但是,在我们现有的 JWT 解决方案中,我们的访问令牌包含有关用户 ID、角色以及确定访问权限的另一个属性(单元/船舶)的声明。从这三个属性中,我们可以根据 API 端的 2.000 个用户权限来验证请求是否被允许。
我想将此信息(用户、角色、单位)保留在令牌中 - 但对如何保留有疑问。
约束:
- 我们无法创建/使用 Azure 声明。我们有太多,客户将管理 Azure 应用程序——而我们为每个版本的软件创建、添加、删除权限。
- Azure 不知道角色/单位数据 - 每个客户的这些数据都不同 - 因此信息也不能在 Azure 中。
下面概述了我的最佳想法 - 这种方法是否正确,并且符合分离 ID/Access 的方式?
我希望有人可以给我一些反馈。
我的想法是,Angular 客户端获取 Azure IDToken。然后我使用 Azure IDToken,调用我们的 API,它在服务器端验证 ID 令牌,然后授予我一个访问令牌,其中包含用户、角色和单位。这个令牌根本不是 Azure 的,只是我们的 API 生成的一个令牌——这也是唯一一个验证它的令牌)。Pro 对这种方法的看法是,无论 Azure 或我们自己的 API 提供哪种 IDToken,我都可以保留一种访问令牌。
我希望在 Token 领域有更多经验的人可以验证这是否是一种可行的方法?
最好的问候/安德斯