но я застрял в том, что делать после удаления фильтра генератора метаданных.

ользую WSO2 и SSOCircle с расширением Spring-SAML. В настоящее время мы тестируем конфигурации и определили 2 IdP и 2 SP в нашем applicationContext. Итак, в настоящее время у нас есть 2 статически определенных IdP в нашей весенней конфигурации xml, и это работает. Для целей тестирования мы используем комбинацию CachingMetadataManager и ResourceBackedMetadataProvider, поэтому метаданные IdP встроены в наш WAR-архив. Образец:

<bean id="metadata" class="org.springframework.security.saml.metadata.CachingMetadataManager">
<constructor-arg>
  <list>
    <bean class="org.springframework.security.saml.metadata.ExtendedMetadataDelegate">
      <constructor-arg>
        <bean class="org.opensaml.saml2.metadata.provider.ResourceBackedMetadataProvider">
          <constructor-arg>
            <bean class="java.util.Timer"/>
          </constructor-arg>
          <constructor-arg>
            <bean class="org.opensaml.util.resource.ClasspathResource">
              <c,onstructor-arg value="/metadata/wso2idp_metadata.xml"/>
            </bean>
          </constructor-arg>
          <property name="parserPool" ref="parserPool"/>
        </bean>
      </constructor-arg>
      <constructor-arg>
        <bean class="org.springframework.security.saml.metadata.ExtendedMetadata">
        </bean>
      </constructor-arg>
    </bean>
    <bean class="org.springframework.security.saml.metadata.ExtendedMetadataDelegate">
      <constructor-arg>
        <bean class="org.opensaml.saml2.metadata.provider.ResourceBackedMetadataProvider">
          <constructor-arg>
            <bean class="java.util.Timer"/>
          </constructor-arg>
          <constructor-arg>
            <bean class="org.opensaml.util.resource.ClasspathResource">
              <constructor-arg value="/metadata/ssocircleidp_metadata.xml"/>
            </bean>
          </constructor-arg>
          <property name="parserPool" ref="parserPool"/>
        </bean>
      </constructor-arg>
      <constructor-arg>
        <bean class="org.springframework.security.saml.metadata.ExtendedMetadata">
        </bean>
      </constructor-arg>
    </bean>
  </list>
</constructor-arg>

Для производства мы хотим иметь возможность хранить наши метаданные IdP в базе данных (расположенной в центре). Я хочу иметь возможность добавлять, удалять и изменять метаданные без повторного развертывания WAR или перезапуска сервера (ов). Первоначально я думал, что мог бы переопределить CachingMetadataManager и определить конструктор noarg, который мог бы динамически загружать все поставщики метаданных, но это невозможно, потому что CachingMetadataManager определяет только один конструктор, который должен принимать в списке MetadataProvider. Я закончил тем, что сделал следующее:

<bean id="metadataList" class="org.arbfile.util.security.saml.DBMetadataProviderList">
  <constructor-arg ref="parserPool" />
  <constructor-arg>
    <bean class="java.util.Timer"/>
  </constructor-arg>
</bean>

<bean id="metadata" class="org.springframework.security.saml.metadata.CachingMetadataManager">
   <constructor-arg ref="metadataList" />
</bean>

Bean metadataList может быть определен просто как:

public final class DBMetadataProviderList extends ArrayList<MetadataProvider>
{
  private final static Logger log = LoggerFactory.getLogger(DBMetadataProviderList.class);
  private ParserPool parser;

  public DBMetadataProviderList(ParserPool _parser, Timer _timer) throws MetadataProviderException
  {
    this.parser = _parser;
// Lookup metadata from DB
  }

}

Это позволяет мне динамически читать метаданные IdP. Моя логика падает, когда дело доходит до обновления хотя. я нашелэтот пост на весеннем форумеОднако ему от 3 до 4 лет. Каков наилучший способ динамически читать, добавлять и обновлять метаданные IdP, кэшировать их и обновлять кэш через некоторый интервал? В моем случае 1 строка в таблице БД будет соответствовать одному определению метаданных IdP.

Ответы на вопрос(1)

Ваш ответ на вопрос