このページは Apigee と Apigee ハイブリッドに適用されます。
Apigee Edge のドキュメントを表示する
GenerateSAMLAssertion ポリシーを使用すると、API プロキシで SAML アサーションを送信 XML リクエストに追加できます。これらのアサーションは、バックエンド サービスが認証と認可用の追加のセキュリティ処理を適用するために使用できます。詳細については、SAML ポリシーの概要をご覧ください。
このポリシーは拡張可能なポリシーであり、Apigee ライセンスによっては、このポリシーの使用によって費用や使用量に影響する場合があります。ポリシータイプと使用量への影響については、ポリシータイプをご覧ください。
サンプル
<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>
要素リファレンス
このセクションでは、GenerateSAMLAssertion ポリシーの要素と属性について説明します。
最上位の要素に適用される属性
<GenerateSAMLAssertion name="SAML-A1" continueOnError="false" enabled="true" async="false">
次の属性は、すべてのポリシーの親要素に共通です。
| 属性 | 説明 | デフォルト | 要否 |
|---|---|---|---|
| name |
ポリシーの内部名。名前に使用できる文字は A-Z0-9._\-$ % のみです。ただし、Apigee UI には追加の制限があり、たとえば、英数字以外の文字は自動的に削除されます。必要に応じて、 |
なし | 必須 |
| 有効 |
ポリシーを適用するには、true に設定します。ポリシーを「turn off」するには、 |
true | 省略可 |
SAML アサーション生成の要素と属性
| フィールド名 | 説明 | ||
|---|---|---|---|
ignoreContentType 属性 |
true または false に設定できるブール値。デフォルトでは、メッセージのコンテンツ タイプが XML Content-Type でない場合、アサーションは生成されません。これが true に設定されている場合、メッセージはコンテンツ タイプに関係なく XML として扱われます。 |
||
Issuer |
ID プロバイダの固有識別子。オプションの
ref 属性が存在する場合は、指定された変数に基づいて発行者の値がランタイムに割り当てられます。オプションの ref 属性が存在しない場合は、発行者の値が使用されます。 |
||
KeyStore |
SAML アサーションのデジタル署名に使用する秘密鍵とそのエイリアスを含む KeyStore の名前。
|
||
OutputVariable |
生成された SAML アサーションの配置場所を指定します。アサーションは、フロー変数に保存するか、既存のメッセージに挿入できます。
|
||
FlowVariable |
生成された SAML アサーション コンテンツが格納されるフロー変数の名前を指定します。これは、
<Message> 要素を使用してアサーションを既存の XML メッセージに挿入する方法の代替策です。 |
||
Message |
ポリシーのターゲット。有効な値は message、request、response です。message に設定すると、ポリシーはポリシーの接続ポイントに基づいて条件付きでメッセージ オブジェクトを取得します。リクエスト フローに接続すると、ポリシーは message をリクエストに解決し、レスポンス フローに接続すると、message をレスポンスに解決します。 |
||
XPath |
ポリシーが SAML アサーションを追加するアウトバウンド XML ドキュメントの要素を表す XPath 式。 | ||
SignatureAlgorithm |
SHA1 または SHA256 | ||
Subject |
SAML アサーションのサブジェクトの固有識別子。オプションの
ref 属性が存在する場合、Subject の値は指定された変数に基づいてランタイムに割り当てられます。オプションの ref 属性が存在しない場合は、Subject の値が使用されます。 |
||
Template |
存在する場合は、このテンプレートを実行し、
{} で示されるすべてを対応する変数に置き換えて、結果にデジタル署名して、アサーションを生成します。テンプレートは AssignMessage ポリシールールの後に処理されます。AssignMessage ポリシーをご覧ください。 |
||
使用上の注意
ポリシーの処理:
- メッセージが XML ではなく、
ignoreContentTypeがtrueに設定されていない場合、障害が発生します。 Templateが設定されている場合は、AssignMessage ポリシーの説明にあるように、テンプレートを処理します。変数が指定されず、ignoreUnresolvedVariablesも設定されていない場合は、エラーが生成されます。Templateが設定されていない場合には、Subject と Issuer パラメータの値または参照を含むアサーションを生成します。- 指定されたキーを使用して、アサーションに署名します。
- 指定された XPath でアサーションをメッセージに追加します。
エラー リファレンス
このセクションでは、このポリシーによってエラーがトリガーされたときに返される障害コードとエラー メッセージ、Apigee によって設定される障害変数について説明します。これは、障害に対処する障害ルールを作成するうえで重要な情報です。詳細については、ポリシーエラーについて知っておくべきことと障害の処理をご覧ください。
デプロイエラー
以下のエラーは、このポリシーを含むプロキシをデプロイするときに発生することがあります。
| エラー名 | 原因 | 修正 |
|---|---|---|
SourceNotConfigured |
ValidateSAMLAssertion ポリシーの <Source>、<XPath>、<Namespaces>、<Namespace> 要素のうち、1 つ以上が定義されていないか、空白になっています。 |
build |
TrustStoreNotConfigured |
<TrustStore> 要素が空か、ValidateSAMLAssertion ポリシーで指定されていない場合、API プロキシのデプロイが失敗します。有効なトラストストアが必要です。 |
build |
NullKeyStoreAlias |
子要素 <Alias> が空か、GenerateSAMLAssertion ポリシーの <Keystore> 要素で指定されていない場合、API プロキシのデプロイが失敗します。有効なキーストア エイリアスが必要です。 |
build |
NullKeyStore |
子要素 <Name> が空か、GenerateSAMLAssertion ポリシーの <Keystore> 要素で指定されていない場合、API プロキシのデプロイが失敗します。有効なキーストア名が必要です。 |
build |
NullIssuer |
<Issuer> 要素が空か、GenerateSAMLAssertion ポリシーで指定されていない場合、API プロキシのデプロイが失敗します。有効な <Issuer> の値が必要です。 |
build |
障害変数
ランタイム エラーが発生すると、次の変数が設定されます。詳細については、ポリシーエラーについて知っておくべきことをご覧ください。
| 変数 | 説明 | 例 |
|---|---|---|
fault.name="fault_name" |
fault_name は障害の名前です。障害名は、障害コードの最後の部分です。 | fault.name = "InvalidMediaTpe" |
GenerateSAMLAssertion.failed |
検証 SAML assertion ポリシー構成の場合、エラーの接頭辞は ValidateSAMLAssertion になります。 |
GenerateSAMLAssertion.failed = true |
エラー レスポンスの例
{ "fault": { "faultstring": "GenerateSAMLAssertion[GenSAMLAssert]: Invalid media type", "detail": { "errorcode": "steps.saml.generate.InvalidMediaTpe" } } }
障害ルールの例
<FaultRules>
<FaultRule name="invalid_saml_rule">
<Step>
<Name>invalid-saml</Name>
</Step>
<Condition>(GenerateSAMLAssertion.failed = "true")</Condition>
</FaultRule>
</FaultRules>関連トピック
変数の抽出: Extract Variables ポリシー