Azure active directory APIM最佳实践中的AAD令牌缓存

Azure active directory APIM最佳实践中的AAD令牌缓存,azure-active-directory,azure-api-management,Azure Active Directory,Azure Api Management,我们正在运行一个web应用程序,它可以聚合来自许多提供商(Graph、SharePoint、O365和许多其他经同意的基于aad的API)的数据 我们将呼叫路由到APIMs中相应的上游(获取海外建筑运营管理局令牌并将请求转发到上游) 我们的预期是AAD代币交换将非常快(约200毫秒),但我们发现平均需要900毫秒左右 由于请求来自APIM(没有ADAL缓存),因此从一个用户到一个上游(比如Graph API)的多个请求多次(针对每个API命中)获得交换令牌(OBO令牌) 我们正在考虑向APIM添

我们正在运行一个web应用程序,它可以聚合来自许多提供商(Graph、SharePoint、O365和许多其他经同意的基于aad的API)的数据

我们将呼叫路由到APIMs中相应的上游(获取海外建筑运营管理局令牌并将请求转发到上游)

我们的预期是AAD代币交换将非常快(约200毫秒),但我们发现平均需要900毫秒左右

由于请求来自APIM(没有ADAL缓存),因此从一个用户到一个上游(比如Graph API)的多个请求多次(针对每个API命中)获得交换令牌(OBO令牌)

我们正在考虑向APIM添加一个Redis缓存来缓存令牌

在此之前,我想听听这里的专家

  • 优化多个海外建筑运营管理局令牌获取的最佳方法是什么。(例如:是否有一种方法可以在向AAD发出的单个请求中获取多个海外建筑运营管理局令牌(SharePoint令牌、Graph令牌等)

  • 在APIM中,令牌缓存的最佳实践是什么?如果我们将外部缓存添加到APIM中,还需要部署哪些其他安全措施

  • 是否有在200毫秒内获得海外建筑运营管理局代币的最佳实践


  • 提前谢谢

    从APIM方面来看,我只能回答#2

  • 您无需添加外部缓存,APIM自带内置缓存,只需使用缓存存储值和缓存查找值策略来存储和检索值。您可以调查收到的令牌(使用.AsJwt()函数解析它)并将缓存过期时间设置为低于令牌寿命的值。APIm中的外部缓存在您需要更多缓存空间或希望能够主动清除缓存时非常有用。如果使用外部缓存,APIm将使用提供的连接字符串使用HTTPS连接到外部Redis实例

  • 我不认为它是最佳实践,但是我们只在APIM缓存中放置接收到的令牌(不在缓存之前),令牌失效时间的寿命减去几个秒。