GenerateSAMLAssertion policy

Policy estensibile

Questa pagina si applica ad Apigee e Apigee hybrid.

Visualizza la documentazione di Apigee Edge.

Il criterio GenerateSAMLAssertion consente ai proxy API di allegare asserzioni SAML alle richieste XML in uscita. Queste asserzioni sono quindi disponibili per i servizi di backend per applicare un'ulteriore elaborazione della sicurezza per l'autenticazione e l'autorizzazione. Per saperne di più, consulta la panoramica delle norme SAML.

Queste norme sono estendibili e il loro utilizzo potrebbe avere implicazioni in termini di costi o utilizzo, a seconda della licenza Apigee. Per informazioni sui tipi di policy e sulle implicazioni di utilizzo, consulta Tipi di policy.

Esempi

<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="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>
      </Namespaces>
      <XPath>/soap:Envelope/soap:Header/wsse:Security</XPath>
    </Message>
  </OutputVariable>
  <SignatureAlgorithm />
  <Subject ref="reference">Subject name</Subject>
  <Template ignoreUnresolvedVariables="false">
    <!-- A lot of XML goes here, within CDATA, with {} around
         each variable -->
  </Template>
</GenerateSAMLAssertion>

Riferimento elemento

Questa sezione elenca gli elementi e gli attributi del criterio GenerateSAMLAssertion.

Attributi che si applicano all'elemento di primo livello

<GenerateSAMLAssertion name="SAML-A1" continueOnError="false" enabled="true" async="false">

I seguenti attributi sono comuni a tutti gli elementi principali delle policy.

Attributo Descrizione Predefinito Presenza
nome Il nome interno della policy. I caratteri che puoi utilizzare nel nome sono limitati a: A-Z0-9._\-$ %. Tuttavia, la UI di Apigee impone ulteriori limitazioni, ad esempio la rimozione automatica dei caratteri non alfanumerici.

Se vuoi, utilizza l'elemento <displayname></displayname> per etichettare la norma nell'editor proxy della UI di Apigee con un nome diverso in linguaggio naturale.

N/D Obbligatorio
abilitato Imposta true per applicare la policy.

Imposta false per "disattivare" la policy. Il criterio non verrà applicato anche se rimane collegato a un flusso.

true Facoltativo

Elementi e attributi per la generazione di asserzioni SAML

Nome campo Descrizione
Attributo ignoreContentType Un valore booleano che può essere impostato su true o false. Per impostazione predefinita, l'asserzione non verrà generata se il tipo di contenuto del messaggio non è un Content-Type XML. Se questo valore è impostato su true, il messaggio verrà trattato come XML indipendentemente dal tipo di contenuto.
Issuer
L'identificatore univoco del provider di identità. Se è presente l'attributo facoltativo ref, il valore di Emittente verrà assegnato in fase di runtime in base alla variabile specificata. Se l'attributo facoltativo ref non è presente, verrà utilizzato il valore di Emittente.
KeyStore
Il nome dell'archivio chiavi contenente la chiave privata e l'alias della chiave privata utilizzata per firmare digitalmente le asserzioni SAML.
OutputVariable
Specifica dove verrà inserita l'asserzione SAML generata. L'asserzione può essere archiviata in una variabile di flusso o inserita in un messaggio esistente.
FlowVariable
Specifica il nome della variabile di flusso in cui verranno memorizzati i contenuti dell'asserzione SAML generata. Si tratta di un'alternativa all'utilizzo dell'elemento <Message> per inserire l'asserzione in un messaggio XML esistente.
Message La destinazione della policy. I valori validi sono message, request e response. Se impostato su message, il criterio recupera in modo condizionale l'oggetto del messaggio in base al punto di collegamento del criterio. Se collegata al flusso di richiesta, la policy risolve message nella richiesta. Se collegata al flusso di risposta, la policy risolve message nella risposta.
XPath Un'espressione XPath che indica l'elemento del documento XML in uscita a cui i criteri collegheranno l'asserzione SAML.
SignatureAlgorithm SHA1 o SHA256
Subject
L'identificatore univoco del soggetto dell'asserzione SAML. Se è presente l'attributo ref facoltativo, il valore di Subject verrà assegnato in fase di runtime in base alla variabile specificata. Se l'attributo facoltativo ref non è presente, verrà utilizzato il valore di Oggetto.
Template
Se presente, l'asserzione verrà generata eseguendo questo modello, sostituendo tutto ciò che è indicato con {} con la variabile corrispondente e firmando digitalmente il risultato. Il modello viene elaborato seguendo le regole dei criteri AssignMessage. Consulta le norme AssignMessage.

