Owin-使用元数据文件/ URL初始化IdP

时间:2018-12-18 15:51:04

标签: sustainsys-saml2

我想使用基于Owin的SAML2身份验证,而无需“硬编码”任何数据。我有来自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 :(得分:1)

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是字典中的键,事情变得很混乱,稍后将被延迟​​初始化或更改。