SAML 어설션 정책 배포 오류 문제 해결

ApigeeApigee Hybrid 문서입니다.
Apigee Edge 문서 보기

SourceNotConfigured

오류 메시지

다음 오류 메시지와 함께 Apigee UI 또는 Apigee API를 통한 API 프록시의 배포가 실패합니다.

Error Deploying Revision revision_number to environment
ValidateSAMLAssertion[policy_name]: Source is not correctly configured.

오류 메시지 예시

Error Deploying Revision 2 to test
ValidateSAMLAssertion[Validate-SAML-Assertion-1]: Source is not correctly configured.

오류 스크린샷 예시

테스트할 버전 2를 배포하는 중에 오류가 발생했습니다.

원인

ValidateSAMLAssertion 정책의 <Source>, <XPath>, <Namespaces>, <Namespace> 요소 중 하나 이상이 정의되지 않았거나 비어있는 경우 API 프록시 배포가 실패합니다.

예를 들어 <XPath> 요소를 누락하거나 <Source> 요소 또는 해당 항목을 비워 두면 API 프록시 배포가 실패합니다.

진단

  1. 오류 메시지에서 실패한 ValidateSAMLAssertion 정책 이름을 확인합니다. 예를 들어 다음 오류에서 ValidateSAMLAssertion 정책 이름은 Validate-SAML-Assertion-1입니다.

    ValidateSAMLAssertion[Validate-SAML-Assertion-1]: Source is not correctly configured.
    
  2. 실패한 ValidateSAMLAssertion 정책 XML을 검사합니다. 정책에서 <Source>, <XPath>, <Namespaces>, <Namespace> 요소 중 하나 이상이 누락되거나 비어 있는지 확인합니다. 누락되거나 비어 있는 경우 이것이 오류 원인일 수 있습니다.

    예를 들어 다음 정책의 <Source> 요소 아래에는 빈 <Namespaces> 요소가 있습니다.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ValidateSAMLAssertion name="SAML" ignoreContentType="false">
      <Source name="request">
        <Namespaces></Namespaces>
       </Source>
       <Description/>
     <TrustStore>ref://TrustStoreName</Truststore>
     <RemoveAssertion>false</RemoveAssertion>
    </ValidateSAMLAssertion>
    
  3. 위 예에서는 <Namespaces> 요소가 비어 있으므로 다음 오류가 발생합니다.

    ValidateSAMLAssertion[Validate-SAML-Assertion-1]: Source is not correctly configured.
    

해결 방법

<Source> 요소의 값이 <Namespaces> 요소 및 하위 요소 <Namespace>로 올바르게 구성되었는지 확인합니다. 또한 <XPath> 요소가 정의되었고 비어 있지 않은지 확인해야 합니다.

위에 표시된 ValidateSAMLAssertion 정책 예시를 수정하려면 <XPath><Namespace> 요소를 추가하면 됩니다.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ValidateSAMLAssertion name="SAML" ignoreContentType="false">
  <Source name="request">
    <Namespaces>
      <Namespace prefix='soap'>http://schemas.xmlsoap.org/soap/envelope/</Namespace>
      <Namespace prefix='wsse'>http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd</Namespace>
      <Namespace prefix='saml'>urn:oasis:names:tc:SAML:2.0:assertion</Namespace>
    </Namespaces>
    <XPath>/soap:Envelope/soap:Header/wsse:Security/saml:Assertion</XPath>
  </Source>
   <Description/>
<TrustStore>ref://TrustStoreName</Truststore>
<RemoveAssertion>false</RemoveAssertion>
</ValidateSAMLAssertion>

TrustStoreNotConfigured

오류 메시지

다음 오류 메시지와 함께 Apigee UI 또는 Apigee API를 통한 API 프록시의 배포가 실패합니다.