Note sull'utilizzo

Elaborazione delle norme:

  1. Se il messaggio non è XML e ignoreContentType non è impostato su true, allora genera un errore.
  2. Se Template è impostato, elabora il modello come descritto per la policy AssignMessage. Se mancano variabili e ignoreUnresolvedVariables non è impostato, genera un errore.
  3. Se Template non è impostato, crea un'asserzione che includa i valori dei parametri Subject e Issuer o i relativi riferimenti.
  4. Firma l'asserzione utilizzando la chiave specificata.
  5. Aggiungi l'asserzione al messaggio nel percorso XPath specificato.

Messaggi di errore

Questa sezione descrive i codici di errore e i messaggi di errore restituiti nonché le variabili di errore impostate da Apigee quando questo criterio attiva un errore. Queste informazioni sono importanti se stai sviluppando regole di errore per gestire gli errori. Per scoprire di più, consulta Informazioni importanti sugli errori relativi alle norme e Gestione degli errori.

Errori di deployment

Questi errori possono verificarsi quando esegui il deployment di un proxy contenente questo criterio.

Nome dell'errore Causa Correggi
SourceNotConfigured Uno o più dei seguenti elementi del criterio ValidateSAMLAssertion non sono definiti o sono vuoti: <Source>, <XPath>, <Namespaces>, <Namespace>.
TrustStoreNotConfigured Se l'elemento <TrustStore> è vuoto o non specificato nel criterio ValidateSAMLAssertion, il deployment del proxy API non va a buon fine. È necessario un truststore valido.
NullKeyStoreAlias Se l'elemento figlio <Alias> è vuoto o non specificato nell'elemento <Keystore> del criterio GenerateSAMLAssertion, il deployment del proxy dell'API non va a buon fine. È necessario un alias del keystore valido.
NullKeyStore Se l'elemento figlio <Name> è vuoto o non specificato nell'elemento <Keystore> del criterio GenerateSAMLAssertion, il deployment del proxy dell'API non va a buon fine. È necessario un nome del keystore valido.
NullIssuer Se l'elemento <Issuer> è vuoto o non specificato nel criterio GenerateSAMLAssertion, il deployment del proxy API non va a buon fine. È obbligatorio un valore <Issuer> valido.

Variabili di errore

Queste variabili vengono impostate quando si verifica un errore di runtime. Per ulteriori informazioni, consulta Informazioni importanti sugli errori relativi alle norme.

Variabili Dove Esempio
fault.name="fault_name" fault_name è il nome dell'errore. Il nome dell'errore è l'ultima parte del codice dell'errore. fault.name = "InvalidMediaTpe"
GenerateSAMLAssertion.failed Per una configurazione del criterio di asserzione SAML convalidata, il prefisso dell'errore è ValidateSAMLAssertion. GenerateSAMLAssertion.failed = true

Esempio di risposta di errore

{
  "fault": {
    "faultstring": "GenerateSAMLAssertion[GenSAMLAssert]: Invalid media type",
    "detail": {
      "errorcode": "steps.saml.generate.InvalidMediaTpe"
    }
  }
}

Esempio di regola di errore

<FaultRules>
    <FaultRule name="invalid_saml_rule">
        <Step>
            <Name>invalid-saml</Name>
        </Step>
        <Condition>(GenerateSAMLAssertion.failed = "true")</Condition>
    </FaultRule>
</FaultRules>

Argomenti correlati

Estrazione delle variabili: Extract Variables policy