Я пытаюсь настроить клиент, инициированный IDP, и наше приложение использует Sustainsys framework для всех настроек SAML в нашем IdentityServer3. Я использую эту статью в качестве справки Idp, инициированный с помощью Sustainsys
Здесь есть несколько фрагментов кода того, как работает моя текущая реализация:
var samlIdp = new Sustainsys.Saml2.IdentityProvider(new EntityId("https://<Client's IDP>"), saml2Options())
{
MetadataLocation = "https://<client metadata>",
LoadMetadata = true,
AllowUnsolicitedAuthnResponse = true
};
private Saml2AuthenticationOptions saml2Options()
{
// My clientId is for example if I'm setting up Okta, then ClientId = okta
var spOptions = new SPOptions
{
ModulePath = "/<ClientId>",
EntityId = new EntityId("https://<My identity app>/<Client Id>"),
ReturnUrl = new Uri("https://<my Identity app>/idpinitiated?idp=<ClientId>")
};
return new Saml2AuthenticationOptions(false)
{
SPOptions = spOptions,
AuthenticationType = "<ClientId>",
Caption = "<ClientId>"
};
}
У меня проблемы:
Я очень-очень новичок в этом, поэтому любая помощь будет очень оценена. Спасибо
IdentityServer3, не поддерживает инициацию IDP. Существует обходной путь для поддержки Idsrv3, который можно выполнить, обрабатывая событие AcsCommandResultCreated
(используя платформу Sustainsys saml)
private void AcsCommandResultCreated(CommandResult commandResult, Saml2Response saml2Response)
{
var httpContext = _httpContextAccessor.HttpContext;
var target = httpContext.Request.Query["target"].SingleOrDefault();
if (!string.IsNullOrEmpty(target))
{
// Avoid an open redirect. Note that on a shared host with multiple applications running
// in different subdirectories this check is not enough.
var targetUri = new Uri(target, UriKind.Relative);
// A protocol relative url is relative, but can still redirect to another host. Block it.
if (target.StartsWith("//"))
{
throw new InvalidOperationException("Protocol relative URLs are not allowed.");
}
commandResult.Location = targetUri;
}
}
Полный образец: https://github.com/Sustainsys/AspNetcoreIdpInitiated