我有一个 Django 应用程序,它当前存储用户凭据并执行授权和身份验证。我正在将前端分解为 Angular SPA 并将后端转换为 REST API。我的 Django API 将作为受 Azure API 网关保护的 Azure API 应用程序存在。我想从 Django 中删除身份验证部分,并允许用户通过 Google 或 Microsoft 帐户使用 OpenID Connect 登录。我想要发生的是这样的:
当用户访问该网站时,假设他们从未注册过我的应用程序,他们将可以选择使用他们的 Google 帐户或 Microsoft 帐户登录。如果用户决定使用他们的 Google 或 Microsoft 帐户登录,(这是我感到困惑的地方,也是我在这里发帖的原因......)我认为会发生什么是 API 网关执行身份验证,生成 JSON Web 令牌(JWT),并将该令牌发送回 Django API。Django 接收 JWT,对其进行解密,并检查是否存在与 JWT 中的电子邮件地址匹配的用户帐户。如果没有用户帐户,Django 会将用户添加到用户帐户表(不存储密码)。如果有与该电子邮件地址匹配的用户,则 Django 允许该用户进入。
说了这么多,我想我的问题是:
我应该在 API 管理网关上进行身份验证,还是应该在 Azure Web API 上进行身份验证?
我可以使用 Django 的内置身份验证系统来做我想做的事还是不需要做的事?
我是不是把这一切都复杂化了?有没有更简单的方法来做到这一点?这一切似乎需要做很多工作。
我应该使用 OpenID Connect(而不是 Oauth2)吗?我也没有经验。