Spring SecuritySAMLを使用してSAMLリクエストにリクエストパラメータを追加します

ErlendGaråsen

ログインページに正しい言語を表示させるために、SAMLリクエストにリクエストパラメータ(例:locale = en)を追加する必要があります。それ、どうやったら出来るの?

beginメソッド(SamlEntryPoint)の引数として送信されたHttpServletRequestに属性を追加しようとしましたが、機能していないようです。

助言がありますか?

ウラジミールシェーファー

SAMLは、認証要求で送信されるコンテンツを拡張するための標準メカニズム(Extensions要素)を提供します。

これを使用するには、送信するデータと形式についてIDPと調整する必要があります。Spring SAMLWebSSOProfileImplでは、次のようにクラスを拡張することでコンテンツをカスタマイズできます

package com.v7security.saml;

import org.opensaml.common.SAMLException;
import org.opensaml.saml2.common.Extensions;
import org.opensaml.saml2.common.impl.ExtensionsBuilder;
import org.opensaml.saml2.core.AuthnRequest;
import org.opensaml.saml2.metadata.AssertionConsumerService;
import org.opensaml.saml2.metadata.SingleSignOnService;
import org.opensaml.saml2.metadata.provider.MetadataProviderException;
import org.opensaml.xml.schema.XSAny;
import org.opensaml.xml.schema.impl.XSAnyBuilder;
import org.springframework.security.saml.context.SAMLMessageContext;
import org.springframework.security.saml.websso.WebSSOProfileImpl;
import org.springframework.security.saml.websso.WebSSOProfileOptions;

/**
 * Class adds additional extensions element to the AuthnRequest sent to IDP.
 */
public class WebSSOProfile extends WebSSOProfileImpl {

    @Override
    protected AuthnRequest getAuthnRequest(SAMLMessageContext context, WebSSOProfileOptions options, AssertionConsumerService assertionConsumer, SingleSignOnService bindingService) throws SAMLException, MetadataProviderException {
        AuthnRequest authnRequest = super.getAuthnRequest(context, options, assertionConsumer, bindingService);
        authnRequest.setExtensions(buildExtensions());
        return authnRequest;
    }

    protected Extensions buildExtensions() {

        XSAny languageClass = new XSAnyBuilder().buildObject("http://www.v7security.com/schema/2015/04/request", "RequestLanguage", "req");
        languageClass.setTextContent("urn:v7security:request:lang:english");

        Extensions extensions = new ExtensionsBuilder().buildObject();
        extensions.getUnknownXMLObjects().add(languageClass);
        return extensions;

    }

}

もう1つのオプションはrelayState、でデータを送信することです。これは、SPがIDPに送信できる情報の一部であり、データが返送されることを期待できます(通常はSPの状態)。値はIDPに対して不透明であると想定されていますが、もちろん、たとえば意図した方法で処理することもできます。リレー状態の設定の詳細については、マニュアルのSP初期化SSOの章を参照してください

HttpRequestオブジェクトにリクエストパラメータを設定しても結果が得られることは期待されていません。SpringSAMLはこれらを自動的に伝達しません。

クラスHTTPRedirectDeflateEncoder拡張してメソッドをオーバーライドすることにより、HTTPリダイレクトバインディングで送信されたリクエストにHTTPパラメータを追加することができますbuildRedirectURL次に、次の方法で、新しいクラスをのコンストラクターに指定しHTTPRedirectDeflateBinding、のBeanredirectBinding置き換えることができsecurityContext.xmlます。

<bean id="redirectBinding" class="org.springframework.security.saml.processor.HTTPRedirectDeflateBinding">
    <constructor-arg>
        <bean class="org.opensaml.saml2.binding.decoding.HTTPRedirectDeflateDecoder">
            <constructor-arg name="pool" ref="parserPool"/>
        </bean>
    </constructor-arg>
    <constructor-arg>
        <bean class="com.custom.HTTPRedirectDeflateEncoder"/>
    </constructor-arg>
</bean>

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Spring Cloud Netflix:RequestInterceptorを介してホストリクエストパラメーターをFeignClientに渡す

分類Dev

Spring Bootを使用して静的HTMLページにリクエストパラメータを追加するにはどうすればよいですか?

分類Dev

Spring RestTemplateGETリクエストは空のクエリパラメータを削除します

分類Dev

Spring RestTemplateGETリクエストは空のクエリパラメータを削除します

分類Dev

Spring-MVCで複数のパラメーターを使用してリクエストを処理する方法

分類Dev

APIリクエストで追加のヘッダーパラメーターを使用してOauth 2.0認証をスキップする-Spring Security

分類Dev

Spring統合:HTTPアウトバウンドリクエストに追加のヘッダーパラメータを追加します。

分類Dev

SpringはGETリクエストパラメータをPOJOに自動的にマップします

分類Dev

Springはリクエストパラメータに応じて異なるプロパティファイルを使用します

分類Dev

Spring Frameworkでパラメーターを使用してajaxリクエストを送受信するにはどうすればよいですか?

分類Dev

Java Spring-欠落している必要なリクエストパラメーターを処理する方法

分類Dev

Spring-webflux、@ ExceptionHandlerのパラメーターとしてリクエストを取得する方法

分類Dev

