Spring WebFlow + Spring Security:ロールの代わりに式を使用する

ElPysCampeador

関数IDを検索してdbテーブルのユーザーをチェックするCustomWebSecurityExpressionHandlerを作成しました。大量のXMLを再コンパイルおよび編集せずに、データベースの更新とコンテキストの再起動だけで、すべての関数の役割を変更したいと思います。

Webフロー内でSpringSecurityExpressionを使用したい!私が春の他の部分でできるように...

<?xml version="1.0" encoding="UTF-8"?>
<flow xmlns="http://www.springframework.org/schema/webflow"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/webflow
                          http://www.springframework.org/schema/webflow/spring-webflow-2.0.xsd">

    <secured attributes="isFUUU('key')" />

    <view-state id="main" view="dashboard/main.html" >
    </view-state>

</flow>

isFUU( "key")を機能させるにはどうすればよいですか?カスタムCustomAccessDecisionManagerが必要ですか?

ElPysCampeador

回避策を見つけました

20クラスのSpringSecurityとWebFlowをデバッグして、SecurityFlowExecutionListenerで、Spring Securityを式で機能するように設定した場合でも、リスナーはロールベースのみになることを発見する必要がありました。式を解析するには、特定のタイプの構成属性、正確にはWebExpressionConfigAttributeが必要であることがわかりました。しかし、それは公開クラスではありません!!! https://jira.spring.io/browse/SEC-1727したがって、このOLD Jiraで提案されているように、同じパッケージ(org.springframework.security.web.access.expression)でCustomSecurityFlowExecutionListenerを作成する必要がありました。

ここに例があります

CustomSecurityFlowExecutionListener:

package org.springframework.security.web.access.expression; //First part of the trick!

import foo.bar.example.services.security.CustomAccessDecisionManager; 

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import org.springframework.expression.ExpressionParser;
import org.springframework.security.access.AccessDecisionManager;
import org.springframework.security.access.ConfigAttribute;
import org.springframework.security.access.SecurityConfig;
import org.springframework.webflow.security.SecurityFlowExecutionListener;
import org.springframework.webflow.security.SecurityRule;

/**
 * Force Spring WebFlow Security listener to use expression!
 * 
 * @author roberto.gabrieli
 */
public class CustomSecurityFlowExecutionListener<T > extends SecurityFlowExecutionListener
{

    /**
     * Convert SecurityRule into a form understood by Spring Security Force the usage of WebExpressionConfigAttribute!
     * 
     * @param rule
     *            the rule to convert
     * @return list of ConfigAttributes for Spring Security
     */
    @Override
    @SuppressWarnings("deprecation")
    protected Collection<ConfigAttribute> getConfigAttributes(SecurityRule rule)
    {
        // Get Access Decision Manager to find if has my expression handler
        AccessDecisionManager adm = getAccessDecisionManager();

        ExpressionParser ep = null;
        //  Check if is my CustomAccessDecisionManager so I can use my expressions
        if ( adm instanceof CustomAccessDecisionManager )
        {
            ep = ((CustomAccessDecisionManager) adm).getWebSecurityExpressionHandler().getExpressionParser();
        }

        List<ConfigAttribute> configAttributes = new ArrayList<ConfigAttribute>();
        for ( String attribute : rule.getAttributes() )
        {
            if ( ep != null )
                // this will end the trick with fireworks!
                configAttributes.add(new WebExpressionConfigAttribute(ep.parseExpression(attribute)));
            else
                configAttributes.add(new SecurityConfig(attribute));
        }
        return configAttributes;
    }
}

WebFlow-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:util="http://www.springframework.org/schema/util" xmlns:webflow="http://www.springframework.org/schema/webflow-config"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.1.xsd
        http://www.springframework.org/schema/webflow-config http://www.springframework.org/schema/webflow-config/spring-webflow-config-2.4.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.1.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd">
... 

    <bean id="securityFlowExecutionListener"
        class="org.springframework.security.web.access.expression.MamSecurityFlowExecutionListener">
        <property name="accessDecisionManager" ref="customAccessDecisionManager"/>
    </bean>

...
</beans>

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

Spring Webflow VS AngularJS

分類Dev

Spring Boot Webflow MVC Thymeleafconfig

分類Dev

Spring Webflow用のSpring Bootスターターがない理由

分類Dev

Spring WebFlowで表示するモデルのバインド

分類Dev

Spring WebFlowをIE7フォームで動作させる

分類Dev

Spring WebFlow-同時アクセスを処理する

分類Dev

Spring webflowは移行中のGETメソッドを防ぎます

分類Dev

Spring Webflow2.4.2に開始状態がありません

