我正在使用控制台应用程序探索Active Directory身份验证库(ADAL)。并且据说,一旦使用oauth检索令牌,检索到的令牌将被缓存用于相同的资源名称,clientid和用户之前登录。虽然这在Win8.1 Native应用程序中运行良好,但我无法使其适用于控制台应用程序。
以下是我用来获取令牌的代码:
AuthenticationContext authContext = new AuthenticationContext("https://login.microsoftonline.com/{tenantGUID}/", false);
var result = authContext.AcquireToken(APPResourceName, clientGUID, redirectUri, PromptBehavior.Auto);
据说PromptBehavior.Auto只会在Azure上没有缓存此类令牌时提示用户,正如我所说,这在Win8.1 Native App中完美运行。另外我注意到,当从Native Win8.1(桌面UI版本)和控制台应用程序(移动UI版本)提示时,提示界面(登录UI)有点不同,这是正常的吗?
请有人指出为什么它在普通的控制台应用程序中不起作用吗?
答案 0 :(得分:0)
据我所知,令牌存储在本地/会话存储(Web浏览器)中,控制台应用程序无法以这种方式存储令牌(本机当然)。也许有一种解决方法或类似的东西。微软的UWP可以依赖许多技术,比如JS,如果你的情况是它会使用类似浏览器的技术,你可以保存你的令牌。
答案 1 :(得分:0)
Tokencache仅在.net应用程序的内存中,因为没有已知的默认位置可供编写。 Cache为您提供委托挂钩,以便您将数据读取和写入您选择的存储。 在win 8.1原生应用程序中,我认为你的意思是商店应用程序,缓存存储在应用程序的存储中,该存储空间被沙箱化并受到其他进程的保护。