У меня есть два приложения, одно из которых написано на VB. Net с использованием Asp. Net веб-форм (приложение1). Второй находится в C# с использованием Asp. Net Core MVC (app2). Я хочу создать веб-API, который аутентифицирует пользователя, пытающегося получить доступ к любому приложению, и делит этот токен авторизации между приложениями. Если пользователь переходит от app1 к app2, токен JWT будет считаться действительным, и этот пользователь будет эффективно зарегистрирован. Если тот же самый пользователь выходит из системы в любой момент, он удаляет токен JWT и потребует повторного входа в систему.
Я создал веб-API, работающий с платформой идентификации и сущностей, которая уже создает токены JWT, если у вас есть аккаунт в личность и успешно выполняет авторизацию сам по себе. Я изо всех сил пытаюсь заставить app2 принять этот JWT и каким-то образом анализировать его, чтобы увидеть, какие роли пользователь играет в app2. Вот моя текущая страница Startup.cs с информацией о том, как я подключил JwtBearer:
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
var authManager = Configuration.GetSection("AuthenticationManager");
var key = TextEncodings.Base64Url.Decode(authManager.GetSection("AudienceSecret").Value);
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.RequireHttpsMetadata = false;
options.Authority = authManager.GetSection("Address").Value;
options.Audience = "my secret audience";
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuerSigningKey = true,
IssuerSigningKey = new SymmetricSecurityKey(key),
ValidateIssuer = false
};
});
services.AddControllersWithViews();
services.AddMvc();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
}
}
Есть ли умный способ перенаправления для входа в систему, и чтобы действия контроллера app2 имели атрибут [Authorize], просто посмотрите на JWT из API? Спасибо!