分類Dev

Spring WebFlow + Thymeleafフォームの送信(ajaxなし!!!)

分類Dev

Spring Webflowのon-start要素はいつ実行されますか?

分類Dev

Spring Webflowのベストプラクティス

分類Dev

Spring WebFlow 2.0のjspで情報メッセージを表示する

分類Dev

Spring Webflowに単純な値フォームUIフォームを渡す方法

分類Dev

Spring Security JWTフィルターが401とjsonの代わりに500とHTMLをスローする

分類Dev

可能性:Spring MVC / Webflowを介したWebアプリケーション

分類Dev

Spring WebflowとJSF:com.sun.faces.config.processor.FaceletTaglibConfigProcessor.processTagLibraryのjava.lang.NullPointerException

分類Dev

Spring Webflow:バリデーターをフローごとに手動で設定できますか?

分類Dev

Spring Webflowの「flowScope」のコンテンツをJSPに表示するにはどうすればよいですか?

分類Dev

Spring WebFlow内の動的テーブルからフォームで値を取得します

分類Dev

Java Spring:xmlでwebflowを構成しようとすると、dispatcher-servlet.xmlが見つかりません

分類Dev

Jmeterテストが同じアプリの異なるサーバーで失敗する(Spring webflow + Primefaces)

分類Dev

遷移(アクション)Spring Webflowでフォームをクリアする方法

分類Dev

Spring Webflow2.4.5マルチパート/フォームデータバインディングの問題

分類Dev

Spring WebFlowは(一見)SpringBootアプリでランダムに動作を停止します

分類Dev

Spring MVC + Webflow 2 + Thymeleafフラグメント:.HTML拡張子を構成できません

分類Dev

Hibernateの代わりにSpring Data JPAを使用する

分類Dev

Spring Boot:log4jの代わりにlogbackを使用する

分類Dev

Spring Webflow-意思決定状態とアクション状態

分類Dev

java.lang.AssertionError:expected:1、actual:0 spring webflow junit

Related 関連記事

  1. 1

    Spring Webflow VS AngularJS

  2. 2

    Spring Boot Webflow MVC Thymeleafconfig

  3. 3

    Spring Webflow用のSpring Bootスターターがない理由

  4. 4

    Spring WebFlowで表示するモデルのバインド

  5. 5

    Spring WebFlowをIE7フォームで動作させる

  6. 6

    Spring WebFlow-同時アクセスを処理する

  7. 7

    Spring webflowは移行中のGETメソッドを防ぎます

  8. 8

    Spring Webflow2.4.2に開始状態がありません

  9. 9

    Spring WebFlow + Thymeleafフォームの送信(ajaxなし!!!)

  10. 10

    Spring Webflowのon-start要素はいつ実行されますか?

  11. 11

    Spring Webflowのベストプラクティス

  12. 12

    Spring WebFlow 2.0のjspで情報メッセージを表示する

  13. 13

    Spring Webflowに単純な値フォームUIフォームを渡す方法

  14. 14

    Spring Security JWTフィルターが401とjsonの代わりに500とHTMLをスローする

  15. 15

    可能性:Spring MVC / Webflowを介したWebアプリケーション

  16. 16

    Spring WebflowとJSF:com.sun.faces.config.processor.FaceletTaglibConfigProcessor.processTagLibraryのjava.lang.NullPointerException

  17. 17

    Spring Webflow:バリデーターをフローごとに手動で設定できますか?

  18. 18

    Spring Webflowの「flowScope」のコンテンツをJSPに表示するにはどうすればよいですか?

  19. 19

    Spring WebFlow内の動的テーブルからフォームで値を取得します

  20. 20

    Java Spring:xmlでwebflowを構成しようとすると、dispatcher-servlet.xmlが見つかりません

  21. 21

    Jmeterテストが同じアプリの異なるサーバーで失敗する(Spring webflow + Primefaces)

  22. 22

    遷移(アクション)Spring Webflowでフォームをクリアする方法

  23. 23

    Spring Webflow2.4.5マルチパート/フォームデータバインディングの問題

  24. 24

    Spring WebFlowは(一見)SpringBootアプリでランダムに動作を停止します

  25. 25

    Spring MVC + Webflow 2 + Thymeleafフラグメント:.HTML拡張子を構成できません

  26. 26

    Hibernateの代わりにSpring Data JPAを使用する

  27. 27

    Spring Boot:log4jの代わりにlogbackを使用する

  28. 28

    Spring Webflow-意思決定状態とアクション状態

  29. 29

    java.lang.AssertionError:expected:1、actual:0 spring webflow junit

ホットタグ

アーカイブ