Owin - инициализация IdP с использованием файла метаданных / URL - PullRequest
0 голосов
/ 18 декабря 2018

Я хочу использовать аутентификацию SAML2 на основе Owin без «жесткого кодирования» каких-либо данных.У меня есть файл метаданных от владельца IdP.Есть ли способ, как просто загрузить этот файл (или указать URL-адрес с метаданными) и позволить провайдеру инициализировать себя?

public void ConfigureAuth(IAppBuilder app)
{
    ...

    app.UseSaml2Authentication(CreateSaml2Options());
}


private static Saml2AuthenticationOptions CreateSaml2Options()
{
    var spOptions = CreateSpOptions();
    var saml2Options = new Saml2AuthenticationOptions(false)
    {
        SPOptions = spOptions
    };

    var idp = new IdentityProvider(new EntityId("XXXXXXXXX"), spOptions)
    {
        AllowUnsolicitedAuthnResponse = true,
        Binding = Saml2BindingType.HttpPost,
        SingleSignOnServiceUrl = new Uri("XXXXXXXXX")
    };

    saml2Options.IdentityProviders.Add(idp);

    return saml2Options;
}

Как получить значения XXXXXXXXX из метаданных?

1 Ответ

0 голосов
/ 18 декабря 2018

XXX - это EntityId, он указан в верхней части метаданных.Рассмотрим, например, этот отрывок метаданных из stubidp.sustainsys.com:

<EntityDescriptor xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion"
xmlns="urn:oasis:names:tc:SAML:2.0:metadata"
ID="_a1f8bba0-9d9f-4107-bbed-b61cd3d9c67f" 
entityID="https://stubidp.sustainsys.com/Metadata" cacheDuration="PT15M"
validUntil="2018-12-19T18:51:08Z">
  <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
    <SignedInfo>
       <CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>

Требуемое значение XXX - это атрибут entityID.В этом случае это https://stubidp.sustainsys.com/Metadata.

В текущей версии библиотеки, к сожалению, невозможно получить EntityID из метаданных.Я планирую исправить это в будущей версии, но это требует много работы.Причина в том, что EntityID является ключом в словаре, и все может стать очень запутанным, он будет лениво инициализирован или изменен позже.

...