Asp.net core 机密客户端应用程序缓存-GetAccountAsync
最近,我加入了一个项目,该项目使用Azure AD Open ID connect身份验证代码对ASP.Net核心web应用程序进行身份验证。 当我试图在本地运行它时,我会遇到使用GetAccountAsync方法(返回null)检索信息的问题。从我读到的内容来看,我认为代码缺少一个缓存用户/应用程序令牌的缓存助手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
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 APIAcquireTokenForClient
负责令牌缓存。这是详细信息。看起来不错,谢谢!不过现在有一件事是,我将作用域转发到AcquireTokenForClient
,它说:作用域目录.Read.All User.Read无效。