Asp.net core 机密客户端应用程序缓存-GetAccountAsync

Asp.net core 机密客户端应用程序缓存-GetAccountAsync,asp.net-core,azure-active-directory,Asp.net Core,Azure Active Directory,最近,我加入了一个项目,该项目使用Azure AD Open ID connect身份验证代码对ASP.Net核心web应用程序进行身份验证。 当我试图在本地运行它时,我会遇到使用GetAccountAsync方法(返回null)检索信息的问题。从我读到的内容来看,我认为代码缺少一个缓存用户/应用程序令牌的缓存助手 public async Task<string> GetUserAccessTokenAsync(string userId) { va

最近,我加入了一个项目,该项目使用Azure AD Open ID connect身份验证代码对ASP.Net核心web应用程序进行身份验证。 当我试图在本地运行它时,我会遇到使用GetAccountAsync方法(返回null)检索信息的问题。从我读到的内容来看,我认为代码缺少一个缓存用户/应用程序令牌的缓存助手

    public async Task<string> GetUserAccessTokenAsync(string userId)
    {
        var account = await _app.GetAccountAsync(userId);
    
        try
        {
            var result = await _app.AcquireTokenSilent(_scopes, account).ExecuteAsync();
            return result.AccessToken;
        }

        // Unable to retrieve the access token silently.
        catch (Exception)
        {
            throw new ServiceException(new Error
            {
                Code = GraphErrorCode.AuthenticationFailure.ToString(),
                Message = "Caller needs to authenticate. Unable to retrieve the access token silently."
            });
        }
    }
公共异步任务GetUserAccessTokenAsync(字符串用户ID) { var account=await\u app.GetAccountAsync(userId); 尝试 { var result=wait _app.AcquireTokenSilent(_scopes,account).ExecuteAsync(); 返回result.AccessToken; } //无法以静默方式检索访问令牌。 捕获(例外) { 抛出新ServiceException(新错误 { Code=GraphErrorCode.AuthenticationFailure.ToString(), Message=“呼叫方需要进行身份验证。无法以静默方式检索访问令牌。” }); } } 如果有人知道我能做些什么来解决这个问题,我很高兴知道:)


谢谢大家!

如果您使用的是MSAL.NET,则默认情况下会提供内存内令牌缓存。这是您的文档。您可以尝试使用API
var accounts=wait app.GetAccountsAsync()吗如本文所述?感谢您的输入。文档显示了使用PublicClientApplication而不是机密ClientApplication的API流。(不支持AcquireTokenInteractive)没有用于机密客户端应用程序的用户上下文,MSAL API
AcquireTokenForClient
负责令牌缓存。这是详细信息。看起来不错,谢谢!不过现在有一件事是,我将作用域转发到
AcquireTokenForClient
,它说:
作用域目录.Read.All User.Read无效。