Есть ли способ изменить client_id и client_secret на лету в IdentityServer4 - PullRequest
0 голосов
/ 22 мая 2019

Мы создали мультитенантное приложение SaaS, и мне нужно динамически изменить client_id. Как я могу изменить client_id и client_secret в событии OnRedirectToIdentityProvider?

1 Ответ

0 голосов
/ 22 мая 2019

Как уже упоминалось в комментарии к @d_f, это неправильный подход. Правильный подход для этого - передача идентификатора клиента от клиента в IdentityServer с использованием события: OnRedirectToIdentityProvider
Пример

    options.Events.OnRedirectToIdentityProvider = (loginRedirectContext) =>
                {
                    var servicesProvider = loginRedirectContext.HttpContext.RequestServices;
                    var tenantInfo = servicesProvider.GetRequiredService<IRequestContextTenantInfo>();

loginRedirectContext.ProtocolMessage.SetParameter("tenantId", tenantInfo.Id);


                    return Task.FromResult(0);
                };

В Identity Server Вы можете прочитать его в методе Login Login следующим образом:

var _interaction = context.RequestServices.GetRequiredService<IIdentityServerInteractionService>();
                var returnUrl = context.Request.Query["ReturnUrl"].ToString();

                var authContext = await _interaction.GetAuthorizationContextAsync(returnUrl);
                tenantId = authContext.Parameters["tenantid"];

Теперь, основываясь на идентификаторе арендатора, вы должны знать, к какому арендатору нужно подключиться, чтобы проверить процесс входа в систему.

Хорошей практикой также является внедрение специального пользовательского промежуточного программного обеспечения в IdentityServer4 для обработки многопользовательской среды на ранней стадии в конвейере запросов. Пример в методе Configure при запуске:

 app.UseMultiTenancy();
 app.UseIdentityServer();

и метод UseMultiTenancy () будут считывать параметр клиента, отправленный клиентом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...