Поддомен Multi Tenant логин с IdentityServer4 - PullRequest
0 голосов
/ 12 февраля 2019

Я пытаюсь реализовать мультитенантное приложение с identityserver4, скажем, у меня есть

  • web1.local.com
  • web2.local.com

когда я вошел в web1.local.com другой домен, который является web2.local.com, также автоматически вошел в систему.

есть ли в любом случае разделить эти логины?

я думалесть пользовательская реализация IUserSession

public virtual async Task CreateSessionIdAsync(ClaimsPrincipal principal, AuthenticationProperties properties)
{
    if (principal == null) throw new ArgumentNullException(nameof(principal));
    if (properties == null) throw new ArgumentNullException(nameof(properties));

    var currentSubjectId = (await GetUserAsync())?.GetSubjectId();
    var newSubjectId = principal.GetSubjectId();

    if (!properties.Items.ContainsKey(SessionIdKey) || currentSubjectId != newSubjectId)
    {
        properties.Items[SessionIdKey] = CryptoRandom.CreateUniqueId(16);
    }

    IssueSessionIdCookie(properties.Items[SessionIdKey]);

    Principal = principal;
    Properties = properties;
}

private void IssueSessionIdCookie(string sid)
{
    if (Options.Endpoints.EnableCheckSessionEndpoint)
    {
        if (GetSessionIdCookieValue() != sid)
        {
            HttpContext.Response.Cookies.Append(
                Options.Authentication.CheckSessionCookieName,
                sid,
                CreateSessionIdCookieOptions());
        }
    }
}

что является лучшим подходом?

1 Ответ

0 голосов
/ 13 февраля 2019

Я полагаю, что проблема, с которой вы столкнулись, заключается в том, что после того, как IdentityServer сгенерирует файл cookie сеанса независимо от того, какое приложение изначально использовалось для входа в систему, IdentityServer всегда будет пропускать вход в систему при последующих запросах любых других приложений (из-за того, что изначальноcookie cookie).

Чтобы всегда вызывать аутентификацию между различными приложениями, вы можете использовать строку запроса 'prompt' в запросе на авторизацию и установить ее равной 'login'.Более подробную информацию можно найти здесь: http://docs.identityserver.io/en/latest/endpoints/authorize.html?highlight=prompt

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