【问题标题】:How can I use OAuth2 if I can't determine what redirect URI we will require in production?如果我无法确定生产中需要什么重定向 URI,我该如何使用 OAuth2?
【发布时间】:2019-11-16 23:03:37
【问题描述】:

我有一个想要添加 Office 365 连接的软件项目。出于安全考虑,需要 OAuth2 从云端检索邮箱等。我可以在 Azure 中设置一个重定向 URI(如果是硬编码的),它将在开发中工作,但在生产中,我们不知道也无法枚举该服务器将部署到的所有不同位置。因此,我们无法在 Azure 中输入静态重定向 URI。

有没有办法解决这个问题? OAuth2.0 标准 (RFC-6749) 中不允许使用重定向 URI 通配符

我正在使用 Angular 7 作为客户端层和 Spring 5+ 作为我们的后端。我尝试在客户端/服务器端动态解析当前的重定向 URI,但这并没有改变 Azure 需要在应用程序中预设重定向 URI 的事实。

编辑:除了上面的这些信息,重要的是要注意我们不能使用隐式或密码流来解决这个问题。不过,任何其他 OAuth2 工作流程都可以。

【问题讨论】:

  • 为每个环境创建一个应用注册?
  • 这对我们不起作用,遗憾的是(或谢天谢地?)我们有很多客户部署了我们的解决方案

标签: angular spring azure oauth-2.0 office365


【解决方案1】:

听起来您已将生产服务部署到多个位置以支持自动故障转移。

具体操作取决于您的具体架构。

如果您的故障转移机制支持基于单个传入 DNS 名称的路由,则使用该名称作为重定向 URI 并让它处理路由。

如果您无法做到这一点,则部署一个服务,例如 Azure Application Gateway,并使用它基于单个入口点将 HTTP 流量分配到您的生产服务器。

【讨论】:

  • 某种意义上,我们有客户将我们的应用程序部署到他们想要的任何地方,作为我们软件的 Web 应用程序前端。所以我们无法确定应用程序的位置
  • 您需要有一种机制来通过某种方式注册这些服务。重定向 URI 正在处理令牌,因此您要确保它们是可信的!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-26
  • 2022-08-08
  • 2014-09-05
  • 1970-01-01
  • 1970-01-01
  • 2017-02-09
相关资源
最近更新 更多