1

リモートサーバーで認証を行うsymfony 2.8アプリを開発しています。認証は、フォームまたは API キー (simple_preauth) を介して渡されます。認証が成功すると、セッション キーが Cookie に保存されるため、simple_preauth オーセンティケータ (stateless を true に設定) がリクエストごとにチェックします。その simple_preauth オーセンティケーターは 2 つのことを可能にします: get パラメーターで渡されたシークレット api キーを介してユーザーを認証し、現在のセッションがリモートサーバーで期限切れになっているかどうかも確認します。認証されたユーザーだけが何をしても許されます。だから私のsecurity.ymlファイルがあります:

providers:
    webservice:
        id: app.webservice_user_provider

access_control:
    - { path: ^/login$, roles: IS_AUTHENTICATED_ANONYMOUSLY}
    - { path: ^/, roles: ROLE_USER}

firewalls:
    dev:
        pattern: ^/(_(profiler|wdt)|css|images|js)/
        security: false

    main:
        anonymous: ~
        provider: webservice
        stateless: true
        simple_form:
            authenticator:  app.form_authenticator
            login_path:     /login
            check_path:     /login_check
            success_handler:    app.auth_success_handler
        simple_preauth:
            authenticator: app.sessionlogin_authenticator
        logout:
            path: /logout
            target: /login
            success_handler:  app.logout_handler

問題:

  1. security.yml ファイルで "stateless: true" を設定すると、ログイン後の target_path リダイレクトが無効になります ( github の例外リスナー)。実際、「stateless: true」は simple_preauth にのみ必要で、simple_form には必要ありません。ファイアウォールを 2 つのファイアウォールに分割し、フォーム キーと API キーの両方を介して認証する機能を維持する正しい方法があるのではないでしょうか?
  2. 認証されたユーザーだけがページにアクセスできるように、アクセス制御を整理するより適切な方法があるのではないでしょうか?
4

0 に答える 0