#c# #.net-core #entity-framework-core #saml-2.0 #itfoxtec-identity-saml2
#c# #.net-ядро #сущность-структура-ядро #saml-2.0 #itfoxtec-идентификация-saml2
Вопрос:
У меня есть проект .Net 5 Entity Framework, в который я добавил библиотеку ITfoxtec SAML 2.0.
Мне нужно иметь возможность подключиться к корпоративной сети, использующей SAML 2.0. ИТ-специалисты говорят, что мне нужно «создать утверждение SAML 2.0, чтобы указать корпоративный маршрут SAML».
Я следовал примерам кода в репозитории Git и добавил все необходимые элементы конфигурации в свой startup.cs
класс.
Также в моем AuthController.cs
я добавил следующее:
[Route("Login")] public IActionResult Login(string returnUrl = null) { var binding = new Saml2RedirectBinding(); binding.SetRelayStateQuery(new Dictionarylt;string, stringgt; { { relayStateReturnUrl, returnUrl ?? Url.Content("~/") } }); return binding.Bind(new Saml2AuthnRequest(config)).ToActionResult(); } [Route("AssertionConsumerService")] public async Tasklt;IActionResultgt; AssertionConsumerService() { var binding = new Saml2PostBinding(); var saml2AuthnResponse = new Saml2AuthnResponse(config); binding.ReadSamlResponse(Request.ToGenericHttpRequest(), saml2AuthnResponse); if (saml2AuthnResponse.Status != Saml2StatusCodes.Success) { throw new AuthenticationException($"SAML Response status: {saml2AuthnResponse.Status}"); } binding.Unbind(Request.ToGenericHttpRequest(), saml2AuthnResponse); await saml2AuthnResponse.CreateSession(HttpContext, claimsTransform: (claimsPrincipal) =gt; ClaimsTransform.Transform(claimsPrincipal)); var relayStateQuery = binding.GetRelayStateQuery(); var returnUrl = relayStateQuery.ContainsKey(relayStateReturnUrl) ? relayStateQuery[relayStateReturnUrl] : Url.Content("~/"); return Redirect(returnUrl); }
Проект строится и запускается, но я не уверен, как протестировать эту библиотеку ITfoxtec SAML 2.0.
У кого — нибудь есть какой-нибудь опыт в этом деле?
Спасибо!
Ответ №1:
Вы просто тестируете его, открыв браузер и нажав «Войти». Компонент ITfoxtec Identity SAML 2.0 вместе с вашим кодом перенаправит на ваш корпоративный IdP, и он ожидает обратной публикации через браузер.
Комментарии:
1. Спасибо! Являются ли конечные точки корпоративного IdP, как правило, просто URL-адресом контроллера? Кроме того, моему приложению .Net Core SP потребуется метод GET для подключения к конечной точке IdP и метод POST для получения ответа IdP? Еще раз спасибо!
2. Корпоративный IdP обычно поддерживает конечную точку метаданных, которая описывает конечные точки. Ваше приложение .NET Core SP отправит сообщение GET, а не получит его. Вашему приложению .NET Core SP требуется конечная точка POST для получения ответа IdP.