Единый выход из системы не работает в ядре asp.net SAML 2 - PullRequest
0 голосов
/ 23 мая 2019

Какие пакеты nuget вы используете

Пакеты Sustainsys.Saml2.AspNetCore2 используются для использования SAML из ADFS 4.0 Каково ожидаемое поведение Когда я инициирую однократный выход из системы, позвонив «Saml2 / Logout».

  1. Saml2Handler> Метод HandleRequestAsync вызывается
  2. Затем в LogoutCommand> InitiateLogout вызывается в некоторый момент.

Здесь request.User не должен быть нулевым, так что «AuthServicesClaimTypes.LogoutNameIdentifier» и Заявки AuthServicesClaimTypes.SessionIndex могут быть проанализированы и использованы для создания ответа Saml на выход из системы.

if (request.User != null)
        {
            idpEntityId = request.User.FindFirst(AuthServicesClaimTypes.LogoutNameIdentifier)?.Issuer;
            sessionIndexClaim = request.User.FindFirst(AuthServicesClaimTypes.SessionIndex);
        }

Что происходит вместо этого.

request.User всегда нулевой, кажется, что код никогда не заполняет его. Если вы посмотрите на вызов Saml2Hanlder> HandleRequestAsync. Здесь вызов «context.ToHttpRequestData (dataProtector.Unprotect)» никогда не заполнит пользователя.

public Task<bool> HandleRequestAsync(){    if(context.Request.Path.StartsWithSegments(options.SPOptions.ModulePath, StringComparison.Ordinal))
     {
         var commandName = context.Request.Path.Value.Substring(
             options.SPOptions.ModulePath.Length).TrimStart('/');

         var commandResult = CommandFactory.GetCommand(commandName).Run(
             context.ToHttpRequestData(dataProtector.Unprotect), options);

         commandResult.Apply(context, dataProtector, options.SignInScheme);

         return Task.FromResult(true);
     }
     return Task.FromResult(false);
 }
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...