Azure AD CustomEvents causing MsalUiRequiredException


using Microsoft.Identity.Web;
using Microsoft.Identity.Web.UI;
services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
.AddMicrosoftIdentityWebApp()
.EnableTokenAcquisitionToCallDownstreamApi(new string[] { "a" })
.AddDistributedTokenCaches();

IDW10502:由于用户的挑战而抛出MsalUiRequiredException。参见https://aka.ms/ms-id-web/ca_incremental-consent。

如果我删除OpenIdConnectOptions事件,我没有看到任何错误。

services.Configure<OpenIdConnectOptions>(OpenIdConnectDefaults.AuthenticationScheme, options =>
{
options.Events = new OpenIdConnectEvents
{
OnRedirectToIdentityProvider = (context) =>
{
if (context.Request.Headers.ContainsKey("X-Forwarded-Host"))
{
context.ProtocolMessage.RedirectUri = "https://" + context.Request.Headers["X-Forwarded-Host"] + Configuration.GetSection("AzureAd").GetValue<String>("CallbackPath");
}
return Task.FromResult(0);
}
};
});

MsalUiRequiredException

错误码:AADSTS65001:用户或管理员未同意使用ID为"{appId}"、命名为"{appName}"的应用程序。发送一个此用户和资源的交互式授权请求。

缓解

先征得用户同意。如果你没有使用。net Core(没有任何Web UI),调用(一次)AcquireTokeninteractive。如果你正在使用。net core或不想做AcquireTokenInteractive,用户可以导航到一个URL来表示同意:https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id={clientId}&response_type=code&scope=user.read。调用AcquireTokenInteractive: app.AcquireTokenInteractive(scopes).WithAccount(account).WithClaims(ex.Claims).ExecuteAsync();

并尝试在您的租户上启用多因素身份验证。

详细信息请参考本文档

相关内容

  • 没有找到相关文章

最新更新