【问题标题】:Azure AD OAuth Refreshing TokensAzure AD OAuth 刷新令牌
【发布时间】:2017-10-27 06:25:31
【问题描述】:

我正在制作一个应用程序,它的任务之一是使用 KeyVault 中的 REST API。我已经编写了可以毫无问题地向 KeyVault 查询机密的函数。 根据此链接上的文档,我还编写了用于从 AAD 请求 OAuth 令牌的函数:

https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-protocols-oauth-code

我不确定的是;由于应用程序将在令牌过期时安装在数百台计算机上,并且调用刷新令牌的功能很可能不止一台 PC 将进行 POST。这种情况的最佳实践是什么?我应该在调用刷新令牌函数后配置指数回退吗?

安装在机器上的应用程序将无法相互通信。

我能想到的唯一方法是使用逻辑应用作为代理,但这会破坏 KeyVault 的目的。

【问题讨论】:

  • 我不确定您到底关心什么。您能否编辑您的问题并详细说明以下when a token expires and the function to refresh the token is called chances are that more than one PC is going to make the POST?谢谢。
  • @GauravMantri 这是一个在多台 PC 上运行的客户端应用程序,因为每个运行的实例都将请求使用相同的 AAD 令牌,这意味着当它过期时,不止一台 PC 可以请求刷新
  • since each instance running will request use the same AAD token - 我认为这就是你的困惑所在。基本上每个用户都会得到他们自己的 AAD 令牌,正如薛飞在答案中提到的那样。
  • 我没有使用基于用户的身份验证,我使用 AppID 和 Secret 来生成 AAD 令牌,因为应用程序对用户是透明的并且他们不与之交互。因此,正在运行的应用程序的每个实例最终都会收到相同的令牌

标签: powershell azure azure-active-directory


【解决方案1】:

您提供的文档正在使用代码授权流程来获取访问令牌。此流程要求用户登录以获取令牌。你的意思是你安装的所有电脑都将使用同一个帐户来获取令牌?

如果是,您可以设计自己的token cache。例如,您可以使用 SQL 服务器来存储缓存。然后应用程序将在发送令牌请求之前在令牌缓存中搜索令牌/刷新令牌。如果令牌过期,您可以刷新它。在这种情况下,所有 PC 将共享相同的访问令牌,因为它们使用相同的帐户登录。

如果没有,您需要在访问令牌过期时为每台 PC 刷新。因为每个用户的访问令牌都不同。

【讨论】:

  • 在 SQL 实例中存储 AAD 的令牌不会破坏 KeyVault 的用途吗?如果我需要在 Azure SQL 实例中查询 AAD 令牌,那么我不妨将机密存储在 SQL 中并查询 SQL。我还忘了提到我没有使用用户凭据,我使用的是 AAD 专门为此应用生成的 AppID
  • SQL Server 只是演示解决方案之一。您可以根据需要实现令牌缓存。您使用的确切命令是什么?或者您可以分享您获取访问令牌的请求吗?
  • 我使用的请求与我发布的链接上的示例相同,该部分名为“使用授权代码请求访问令牌”。我在 Azure 上使用 OAuth 与其他服务的主要区别在于,对于我发送的每个令牌请求,每个应用程序实例都会获得自己的唯一令牌,因此刷新它是一项 1-1 任务。使用 Azure,它似乎是多对一的,因此我的问题在这里。
【解决方案2】:

因此,在使用 MS 进行一些测试和验证后,链接上的文档似乎已过时。生成令牌时,它的生命周期为 8 小时(这是可配置的),因此每次我向 /token 发出请求时都会发出一个新令牌,因为时间窗口很小,我不需要担心令牌刷新因为 PC 不会打开超过 8 小时。

另一部分是我构建了一个函数来测试现有令牌的有效性,在我查询任何 azure 服务之前,我会测试令牌的有效性,如果它失败,则请求一个新的令牌。由于令牌生命周期窗口很短并且每台机器都有自己的令牌(我认为所有机器都获得相同的令牌,我的代码错误)这不再是一个问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-08
    • 2019-08-31
    • 1970-01-01
    • 2018-01-21
    • 2020-05-05
    • 2020-03-17
    • 2018-01-03
    相关资源
    最近更新 更多