У меня был быстрый вопрос, касающийся конкретной детали реализации по использованию Компонентного пространства с Identity Server 4 ComponentSpace SAML для ASP.NET Core Руководство по интеграции IdentityServer4
В нашем существующем коде вДействие Login AccountsController, мы используем http://docs.identityserver.io/en/latest/reference/interactionservice.html GetAuthorizationContextAsync, чтобы получить контекст запроса авторизации
if (ModelState.IsValid)
{
var user = await _umStore.FindUserByEmailAsync(model.Username);
// Get the client user manager properties - get these from the database
var context = await _interaction.GetAuthorizationContextAsync(model.ReturnUrl);
На данный момент я различаю запрос SAML как таковой, что, как вы можете себе представить, довольно ужасный хак… Я получаю нулевой контекст запроса авторизации, поскольку клиент SAML не настроен в таблице dbo.Clients на уровне сервера идентификации 4 дБ.
if (context == null && model.ReturnUrl.Contains("SingleSignOnServiceCompletion"))
{
if (await _umStore.ValidateCredentialsAsync(model.Username, model.Password))
{
AuthenticationProperties props = null;
if (AccountOptions.AllowRememberLogin && model.RememberLogin)
{
props = new AuthenticationProperties
{
IsPersistent = true,
ExpiresUtc = DateTimeOffset.UtcNow.Add(AccountOptions.RememberMeLoginDuration)
};
};
await HttpContext.SignInAsync(user.UserId.ToString(), user.UserName, props);
return Redirect(model.ReturnUrl);
}
}
Итак, вопрос в том, как мне создатьклиент SAML в dbo.Clients IdentityServer4 dB для возврата действительного запроса авторизации?