Я пытаюсь прочитать параметр запроса (имя приложения) из URL-адреса входа в Azure B2C перед аутентификацией. У меня есть два приложения, использующие единый вход (SSO) с общими сеансами, и я хочу, чтобы имя приложения отображалось на странице входа в систему.
Я попробовал добавить параметр с помощью OpenIdConnectEvents.OnRedirectToIdentityProvider, и читает его с помощью JavaScript, но имя приложения не отображается на странице входа.
using Microsoft.AspNetCore.Authentication.OpenIdConnect;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc.Authorization;
using Microsoft.Identity.Web;
using Microsoft.Identity.Web.UI;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme).AddMicrosoftIdentityWebApp(options =>
{
builder.Configuration.GetSection("AzureAdB2C").Bind(options);
options.Events ??= new OpenIdConnectEvents();
options.Events.OnRedirectToIdentityProvider += context =>
{
var appName = "LicensePortal";
context.ProtocolMessage.SetParameter("appName", appName);
return Task.CompletedTask;
};
});
builder.Services.AddControllersWithViews(options =>
{
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
options.Filters.Add(new AuthorizeFilter(policy));
});
builder.Services.AddRazorPages()
.AddMicrosoftIdentityUI();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.MapRazorPages();
app.Run();
Это мой код Javascript для получения имени приложения
Sign up or sign in
function getQueryParameter(name) {
const urlParams = new
URLSearchParams(window.location.search);
return urlParams.get(name);
}
window.onload = function() {
const appName = getQueryParameter('appName');
if (appName) {
document.getElementById('appNameDisplay').innerText = appName;
}
};
Подробнее здесь: https://stackoverflow.com/questions/791 ... entication