我正在尝试通过以下example project在Azure Net Core Web应用程序和Web api中使用Azure AD B2C进行身份验证和授权:
我有一个dotnet mvc Web应用程序作为前端,可从Web api提取数据(待办事项):
在我的B2C租户中注册了一个应用程序,并将另一个在Azure AD中注册的应用程序用于openID连接身份验证。
登录和身份验证有效(请参见以下屏幕截图),但是登录后,浏览器处于我的b2c实例url和我的本地主机(https://localhost:44316/signin-oidc,请参见下面的屏幕截图)之间的重定向循环中。在我的B2C租户中注册的应用程序中,将URL https://localhost:44316/signin-oidc设置为重定向URL,但是mvc Web应用程序中实际上不存在路径signin-oidc
。我猜这就是为什么发生重定向循环(?)。
我的应用中的相关代码:
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
services.AddOptions();
services.AddAuthentication(AzureADB2CDefaults.AuthenticationScheme)
.AddAzureADB2C(options => Configuration.Bind("AzureAdB2C", options));
// Token acquisition service based on MSAL.NET
// and chosen token cache implementation
services.AddWebAppCallsProtectedWebApi(Configuration, new string[] { Configuration["TodoList:TodoListScope"] }, configSectionName: "AzureAdB2C")
.AddInMemoryTokenCaches();
// inject dependencies
services.AddScoped<ITokenAcquisition, TokenAcquisition>();
services.AddHttpContextAccessor();
services.AddScoped<HttpClient, HttpClient>();
services.AddScoped<ITodoListService, TodoListService>();
services.AddRazorPages();
}
[Authorize]
属性来保护API。我还在Azure AD租户中注册的应用程序中公开了该API,并为其设置了作用域。 API权限也已获得管理员的同意/授予可能是重定向循环的原因?我们应该在B2C租户的已注册应用程序中使用不同的重定向URI吗?