【发布时间】:2021-02-17 01:35:03
【问题描述】:
我正在构建一个 web 应用程序,当我重新启动应用程序并尝试使用 ITokenAcquisition.GetTokenForUserAsync 请求令牌时一直遇到以下错误
“发生了一个或多个错误。(IDW10502:由于用户质询而引发了 MsalUiRequiredException。请参阅https://aka.ms/ms-id-web/ca_incremental-consent。)”
我正在使用 Microsoft.Identity.Web 针对 Azure AD 对用户进行身份验证。
当我检查令牌缓存时,重新启动应用程序后它是空的。如果用户已经从较早的会话中登录,或者因为他们使用的是加入域的设备,他们似乎绕过了缓存。
如何强制重新认证或向缓存添加令牌?
Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.Configure<CookiePolicyOptions>(options =>
{
// This lambda determines whether user consent for non-essential cookies is needed for a given request.
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.Unspecified;
// Handling SameSite cookie according to https://docs.microsoft.com/en-us/aspnet/core/security/samesite?view=aspnetcore-3.1
options.HandleSameSiteCookieCompatibility();
});
// Sign-in users with the Microsoft identity platform
services.AddMicrosoftIdentityWebAppAuthentication(Configuration)
.EnableTokenAcquisitionToCallDownstreamApi(new[] { "https://database.windows.net//.default" })
.AddInMemoryTokenCaches();
services.AddAuthorization(options =>
{
// By default, all incoming requests will be authorized according to the default policy
options.FallbackPolicy = options.DefaultPolicy;
});
services.AddDbContext<MyDatabaseContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("MyAzureConnection")));
services.AddRazorPages()
.AddRazorRuntimeCompilation()
.AddMvcOptions(o => o.Filters.Add(new AuthorizeFilter()))
.AddMicrosoftIdentityUI();
}
我请求令牌的 DbContext
public MyDatabaseContext (ITokenAcquisition tokenAcquisition,
DbContextOptions<MyDatabaseContext> options)
: base(options)
{
_tokenAcquisition = tokenAcquisition;
var token = _tokenAcquisition.GetAccessTokenForUserAsync(new[] {"https://database.windows.net//.default"});
var connection = (SqlConnection)Database.GetDbConnection();
connection.AccessToken = token.GetAwaiter().GetResult();
}
我所有的PageModels都用[AuthorizeForScopes(ScopeKeySection = "AzureSQL:BaseUrl")]装饰
【问题讨论】:
标签: .net azure-active-directory azure-web-app-service msal .net-5