【发布时间】:2016-03-07 03:36:26
【问题描述】:
我有一个 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)吗?我也没有这方面的经验。
【问题讨论】:
标签: django jwt openid-connect azure-api-apps azure-api-management