成功登录后的Azure AD B2C重定向循环

时间:2020-03-14 04:43:12

标签: api azure-active-directory azure-ad-b2c

我正在尝试通过以下example project在Azure Net Core Web应用程序和Web api中使用Azure AD B2C进行身份验证和授权:

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

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

  3. 登录和身份验证有效(请参见以下屏幕截图),但是登录后,浏览器处于我的b2c实例url和我的本地主机(https://localhost:44316/signin-oidc,请参见下面的屏幕截图)之间的重定向循环中。在我的B2C租户中注册的应用程序中,将URL https://localhost:44316/signin-oidc设置为重定向URL,但是mvc Web应用程序中实际上不存在路径signin-oidc。我猜这就是为什么发生重定向循环(?)。

  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();
           }

  • Web API控制器使用[Authorize]属性来保护API。我还在Azure AD租户中注册的应用程序中公开了该API,并为其设置了作用域。 API权限也已获得管理员的同意/授予

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

Login through B2C redirect loop after login

0 个答案:

没有答案