📜  .net 核心登录重定向循环 - C# (1)

📅  最后修改于: 2023-12-03 14:59:01.657000             🧑  作者: Mango

.net 核心登录重定向循环 - C#

开发者常常会遇到登录重定向循环的问题,这是因为应用程序和认证服务器之间的通信出现了问题,通常是由于配置或代码错误引起的。本文将为您介绍 .net 核心的登录重定向循环问题,并提供解决办法。

问题描述

当用户通过应用程序进行认证并试图访问需要验证的保护资源时,应用程序会将用户重定向到认证服务器以获取授权令牌。在很多场景下,应用程序不需要本地存储令牌,而是在需要时将用户重新定向到认证服务器,以获取新的令牌。这就是重定向循环的产生。

解决办法

有多种方式可以解决重定向循环的问题,本文将讨论以下两种方法:

方法一:配置浏览器

可以在浏览器中配置相应的设置,以解决登录重定向循环问题。针对 Google Chrome 浏览器,在浏览器地址栏中输入 chrome://flags/#same-site-by-default-cookies 并按回车键,然后将 SameSite by default cookies 和 Cookies without SameSite must be secure 选项设置为 Disabled。这样就可以防止在身份验证服务器重定向时发生循环。

方法二:使用 OIDC 库

在 .net 核心应用程序中使用 OIDC 库可以帮助解决登录重定向循环问题。例如,将 Microsoft.Identity.Web 库添加到应用程序中可以自动处理 OIDC 流,并为您管理令牌刷新和缓存请求。以下是使用 Microsoft.Identity.Web 库的示例:

services.AddMicrosoftIdentityPlatformAuthentication(Configuration)
    .AddMsal(Configuration, new string[] { "User.Read" })
    .AddInMemoryTokenCaches();

上述代码将配置 Microsoft.Identity.Web 库,并启用允许应用程序从配置文件中加载应用程序 ID 和秘密等信息。另外,该代码还允许应用程序使用用户的标识和令牌进行身份验证,因此可以避免登录重定向循环。

结论

登录重定向循环是一种常见的身份验证问题,可以通过配置浏览器或使用 OIDC 库来解决。在应用程序中使用 OIDC 库可以使身份验证变得更加简单,同时避免了许多与身份验证相关的问题。在使用 OIDC 库时请务必注意安全性问题,以避免潜在的安全风险。