Проблема
Я пытаюсь реализовать вход и вход с использованием внешнего IDP в приложении .Net 8 с SustaSysys .Saml2.aspnetCore2 (версия = 2.10.0) .
[*] login отлично работает. < /li>
ряд также работает , но после входа в систему пользователь перенаправляется на /самл2/logout.
Проблема: /saml2/logout возвращает 404 , и хотя я создал метод действия в этой конечной точке, запрос, похоже, перехвачен промежуточным программным обеспечением.
< /ul>
конфигурация в startup.cs < /strong> < /p>
var saml2Options = Configuration.GetSection("Authentication:Saml2").Get();
services.AddAuthentication(options =>
{
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = Saml2Defaults.Scheme;
})
.AddCookie(CookieAuthenticationDefaults.AuthenticationScheme)
.AddSaml2(options =>
{
options.SPOptions.EntityId = new EntityId(saml2Options.EntityId);
LoadCertificate(options, saml2Options.Certificate);
options.IdentityProviders.Add(new IdentityProvider(
new EntityId(saml2Options.IdentityProvider.EntityId),
options.SPOptions)
{
MetadataLocation = saml2Options.IdentityProvider.MetadataLocation,
LoadMetadata = true
});
});
< /code>
Метод действий в журнале < /strong>
Этот метод инициирует федеративный журнал, отправляя SAML Logoutrequest. < /p>
[HttpPost]
public IActionResult ExecuteLogout()
{
var props = new AuthenticationProperties
{
RedirectUri = "/"
};
var user = HttpContext.User;
var sessionIndex = user.FindFirst(Saml2ClaimTypes.SessionIndex)?.Value;
if (!string.IsNullOrEmpty(sessionIndex))
{
props.Items.Add(Saml2ClaimTypes.SessionIndex, sessionIndex);
}
var logoutNameIdentifier = user.FindFirst(Saml2ClaimTypes.LogoutNameIdentifier)?.Value;
if (!string.IsNullOrEmpty(logoutNameIdentifier))
{
props.Items.Add(Saml2ClaimTypes.LogoutNameIdentifier, logoutNameIdentifier);
}
return SignOut(props, Saml2Defaults.Scheme);
}
попытка исправить: Создание действия для/saml2/logout
, даже если я создал явный метод контроллера для обработки/SAML2/ Выход, он никогда не вызывается .
[AllowAnonymous]
[Route("Saml2")]
public class LoggedOutController : Controller
{
private readonly ILogger logger;
private readonly Saml2Settings samlSettings;
public LoggedOutController(ILogger logger, IOptions samlSettingsOptions)
{
this.logger = logger;
this.samlSettings = samlSettingsOptions.Value;
}
[AllowAnonymous]
[HttpGet("Logout")]
public IActionResult Logout([FromQuery] string SAMLResponse)
{
logger.LogInformation($"User logged out. Saml response: {SAMLResponse}");
return View("Logout");
}
}
Любой совет был бы очень признателен! Br />private static void LoadCertificate(Saml2Options options, CertificateSettings certSettings)
{
var store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
try
{
store.Open(OpenFlags.ReadOnly);
var certificates = store.Certificates.Find(
X509FindType.FindBySubjectName, certSettings.SubjectName, false);
if (certificates.Count > 0)
{
options.SPOptions.ServiceCertificates.Add(certificates[0]);
}
else
{
throw new InvalidOperationException("Required certificate not found.");
}
}
finally
{
store.Close();
}
}
Подробнее здесь: https://stackoverflow.com/questions/794 ... eturns-404
SustaSySys.SAML2 перенаправления в /saml2 /logout, но промежуточное программное обеспечение возвращает 404 ⇐ C#
Место общения программистов C#
1738320408
Anonymous
[b] Проблема [/b]
Я пытаюсь реализовать [b] вход и вход [/b] с использованием внешнего IDP в приложении [b] .Net 8 [/b] с SustaSysys .Saml2.aspnetCore2 (версия = 2.10.0) .
[*] [b] login отлично работает. [/b] < /li>
[b] ряд также работает [/b], но после входа в систему пользователь перенаправляется на /самл2/logout.
[b] Проблема: [/b]/saml2/logout возвращает 404 , и хотя я создал метод действия в этой конечной точке, запрос, похоже, перехвачен промежуточным программным обеспечением.
< /ul>
[b] конфигурация в startup.cs < /strong> < /p>
var saml2Options = Configuration.GetSection("Authentication:Saml2").Get();
services.AddAuthentication(options =>
{
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = Saml2Defaults.Scheme;
})
.AddCookie(CookieAuthenticationDefaults.AuthenticationScheme)
.AddSaml2(options =>
{
options.SPOptions.EntityId = new EntityId(saml2Options.EntityId);
LoadCertificate(options, saml2Options.Certificate);
options.IdentityProviders.Add(new IdentityProvider(
new EntityId(saml2Options.IdentityProvider.EntityId),
options.SPOptions)
{
MetadataLocation = saml2Options.IdentityProvider.MetadataLocation,
LoadMetadata = true
});
});
< /code>
Метод действий в журнале < /strong>
Этот метод инициирует федеративный журнал, отправляя SAML Logoutrequest. < /p>
[HttpPost]
public IActionResult ExecuteLogout()
{
var props = new AuthenticationProperties
{
RedirectUri = "/"
};
var user = HttpContext.User;
var sessionIndex = user.FindFirst(Saml2ClaimTypes.SessionIndex)?.Value;
if (!string.IsNullOrEmpty(sessionIndex))
{
props.Items.Add(Saml2ClaimTypes.SessionIndex, sessionIndex);
}
var logoutNameIdentifier = user.FindFirst(Saml2ClaimTypes.LogoutNameIdentifier)?.Value;
if (!string.IsNullOrEmpty(logoutNameIdentifier))
{
props.Items.Add(Saml2ClaimTypes.LogoutNameIdentifier, logoutNameIdentifier);
}
return SignOut(props, Saml2Defaults.Scheme);
}
попытка исправить: Создание действия [/b] для/saml2/logout
, даже если я создал явный метод контроллера для обработки/SAML2/ Выход, он никогда не вызывается .
[AllowAnonymous]
[Route("Saml2")]
public class LoggedOutController : Controller
{
private readonly ILogger logger;
private readonly Saml2Settings samlSettings;
public LoggedOutController(ILogger logger, IOptions samlSettingsOptions)
{
this.logger = logger;
this.samlSettings = samlSettingsOptions.Value;
}
[AllowAnonymous]
[HttpGet("Logout")]
public IActionResult Logout([FromQuery] string SAMLResponse)
{
logger.LogInformation($"User logged out. Saml response: {SAMLResponse}");
return View("Logout");
}
}
Любой совет был бы очень признателен! Br />private static void LoadCertificate(Saml2Options options, CertificateSettings certSettings)
{
var store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
try
{
store.Open(OpenFlags.ReadOnly);
var certificates = store.Certificates.Find(
X509FindType.FindBySubjectName, certSettings.SubjectName, false);
if (certificates.Count > 0)
{
options.SPOptions.ServiceCertificates.Add(certificates[0]);
}
else
{
throw new InvalidOperationException("Required certificate not found.");
}
}
finally
{
store.Close();
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79400622/sustainsys-saml2-redirects-to-saml2-logout-but-middleware-returns-404[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия