首页 > 解决方案 > 成功登录后的 Azure AD B2C 重定向循环

问题描述

我正在尝试通过使用此示例项目在我的 dotnet 核心 Web 应用程序和 Web api 中使用 Azure AD B2C 进行身份验证和授权:

  1. 我有一个 dotnet mvc web 应用程序作为从 web api 获取数据(待办事项)的前端:

  2. 在我的 B2C 租户中注册了一个应用程序,并使用在 Azure AD 中注册的另一个应用程序进行 openID 连接身份验证。

  3. 登录和身份验证工作(见下面的截图),但登录后,浏览器在我的 b2c 实例 url 和我的 localhost 之间的重定向循环(https://localhost:44316/signin-oidc,见下面的截图)。url https://localhost:44316/signin-oidc在我在 B2C 租户中注册的应用程序中设置为重定向 url,但该路径signin-oidc实际上并不存在于我的 mvc Web 应用程序中。我想这就是重定向循环发生的原因(?)。

  4. 我的应用程序中的相关代码:

    • MVC 应用 Startup.cs:
   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();
           }

重定向循环的原因可能是什么?我们应该在 B2C 租户的注册应用程序中使用不同的重定向 URI 吗?

通过 B2C 登录 登录后重定向循环

标签: apiazure-active-directoryazure-ad-b2c

解决方案


推荐阅读