Spring-webflux、@ ExceptionHandlerのパラメーターとしてリクエストを取得する方法

分類Dev

Angular 4 httpは、Springリクエストマッピングへの複数のパラメーターを使用して取得します

分類Dev

コントローラメソッドでリクエストパラメータが使用できない場合、SpringはBad Requestをスローします

分類Dev

Spring MVC(4.3.3)-RestController直接フィールドアクセスを使用してリクエストパラメーターを取得する

分類Dev

リクエストパラメータ(spring-boot)の日付(ISO-8601)を検証します

分類Dev

Spring oauth2AuthorizationCodeリクエストにgooglelogin_hintパラメーターを追加する

分類Dev

Spring統合:httpアウトバウンドゲートウェイを使用してリクエストパラメータをPOSTする方法

分類Dev

Spring SecuritySAMLリクエストの証明書に^ M文字が含まれています

分類Dev

Vaadinを使用してSpringでクエリパラメータを取得する方法

分類Dev

Spring-オブジェクトのリストを返すリクエストメソッドがエラーを示しています

分類Dev

Spring MVC: Jackson objectMapper を使用してクエリパラメータを POJO にデシリアライズする

分類Dev

ajaxを使用してSpringコントローラーにPOSTリクエストを送信する方法

分類Dev

Spring MVCアプリケーションでJqueryを使用して複数のパラメーターのAjax stringifyリクエストを送信しているときに、必須の文字列パラメーター 'querycontent'が存在しない

分類Dev

Spring MVCリクエストを変更して、パラメータバインディングをコンマで分離しないようにリストします

分類Dev

Spring統合dsloutboundGatewayは式を使用してクエリパラメータを設定します

分類Dev

Spring MVCアプリのリクエストでリクエストパラメータ/クエリパラメータが渡されているかどうかを確認するにはどうすればよいですか?

分類Dev

Spring RestTemplateを使用して、特定のネットワークインターフェースを介してHTTPリクエストを送信します

Related 関連記事

  1. 1

    Spring Cloud Netflix:RequestInterceptorを介してホストリクエストパラメーターをFeignClientに渡す

  2. 2

    Spring Bootを使用して静的HTMLページにリクエストパラメータを追加するにはどうすればよいですか?

  3. 3

    Spring RestTemplateGETリクエストは空のクエリパラメータを削除します

  4. 4

    Spring RestTemplateGETリクエストは空のクエリパラメータを削除します

  5. 5

    Spring-MVCで複数のパラメーターを使用してリクエストを処理する方法

  6. 6

    APIリクエストで追加のヘッダーパラメーターを使用してOauth 2.0認証をスキップする-Spring Security

  7. 7

    Spring統合:HTTPアウトバウンドリクエストに追加のヘッダーパラメータを追加します。

  8. 8

    SpringはGETリクエストパラメータをPOJOに自動的にマップします

  9. 9

    Springはリクエストパラメータに応じて異なるプロパティファイルを使用します

  10. 10

    Spring Frameworkでパラメーターを使用してajaxリクエストを送受信するにはどうすればよいですか?

  11. 11

    Java Spring-欠落している必要なリクエストパラメーターを処理する方法

  12. 12

    Spring-webflux、@ ExceptionHandlerのパラメーターとしてリクエストを取得する方法

  13. 13

    Spring-webflux、@ ExceptionHandlerのパラメーターとしてリクエストを取得する方法

  14. 14

    Angular 4 httpは、Springリクエストマッピングへの複数のパラメーターを使用して取得します

  15. 15

    コントローラメソッドでリクエストパラメータが使用できない場合、SpringはBad Requestをスローします

  16. 16

    Spring MVC(4.3.3)-RestController直接フィールドアクセスを使用してリクエストパラメーターを取得する

  17. 17

    リクエストパラメータ(spring-boot)の日付(ISO-8601)を検証します

  18. 18

    Spring oauth2AuthorizationCodeリクエストにgooglelogin_hintパラメーターを追加する

  19. 19

    Spring統合:httpアウトバウンドゲートウェイを使用してリクエストパラメータをPOSTする方法

  20. 20

    Spring SecuritySAMLリクエストの証明書に^ M文字が含まれています

  21. 21

    Vaadinを使用してSpringでクエリパラメータを取得する方法

  22. 22

    Spring-オブジェクトのリストを返すリクエストメソッドがエラーを示しています

  23. 23

    Spring MVC: Jackson objectMapper を使用してクエリパラメータを POJO にデシリアライズする

  24. 24

    ajaxを使用してSpringコントローラーにPOSTリクエストを送信する方法

  25. 25

    Spring MVCアプリケーションでJqueryを使用して複数のパラメーターのAjax stringifyリクエストを送信しているときに、必須の文字列パラメーター 'querycontent'が存在しない

  26. 26

    Spring MVCリクエストを変更して、パラメータバインディングをコンマで分離しないようにリストします

  27. 27

    Spring統合dsloutboundGatewayは式を使用してクエリパラメータを設定します

  28. 28

    Spring MVCアプリのリクエストでリクエストパラメータ/クエリパラメータが渡されているかどうかを確認するにはどうすればよいですか?

  29. 29

    Spring RestTemplateを使用して、特定のネットワークインターフェースを介してHTTPリクエストを送信します

ホットタグ

アーカイブ