我正在尝试开发一种概念,以在ASP.NET核心服务器环境中支持多种身份验证方法,该环境应同时支持Windows(WPF)客户端和Web客户端(Angular)。用户应该能够使用以下三种方法登录:
- 使用用户名和密码,并根据有效登录数据库进行检查
- 使用Windows身份验证(即当前登录的用户)。这可能要求用户PC和服务器位于同一网络/域上
- 使用选定的外部身份验证提供程序,例如Google
用户应具有个人权利(声明),这些权利可以来自其个人资料或组成员身份(例如,在AD的情况下)。
我仍处于概念阶段,试图在这里弄清楚基础知识,因此尚未编写任何代码。
我的想法如下:
使用用户名和密码登录的- 用户会收到某种令牌(JWT),然后授权他们访问受保护的/受限制的呼叫。
- 使用Windows身份登录的用户基本上会收到相同的令牌
通过外部身份验证提供者登录的- 用户将从提供者处接收外部令牌,并使用该令牌登录,并从服务器中获取令牌
- 不管是1-3,用户最终都会获得服务器发行的令牌,从而可以访问受限功能
这是混合身份验证的常用/正确方法吗?如果是这样,该如何在ASP.NET核心服务器端实现?