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

<ph type="x-smartling-placeholder"></ph> 현재 Apigee Edge 문서를 보고 있습니다.
Apigee X 문서.
정보

SourceNotConfigured

오류 메시지

Edge UI 또는 Edge 관리를 통해 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.

오류 스크린샷 예시

원인

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

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

진단

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

    ValidateSAMLAssertion[Validate-SAML-Assertion-1]: Source is not correctly configured.
    
  2. 실패한 SAML 어설션 유효성 검사 정책 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> 요소가 정의되었고 비어 있지 않은지 확인해야 합니다.

위에 표시된 SAML 어설션 유효성 검사 정책의 예를 수정하려면 <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

오류 메시지

Edge UI 또는 Edge 관리를 통해 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.

오류 스크린샷 예시

원인

<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>
    

해결 방법

SAML 어설션 유효성 검사 정책 내에서 <TrustStore> 요소가 항상 지정되고 비어 있지 않은지 확인합니다. <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

오류 메시지

Edge UI 또는 Edge를 통해 API 프록시 배포 Management 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.

오류 스크린샷 예시

원인

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

진단

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

    다음 SAML 어설션 생성 정책에는 <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>가 항상 지정되어 있고 SAML 어설션 생성 정책의 <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

오류 메시지

Edge UI 또는 Edge 관리를 통해 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.

오류 스크린샷 예시

원인

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

진단

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

    다음 SAML 어설션 생성 정책에는 <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>가 항상 지정되고 비어 있지 않은지 확인합니다. Generate SAML Assertion 정책의 <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

오류 메시지

Edge UI 또는 Edge 관리를 통해 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.

오류 스크린샷 예시

원인

<Issuer> 요소가 비어 있거나 SAML 어설션 생성 정책에 지정되지 않은 경우 API 프록시의 배포가 실패합니다. 유효한 <Issuer> 값은 필수 항목입니다.

진단

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

    다음 SAML 어설션 생성 정책에 빈 <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>
    

해결 방법

SAML 어설션 생성 정책에서 <Issuer> 요소가 항상 지정되었고 비어 있지 않은지 확인합니다.

위의 예시를 수정하려면 <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 정책 참조 문서의 코드 샘플에서 예시를 참조하세요.