为什么ConfidentialClientApplication.GetAccountsAsync会间歇性返回null?

时间:2019-03-01 03:46:55

标签: jwt azure-active-directory asp.net-core-2.0 openid-connect

我正在使用示例Azure AD Open ID连接身份验证代码来验证我的ASP.Net Core Web应用程序。

标准身份验证流程可以完美地运行,但是当我尝试通过令牌获取服务获取JWT时,对GetAccountAsync和GetAccountsAsync的调用均无法返回帐户。

疯狂的是,它并不总是失败。

在Edge中,如果凭据被缓存并且我未登录,则GetAccountAsync无法返回帐户。如果未缓存凭据并且我登录,GetAccountAsync将返回一个帐户。

是什么原因造成的?

我注意到,当缓存凭据时,不会收到OnAuthorizationCodeReceived,并且将帐户添加到此处的缓存中。

var handler = options.Events.OnAuthorizationCodeReceived;
options.Events.OnAuthorizationCodeReceived = async context =>
{
    var _tokenAcquisition = context.HttpContext.RequestServices.GetRequiredService<ITokenAcquisition>();
    await _tokenAcquisition.AddAccountToCacheFromAuthorizationCode(context, options.Scope);
    await handler(context);
};

如何将这些凭据添加到缓存中,而无需像登录到浏览器中时那样进行登录?

0 个答案:

没有答案