Azure活动目录令牌缓存c#控制台应用程序

本文关键字:控制台 应用程序 缓存 令牌 活动 Azure | 更新日期: 2023-09-27 18:12:47

我正在使用控制台应用程序探索Active Directory身份验证库(ADAL)。据说,一旦使用oauth检索令牌,检索到的令牌将缓存为先前登录的相同资源名、客户端和用户。虽然这在Win8.1原生应用中运行良好,但我无法将其用于控制台应用。

下面是我用来获取令牌的代码:
AuthenticationContext authContext = new AuthenticationContext("https://login.microsoftonline.com/{tenantGUID}/", false);
var result = authContext.AcquireToken(APPResourceName, clientGUID, redirectUri, PromptBehavior.Auto);

应该是PromptBehavior。Auto应该只在Azure上没有缓存这样的令牌时提示用户,正如我所说,这在Win8.1原生应用程序中完美地工作。此外,我注意到提示界面(登录UI)在本地Win8.1(桌面UI版本)和控制台应用程序(移动UI版本)提示时略有不同,这是正常的吗?

有谁能指出为什么它不能在正常的控制台应用程序中工作吗?

Azure活动目录令牌缓存c#控制台应用程序

Tokencache只存在于。net应用程序的内存中,因为没有已知的默认写入位置。缓存为您提供委托挂钩,以便将数据读写到您选择的存储中。在win8.1原生应用中,我假设你指的是存储应用,缓存被保存在应用的存储中,该存储被沙盒保护,不受其他进程的影响。

据我所知,令牌存储在本地/会话存储(web浏览器)中,控制台应用程序无法以这种方式存储令牌(当然是原生的)。也许有个变通办法之类的。微软的UWP可以依赖许多技术,如JS,如果这是你的情况,它将使用类似浏览器的技术,你可以保存你的令牌