Какие пакеты nuget вы используете
Пакеты Sustainsys.Saml2.AspNetCore2 используются для использования SAML из ADFS 4.0
Каково ожидаемое поведение
Когда я инициирую однократный выход из системы, позвонив «Saml2 / Logout».
- Saml2Handler> Метод HandleRequestAsync вызывается
- Затем в 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);
}
}