SAML Assertion ポリシーのデプロイエラーのトラブルシューティング

現在、ApigeeApigee ハイブリッドのドキュメントを表示しています。
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> 要素のうち 1 つ以上が定義されていない場合、または空の場合、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 ポリシーの例を修正するには、<Namespace> 要素と <XPath> を追加します。

<?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 のデプロイエラー。

原因

ValidateSAMLAssertion ポリシーで <TrustStore> 要素が空であるか、指定されていない場合、API プロキシのデプロイが失敗します。有効なトラストストアが必要です。

診断

  1. エラーが発生した特定の API プロキシで、すべての Validate SAML Assertion ポリシーを調べます。いずれかの Validate SAML Assertion ポリシーで、<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>
        <Description/>
        <TrustStore/>
      <RemoveAssertion>false</RemoveAssertion>
    </ValidateSAMLAssertion>
    

解決策

SAMLAssertion ポリシー内で要素 <TrustStore> が必ず指定されていて、空でないことを確認します。<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

エラー メッセージ

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 のデプロイエラー。

原因

GenerateSAMLAssertion ポリシーの <Keystore> 要素で子要素 <Name> が空であるか、指定されていない場合、API プロキシのデプロイが失敗します。有効なキーストア名が必要です。

診断

  1. エラーが発生した特定の API プロキシで、すべての GenerateSAMLAssertion ポリシーを調べます。いずれかの GenerateSAMLAssertion ポリシーの <Keystore> 要素で、子要素 <Name> が空であるか指定されていない場合は、これがエラーの原因です。

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

解決策

GenerateSAMLAssertion ポリシーの <Keystore> 要素内で子要素 <Name> が必ず指定されていて、空でないことを確認します。

上の例を修正するには、<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 のデプロイエラー。

原因

GenerateSAMLAssertion ポリシーの <Keystore> 要素で子要素 <Alias> が空であるか、指定されていない場合、API プロキシのデプロイが失敗します。有効なキーストア エイリアスが必要です。

診断

  1. エラーが発生した特定の API プロキシで、すべての GenerateSAMLAssertion ポリシーを調べます。いずれかの GenerateSAMLAssertion ポリシーの <Keystore> 要素で、子要素 <Alias> が空であるか指定されていない場合は、これがエラーの原因です。

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

解決策

GenerateSAMLAssertion ポリシーの <Keystore> 要素内で子要素 <Name> が必ず指定されていて、空でないことを確認します。

上の例を修正するには、<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 のデプロイエラー。

原因

GenerateSAMLAssertion ポリシーで <Issuer> 要素が空であるか、指定されていない場合、API プロキシのデプロイが失敗します。有効な <Issuer> の値が必要です。

診断

  1. エラーが発生した特定の API プロキシで、すべての GenerateSAMLAssertion ポリシーを調べます。いずれかの GenerateSAMLAssertion ポリシーで、<Issuer> 要素が空であるか指定されていない場合は、これがエラーの原因です。

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

解決策

GenerateSAMLAssertion ポリシー内で <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 ポリシーの例をご覧ください。