Error Deploying Revision revision_number to environment
ValidateSAMLAssertion[[Ljava.lang.Object;@object]: Trust store is not correctly configured.

오류 메시지 예시

Error Deploying Revision 2 to test
ValidateSAMLAssertion[[Ljava.lang.Object;@39537262]: Trust store is not correctly configured.

오류 스크린샷 예시

테스트할 버전 2를 배포하는 중에 오류가 발생했습니다.

원인

<TrustStore> 요소가 비어 있거나 ValidateSAMLAssertion 정책에 지정되지 않으면 API 프록시 배포가 실패합니다. 유효한 트러스트 저장소가 필요합니다.

진단

  1. 오류가 발생한 특정 API 프록시의 모든 SAML 어설션 유효성 검사 정책을 검사합니다. <TrustStore> 요소가 비어 있거나 지정되지 않은 SAML 어설션 유효성 검사 정책이 있는 경우 이것이 오류의 원인입니다.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ValidateSAMLAssertion name="SAML" ignoreContentType="false">
     <Source name="request">
        <Namespaces>
          <Namespace prefix='soap'>http://schemas.xmlsoap.org/soap/envelope/</Namespace>
          <Namespace prefix='wsse'>http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd</Namespace>
          <Namespace prefix='saml'>urn:oasis:names:tc:SAML:2.0:assertion</Namespace>
        </Namespaces>
        <XPath>/soap:Envelope/soap:Header/wsse:Security/saml:Assertion</XPath>
      </Source>
        <Description/>
        <TrustStore/>
      <RemoveAssertion>false</RemoveAssertion>
    </ValidateSAMLAssertion>
    

해결 방법

<TrustStore> 요소가 SAMLAssertion 정책 내에 항상 지정되어 있고 비어 있지 않은지 확인합니다. <TrustStore> 이름은 프록시를 배포하려는 모든 환경에 있는 유효한 트러스트 저장소의 이름과 일치해야 합니다.

위의 예시를 수정하려면 <TrustStore> 요소를 유효한 값으로 지정하면 됩니다.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ValidateSAMLAssertion name="SAML" ignoreContentType="false">
  <Source name="request">
    <Namespaces>
      <Namespace prefix='soap'>http://schemas.xmlsoap.org/soap/envelope/</Namespace>
      <Namespace prefix='wsse'>http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd</Namespace>
      <Namespace prefix='saml'>urn:oasis:names:tc:SAML:2.0:assertion</Namespace>
    </Namespaces>
    <XPath>/soap:Envelope/soap:Header/wsse:Security/saml:Assertion</XPath>
  </Source>
  <TrustStore>TrustStoreName</TrustStore>
  <RemoveAssertion>false</RemoveAssertion>
</ValidateSAMLAssertion>

NullKeyStore

오류 메시지

다음 오류 메시지와 함께 Apigee UI 또는 API를 통한 API 프록시의 배포가 실패합니다.

Error Deploying Revision revision_number to environment
Assertion KeyStore name cannot be null.

오류 메시지 예시

Error Deploying Revision 4 to test
Assertion KeyStore name cannot be null.

오류 스크린샷 예시

테스트할 버전 4를 배포하는 중에 오류가 발생했습니다.

원인

하위 요소 <Name>이 비어 있거나 GenerateSAMLAssertion 정책의 <Keystore> 요소에 지정되지 않은 경우 API 프록시 배포가 실패합니다. 유효한 키 저장소 이름은 필수 항목입니다.

진단

  1. 오류가 발생한 특정 API 프록시의 모든 GenerateSAMLAssertion 정책을 검사합니다. 하위 요소 <Name>이 비어 있거나 <Keystore> 요소에 지정되지 않은 GenerateSAMLAssertion 정책이 있는 경우 이는 오류의 원인이 됩니다.

    다음 GenerateSAMLAssertion 정책에는 <Keystore> 요소의 빈 하위 요소 <Name>이 있습니다.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <GenerateSAMLAssertion name="SAML" ignoreContentType="false">`
      <CanonicalizationAlgorithm />
      <Issuer ref="reference">Issuer name</Issuer>
      <KeyStore>
        <Name></Name>
        <Alias ref="reference">alias</Alias>
      </KeyStore>
      <OutputVariable>
        <FlowVariable>assertion.content</FlowVariable>
        <Message name="request">
          <Namespaces>
            <Namespace prefix="test">http://www.example.com/test</Namespace>
          </Namespaces>
          <XPath>/envelope/header</XPath>
        </Message>
      </OutputVariable>
      <SignatureAlgorithm />
      <Subject ref="reference">Subject name</Subject>
      <Template ignoreUnresolvedVariables="false">
        <!-- A lot of XML goes here, in CDATA, with {} around
             each variable -->
      </Template>
    </GenerateSAMLAssertion>
    

해결 방법

하위 요소 <Name>GenerateSAMLAssertion 정책의 <Keystore> 요소 내에 항상 지정되어 있고 비어 있지 않은지 확인합니다.

위의 예시를 수정하려면 <Name> 요소를 올바르게 지정하고 유효한 값이 <Alias> 요소에 지정되어 있는지 확인하면 됩니다.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<GenerateSAMLAssertion name="SAML" ignoreContentType="false">
  <CanonicalizationAlgorithm />
  <Issuer ref="reference">Issuer name</Issuer>
  <KeyStore>
    <Name ref="reference">keystorename</Name>
    <Alias ref="reference">alias</Alias>
  </KeyStore>
  <OutputVariable>
    <FlowVariable>assertion.content</FlowVariable>
    <Message name="request">
      <Namespaces>
        <Namespace prefix="test">http://www.example.com/test</Namespace>
      </Namespaces>
      <XPath>/envelope/header</XPath>
    </Message>
  </OutputVariable>
  <SignatureAlgorithm />
  <Subject ref="reference">Subject name</Subject>
  <Template ignoreUnresolvedVariables="false">
    <!-- A lot of XML goes here, in CDATA, with {} around
         each variable -->
  </Template>
</GenerateSAMLAssertion>

SAMLAssertion 정책의 예시를 참조하세요.

NullKeyStoreAlias

오류 메시지

다음 오류 메시지와 함께 Apigee UI 또는 Apigee API를 통한 API 프록시의 배포가 실패합니다.

Error Deploying Revision revision_number to environment
Assertion KeyStore alias cannot be null.

오류 메시지 예시

Error Deploying Revision 4 to test
Assertion KeyStore alias cannot be null.

오류 스크린샷 예시

테스트할 버전 4를 배포하는 중에 오류가 발생했습니다.

원인

하위 요소 <Alias>이 비어 있거나 GenerateSAMLAssertion 정책의 <Keystore> 요소에 지정되지 않은 경우 API 프록시 배포가 실패합니다. 유효한 키 저장소 별칭은 필수 항목입니다.

진단

  1. 오류가 발생한 특정 API 프록시의 모든 GenerateSAMLAssertion 정책을 검사합니다. 하위 요소 <Alias>이 비어 있거나 <Keystore> 요소에 지정되지 않은 GenerateSAMLAssertion 정책이 있는 경우 이는 오류의 원인이 됩니다.

    다음 GenerateSAMLAssertion에는 <Keystore> 요소의 빈 하위 요소 <Alias>가 있습니다.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <GenerateSAMLAssertion name="SAML" ignoreContentType="false">`
      <CanonicalizationAlgorithm />
      <Issuer ref="reference">Issuer name</Issuer>
      <KeyStore>
        <Name ref="reference">keystorename</Name>
        <Alias></Alias>
      </KeyStore>
      <OutputVariable>
        <FlowVariable>assertion.content</FlowVariable>
        <Message name="request">
          <Namespaces>
            <Namespace prefix="test">http://www.example.com/test</Namespace>
          </Namespaces>
          <XPath>/envelope/header</XPath>
        </Message>
      </OutputVariable>
      <SignatureAlgorithm />
      <Subject ref="reference">Subject name</Subject>
      <Template ignoreUnresolvedVariables="false">
        <!-- A lot of XML goes here, in CDATA, with {} around
             each variable -->
      </Template>
    </GenerateSAMLAssertion>
    

해결 방법

하위 요소 <Name>GenerateSAMLAssertion 정책의 <Keystore> 요소 내에 항상 지정되어 있고 비어 있지 않은지 확인합니다.

위의 예시를 수정하려면 <Alias> 요소를 올바르게 지정하고 유효한 값이 <Name> 요소에 지정되어 있는지 확인하면 됩니다.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<GenerateSAMLAssertion name="SAML" ignoreContentType="false">
  <CanonicalizationAlgorithm />
  <Issuer ref="reference">Issuer name</Issuer>
  <KeyStore>
    <Name ref="reference">keystorename</Name>
    <Alias ref="reference">alias</Alias>
  </KeyStore>
  <OutputVariable>
    <FlowVariable>assertion.content</FlowVariable>
    <Message name="request">
      <Namespaces>
        <Namespace prefix="test">http://www.example.com/test</Namespace>
      </Namespaces>
      <XPath>/envelope/header</XPath>
    </Message>
  </OutputVariable>
  <SignatureAlgorithm />
  <Subject ref="reference">Subject name</Subject>
  <Template ignoreUnresolvedVariables="false">
    <!-- A lot of XML goes here, in CDATA, with {} around
         each variable -->
  </Template>
</GenerateSAMLAssertion>

SAMLAssertion 정책의 예시를 참조하세요.

NullIssuer

오류 메시지

다음 오류 메시지와 함께 Apigee UI 또는 Apigee API를 통한 API 프록시의 배포가 실패합니다.

Error Deploying Revision revision_number to environment
Assertion Issuer cannot be null.

오류 메시지 예시

Error Deploying Revision 4 to test
Assertion Issuer cannot be null.

오류 스크린샷 예시

테스트할 버전 4를 배포하는 중에 오류가 발생했습니다.

원인

<Issuer> 요소가 비어 있거나 GenerateSAMLAssertion 정책에 지정되지 않으면 API 프록시 배포가 실패합니다. 유효한 <Issuer> 값은 필수 항목입니다.

진단

  1. 오류가 발생한 특정 API 프록시의 모든 GenerateSAMLAssertion 정책을 검사합니다. <Issuer> 요소가 비어 있거나 지정되지 않은 GenerateSAMLAssertion 정책이 있는 경우 이는 오류의 원인이 됩니다.

    다음 GenerateSAMLAssertion 정책에는 빈 <Issuer> 요소가 있습니다.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <GenerateSAMLAssertion name="SAML" ignoreContentType="false">`
      <CanonicalizationAlgorithm />
      <Issuer></Issuer>
      <KeyStore>
        <Name ref="reference">keystorename</Name>
        <Alias ref="reference">alias</Alias>
      </KeyStore>
      <OutputVariable>
        <FlowVariable>assertion.content</FlowVariable>
        <Message name="request">
          <Namespaces>
            <Namespace prefix="test">http://www.example.com/test</Namespace>
          </Namespaces>
          <XPath>/envelope/header</XPath>
        </Message>
      </OutputVariable>
      <SignatureAlgorithm />
      <Subject ref="reference">Subject name</Subject>
      <Template ignoreUnresolvedVariables="false">
        <!-- A lot of XML goes here, in CDATA, with {} around
             each variable -->
      </Template>
    </GenerateSAMLAssertion>
    

해결 방법

<Issuer> 요소가 GenerateSAMLAssertion 정책에 항상 지정되어 있고 비어 있지 않은지 확인합니다.

위의 예시를 수정하려면 <Issuer> 요소를 올바르게 지정합니다.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<GenerateSAMLAssertion name="SAML" ignoreContentType="false">
  <CanonicalizationAlgorithm />
  <Issuer ref="reference">Issuer name</Issuer>
  <KeyStore>
    <Name ref="reference">keystorename</Name>
    <Alias ref="reference">alias</Alias>
  </KeyStore>
  <OutputVariable>
    <FlowVariable>assertion.content</FlowVariable>
    <Message name="request">
      <Namespaces>
        <Namespace prefix="test">http://www.example.com/test</Namespace>
      </Namespaces>
      <XPath>/envelope/header</XPath>
    </Message>
  </OutputVariable>
  <SignatureAlgorithm />
  <Subject ref="reference">Subject name</Subject>
  <Template ignoreUnresolvedVariables="false">
    <!-- A lot of XML goes here, in CDATA, with {} around
         each variable -->
  </Template>
</GenerateSAMLAssertion>

SAMLAssertion 정책의 예시를 참조하세요.