質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.61%

  • Java

    13516questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • Spring

    665questions

    Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

  • Spring Boot

    467questions

    Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

  • Thymeleaf

    148questions

    Thymeleaf(タイムリーフ)とは、Java用のテンプレートエンジンで、特定のフレームワークに依存せず使用することが可能です。

SpringBootの認証画面を2つ作りたい

受付中

回答 0

投稿 編集

  • 評価
  • クリップ 2
  • VIEW 2,240

plue

score 67

SpringBoot+thymeleafを使用しログイン画面のあるWEBアプリケーションを作成しています。
現在、ldap認証でログインできるようにはなっているのですが、
今回、新たにスマホからのアクセスに対応するために、postgresのDBを使って別のログイン画面を作らなければならなくなりました。

画面イメージとしては以下のようになります。
PC用    → [ログイン画面1] ─ldap認証 ───────┐
                                                                        ├─→[トップページ]
スマホ用 → [ログイン画面2] ─postgresのDBで認証 ─┘

ログイン画面の1と2のURLは異なり、ログイン後のトップページは同一のものとしたいです。
現在、ログイン画面1の認証用として、以下のソースのようにWebSecurityConfigurerAdapterを継承したクラスを使用しているのですが、

@Configuration
@EnableWebMvcSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
    @Autowired
    private DbRoleLdapAuthoritiesPupulator dbRoleLdapAuthoritiesPupulator;

    @Autowired
    private CustomUserDetailsContextMapper customUserDetailsContextMapper;

    @Override
    public void configure(WebSecurity web) throws Exception{
        web.ignoring().antMatchers("/css/**", "/fonts/**", "/img/**", "/js/**");
    }
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        // 「/login」には任意のユーザーがアクセスでき、それ以外は認証なしでアクセス不可とする
        http.authorizeRequests().
            antMatchers("/").permitAll().anyRequest().authenticated();
        // form認証を有効化
        // ログインページは「/login」
        // ログイン成功時は「/top」へ遷移する
        http.formLogin().
            loginProcessingUrl("/login").loginPage("/").failureUrl("/?error")
            .defaultSuccessUrl("/top").usernameParameter("username").passwordParameter("password").and();
        // ログアウト後のページは「/login」
        http.logout().logoutRequestMatcher(new AntPathRequestMatcher("/logout**")).logoutSuccessUrl("/");

        // csrfトークンの発行は無効
        http.csrf().disable();
    }

    @Override
    public void configure(AuthenticationManagerBuilder auth) throws Exception {

        SchemaContextHolder.setSchemaType(SchemaType.POSTGRES);

        DefaultSpringSecurityContextSource contextSource = 
            new DefaultSpringSecurityContextSource("ldap://ad.internal.hoge.co.jp:389");
        contextSource.afterPropertiesSet();

        LdapAuthenticationProviderConfigurer<AuthenticationManagerBuilder> configure = 
            auth.ldapAuthentication();
        // ldap接続用
        configure.userDnPatterns
            ("cn={0},ou=aaa, ou=user, dc=ad,dc=internal, dc=hoge, dc=co, dc=jp").
            contextSource(contextSource).
            ldapAuthoritiesPopulator(dbRoleLdapAuthoritiesPupulator).
            userDetailsContextMapper(customUserDetailsContextMapper);
    }
}

ログイン画面が2つとなるとどのように実装すればよいのか、調べても分かりませんでした。。。
ご存知の方がいらっしゃいましたら、ご教授お願い致します。
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.61%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    SpringBoot OracleとPostgresに接続したい

    検索するテーブルによって、OracleとPostgresを切り替えたいのですが、方法が分からず困っています。 現在、以下のような設定をしていますが、postgresのテーブル参照時

  • 受付中

    Spring Security でログインユーザ情報をPostgreSQLで管理したい

    Heroku上に設置するWebアプリを作っています。 ログイン部分を作るにあたり、ユーザのIDやPWはPostgreSQLに格納し、 その情報を使ってログイン認証を行いたいのですが

  • 受付中

    SpringSecurityで複数ページでの認証の実装

    SpringSecurityを使用し、複数のログイン画面での認証は可能でしょうか。 サンプル等を拝見しても認証に使用する画面は一つだけで、情報取得に用いるテーブルも1つだけを指定

  • 受付中

    JavaでSSLSocketを使いFTPS(explicit)でファイルをSTORしたい

    javaの業務で、ファイルを他サーバーに転送しなくちゃなのですが、できなくて困っています。 転送先のサーバがFTPはFTPSのみ受け付けている、という状態です。 大変困っています。

  • 解決済

    spring+thimeleaf+tomcatでPOST送信が文字化け

    Spring boot + thimeleaf + tomcatでWEBアプリ開発を行っております。 <使用ミドルウェア>  spring boot:1.3.2  thi

  • 解決済

    ログアウトを行ったユーザのID取得

    前提・実現したいこと Spring Securityを利用した認証を行っています。 ログアウト時に、ログアウトしたユーザのIDを含んだ独自のログを出力したいと考えています。

  • 解決済

    SpringSecurityのログイン画面について

    いつもお世話になっております。 SpringSecurityのログイン画面を作成しております。 内容としましては、MysqlのNewaccountテーブルに登録しているユーザを 検

  • 受付中

    Spring Boot 認証

    前提・実現したいこと SpringBootでbasic認証をベースに 独自の認証に変更したいです。 発生している問題 httpBasic()を使用せずに、 BasicAuthe

同じタグがついた質問を見る

  • Java

    13516questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • Spring

    665questions

    Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

  • Spring Boot

    467questions

    Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

  • Thymeleaf

    148questions

    Thymeleaf(タイムリーフ)とは、Java用のテンプレートエンジンで、特定のフレームワークに依存せず使用することが可能です。