我有一个具有自定义身份验证(用户/角色/权限等)的旧式ASP.Net MVC应用程序和一个MySQL数据库。 我现在正在开发一个简单的ASP.NET Core 3.1 API,该API需要连接到同一数据库以在外部插入一些数据(以后将由旧版应用程序使用)。 API用户将从MVC系统添加到数据库,并且身份验证需要使用JWT令牌。
我宁愿不复制API中的所有身份验证逻辑(这很复杂),所以我想向MVC应用程序添加一个API端点以重用已经存在的身份验证逻辑并返回JWT / refresh令牌。这应该很简单。
我的问题是在API中使用此方法的最佳方法是什么?我应该只使用代码段波纹管之类的东西,然后从API的身份验证端点调用MVC应用程序中的身份验证端点,还是使用IdentityServer的合适人选?
services.AddAuthentication(x =>
{
x.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
x.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
}).AddJwtBearer(x =>
{
x.RequireHttpsMetadata = false;
x.SaveToken = true;
x.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuerSigningKey = true,
IssuerSigningKey = new SymmetricSecurityKey(key),
ValidateIssuer = false,
ValidateAudience = false
};
});
答案 0 :(得分:0)
它基于您的应用程序业务逻辑。使用JWT是为应用程序提供无状态身份验证和授权的简单方法。但是,如果要使用多个服务器和客户端来实现应用程序,最好使用IdentityServer之类的工具,该工具为集中式身份管理和单一登录工具提供解决方案。