我正在使用示例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);
};
如何将这些凭据添加到缓存中,而无需像登录到浏览器中时那样进行登录?