api - 成功登录后的 Azure AD B2C 重定向循环
问题描述
我正在尝试通过使用此示例项目在我的 dotnet 核心 Web 应用程序和 Web api 中使用 Azure AD B2C 进行身份验证和授权:
我有一个 dotnet mvc web 应用程序作为从 web api 获取数据(待办事项)的前端:
在我的 B2C 租户中注册了一个应用程序,并使用在 Azure AD 中注册的另一个应用程序进行 openID 连接身份验证。
登录和身份验证工作(见下面的截图),但登录后,浏览器在我的 b2c 实例 url 和我的 localhost 之间的重定向循环(https://localhost:44316/signin-oidc,见下面的截图)。url https://localhost:44316/signin-oidc在我在 B2C 租户中注册的应用程序中设置为重定向 url,但该路径
signin-oidc
实际上并不存在于我的 mvc Web 应用程序中。我想这就是重定向循环发生的原因(?)。我的应用程序中的相关代码:
- 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 吗?
解决方案
推荐阅读
- c# - 如何允许用户随时从控制台退出 C# 输入
- typescript - 使用 Jest 进行测试时如何使用 `import.meta`
- ethereum - 验证 NFT ERC-721 代币所有权的最佳实践
- python - 导入 kivy 模块时出错。“模块未找到错误”。导入错误
- python - 当机器人尝试单击协议按钮时,python selenium 元素不可交互
- javascript - Vuex mapState 未从 Vuex 导入视图
- r - 按名称划分 R 表维度
- php - WSL中nginx+php-fpm运行缓慢(打开页面很慢)
- java - 带 GUI 的多线程客户端/服务器聊天室
- java - MapStruct:如何根据数组字段将一个POJO转换为多个实体