【问题标题】:Django API fronted by Azure API gatewayAzure API 网关前端的 Django API
【发布时间】: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 允许该用户进入。

说了这么多,我想我的问题是:

  1. 我应该在 API 管理网关上进行身份验证,还是应该在 Azure Web API 上进行身份验证?

  2. 我可以使用 Django 的内置身份验证系统来做我想要或不需要的吗?

  3. 我是不是把这一切都过度复杂化了?有没有更简单的方法来做到这一点?所有这一切似乎都是一项艰巨的工作。

  4. 我应该使用 OpenID Connect(而不是 Oauth2)吗?我也没有这方面的经验。

【问题讨论】:

    标签: django jwt openid-connect azure-api-apps azure-api-management


    【解决方案1】:

    Azure API 管理实际上不提供任何类型的 JWT 发布机制,因此您必须自己实现。这样做的终点可能会也可能不会通过 API 管理公开。

    可能让您感到困惑的是,APIm Portal 支持各种身份提供商(如 Twitter 或 Google)来注册 API。但这些不是您的应用程序用户,这些是 API 门户用户

    可以使用 APIm 网关执行的操作是验证对后端 API 的后续调用是否提供的 JWT 令牌有效(使用 <validate-jwt> 策略)。

    【讨论】:

    • 感谢您的回复。那么,如果我理解正确的话,API Gateway 不是 oAuth2 提供者并且不会发布令牌?也就是说,您知道 Azure API 应用程序中内置的身份验证提供程序是否可以提供令牌?
    • 您好 Progger,是的,您是对的,APIm 网关不充当 OAuth2 提供者。我还没有使用过 API 应用程序,所以很遗憾,我无法回答这个问题。
    猜你喜欢
    • 2018-07-30
    • 2015-10-03
    • 1970-01-01
    • 2020-06-13
    • 2019-01-23
    • 2018-08-13
    • 2017-07-06
    • 2014-10-15
    • 1970-01-01
    相关资源
    最近更新 更多