SpringSecurity認証ログインでユーザーが入力したユーザー名とパスワードの値を取得する方法

ジオトーマス

アプリケーションでSpringMVCを使用しており、ログインはSpringセキュリティによって認証されています。UserServiceImpl.javaクラスには次の2つのメソッドがあります。publicUserDetailsloadUserByUsername(String userName)throws UsernameNotFoundException、DataAccessException {

        ApplicationTO applicationTO = null;
        try
            {
                applicationTO = applicationService.getApplicationTO(adminDomainName);
            }
        catch (ApplicationPropertyException e)
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        UserTO userTO = getUserTO(applicationTO.getApplicationId(), userName);
        if (userTO == null)
            {
                throw new UsernameNotFoundException("user not found");
            }
        httpSession.setAttribute("userTO", userTO);
        return buildUserFromUserEntity(userTO);
    }


User buildUserFromUserEntity(UserTO userTO)
            {
                String username = userTO.getUsername();
                String password = userTO.getPassword();
                int userId = userTO.getUserId();
                int applicationId = userTO.getApplicationId();
                boolean enabled = userTO.isEnabled();
                boolean accountNonExpired = true;
                boolean credentialsNonExpired = true;
                boolean accountNonLocked = true;
                User user = new User(username, password, enabled, accountNonExpired, credentialsNonExpired, accountNonLocked, getAuthority(applicationId, userId));
                return user;
            }

私はSpringに比較的慣れていないので、Springのセキュリティ部分についてはあまりよくわかりません。私のspring-security.xmlファイルには、次のものがあります。

<form-login login-page="/login" default-target-url="/module/user-home/welcome"
    authentication-failure-url="/login?error" username-parameter="username"
    password-parameter="password" />
<logout logout-success-url="/login?logout" />

<beans:bean id="daoAuthenticationProvider"
 class="org.springframework.security.authentication.dao.DaoAuthenticationProvider">
  <beans:property name="userDetailsService" ref="userDetailsService"/>
</beans:bean>

<beans:bean id="authenticationManager"
    class="org.springframework.security.authentication.ProviderManager">
  <beans:property name="providers">
    <beans:list>
      <beans:ref local="daoAuthenticationProvider" />
    </beans:list>
  </beans:property>
</beans:bean>

そして、私のログインフォームには次のようにアクションが設定されています。

<form id="loginForm" class="form-horizontal" role="form" name='loginForm' action="${rc.getContextPath()}/j_spring_security_check" method='POST'>

現在passwordloadUserByUsernameメソッド内で、またはUserServiceImpl.javaクラスに新しいメソッドを追加することにより、ユーザーがログインフォームに入力した値を取得しようとしています

パスワードを保存する前に、以下を使用してパスワードを暗号化します。Javaを使用してパスワードを暗号化および復号化するために使用するAPIとアルゴリズム

そのため、ログイン時に、Spring Securityはユーザーが入力したパスワードをデータベースからの暗号化されたパスワードと比較し、ログインは失敗します。ただし、上記のリンクで提案されている実装に従って、パスワードと暗号化されたパスワードを比較して、それらが同じであるかどうかを確認する方法があります。これは、ユーザーが入力したパスワードにアクセスできる場合にのみ可能です。これが、ユーザーが入力したパスワードを取得しようとしている理由です。

JIMI

MangEngkusの回答で提案されたように、独自のカスタムAuthenticationProviderを実装できますが、説明に基づいて、それを行う必要はないと思います。

独自のパスワードハッシュメカニズムをspring-securityに実装する必要はありません。Spring自体からBCryptPasswordEncoderを定義する必要があります

デフォルトのものを使用するには、次のいずれかの方法で行います。

<authentication-manager>
  <authentication-provider>
    <password-encoder hash="bcrypt" />
  </authentication-provider>
</authentication-manager>

または、独自のBeanを作成して、デフォルトのプロバイダーに提供します。

<authentication-manager>
  <authentication-provider>
    <password-encoder ref="encoder" />
  </authentication-provider>
</authentication-manager>

<beans:bean id="encoder" 
  class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder">
    <beans:constructor-arg name="strength" value="15" />
</beans:bean>

しかし、あなたにとって、これは方法です::)

<beans:bean id="daoAuthenticationProvider" class="org.springframework.security.authentication.dao.DaoAuthenticationProvider">
  <beans:property name="userDetailsService" ref="userDetailsService"/>
  <beans:property name="passwordEncoder" ref="encoder" />
</beans:bean>

<bean id="encoder" class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder"/>

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

自分で認証を行う方法(ユーザーが入力したユーザー名とパスワードを確認する)

分類Dev

Flutterアプリのログイン。ユーザーが入力したユーザー名とパスワードを、APIから返された値で確認する必要があります。

分類Dev

認証のユーザー名とパスワードを変更しようとしましたが、ランダムに生成されたパスワードを取得します。ログインするには、このパスワードを入力する必要があります。

分類Dev

ユーザーが正しいユーザー名とパスワードを入力するまでプログラムをループさせる方法

分類Dev

ユーザー名とパスワードが必要なWebServiceを使用して、SpringSecurityでユーザーを認証する

分類Dev

ユーザーのパスワードを使用してユーザー名を暗号化することは、ユーザーがサービスにログインできるようにするための実行可能で安全な方法ですか?

分類Dev

ログインするためにfirebaseでユーザーのメールアドレスとパスワードの検証を確認する方法

分類Dev

入力したパスワードがこのユーザーの有効なパスワードであることを確認する方法は?

分類Dev

Apache Airlfowに初めてログインすると、ユーザー名とパスワードの入力を求められますが、ユーザー名とパスワードは何ですか?

分類Dev

自動ログインする方法(ユーザー名とパスワードを入力せずに)(テキストモードで)

分類Dev

Spring Securityを使用して、ユーザー名とパスワードではなくIDとパスワードでユーザーを認証する方法

分類Dev

ユーザーが入力したパスワードがそのパスワードに登録されているユーザー名と一致することを確認するにはどうすればよいですか?

分類Dev

ブラウザのネイティブログインプロンプトをJSPに配置し、ユーザー名とパスワードを取得する方法

分類Dev

ユーザー名とパスワードを使用して Google 認証トークンを取得する

分類Dev

RShinyでユーザー名とパスワードを取得するためのテキスト入力をカスタマイズします

分類Dev

sudoerとしてユーザーを追加しましたが、sshキーベースのログイン認証後にパスワードの入力を求められます

分類Dev

認証-Javaでユーザー名とパスワードをグローバルにする

分類Dev

Springでユーザーが入力したユーザー名とパスワードでメールを送信する

分類Dev

ログインに対するMySQLからのユーザーID(ユーザー名とパスワード)を取得できません

分類Dev

ログインフォームにユーザー名/パスワードを入力した後、特定のユーザーのレコードに移動する方法

分類Dev

LDAPユーザーのユーザー名とパスワードを手動で確認する方法

分類Dev

クラス名を使用してFacebookでユーザー名とパスワードを入力する方法

分類Dev

ログイン中にユーザーが間違ったユーザー名とパスワードを入力しても、RORでエラーメッセージが点滅しませんでした

分類Dev

Controller for .NET Web API2.0で基本認証のユーザー名/パスワードを取得する方法

分類Dev

Laravel 5 db:ユーザー名とパスワードをシードしますが、ログイン時に認証されません

分類Dev

appiumを使用してログインプロセスを自動化している間、パスワードとユーザー名はユーザー名の同じフィールドに入力されます

分類Dev

kubernetes apiserviceを開始(再起動)し、ユーザー名とパスワードの認証を追加する方法

分類Dev

bashスクリプトを使用してnpmに自動ログインしようとしていますが、要求されたときにユーザー名とパスワードを入力する方法がわかりません。出来ますか?

分類Dev

ユーザーにパスワードの入力を促し、条件を確認するプログラム

Related 関連記事

  1. 1

    自分で認証を行う方法(ユーザーが入力したユーザー名とパスワードを確認する)

  2. 2

    Flutterアプリのログイン。ユーザーが入力したユーザー名とパスワードを、APIから返された値で確認する必要があります。

  3. 3

    認証のユーザー名とパスワードを変更しようとしましたが、ランダムに生成されたパスワードを取得します。ログインするには、このパスワードを入力する必要があります。

  4. 4

    ユーザーが正しいユーザー名とパスワードを入力するまでプログラムをループさせる方法

  5. 5

    ユーザー名とパスワードが必要なWebServiceを使用して、SpringSecurityでユーザーを認証する

  6. 6

    ユーザーのパスワードを使用してユーザー名を暗号化することは、ユーザーがサービスにログインできるようにするための実行可能で安全な方法ですか?

  7. 7

    ログインするためにfirebaseでユーザーのメールアドレスとパスワードの検証を確認する方法

  8. 8

    入力したパスワードがこのユーザーの有効なパスワードであることを確認する方法は?

  9. 9

    Apache Airlfowに初めてログインすると、ユーザー名とパスワードの入力を求められますが、ユーザー名とパスワードは何ですか?

  10. 10

    自動ログインする方法(ユーザー名とパスワードを入力せずに)(テキストモードで)

  11. 11

    Spring Securityを使用して、ユーザー名とパスワードではなくIDとパスワードでユーザーを認証する方法

  12. 12

    ユーザーが入力したパスワードがそのパスワードに登録されているユーザー名と一致することを確認するにはどうすればよいですか?

  13. 13

    ブラウザのネイティブログインプロンプトをJSPに配置し、ユーザー名とパスワードを取得する方法

  14. 14

    ユーザー名とパスワードを使用して Google 認証トークンを取得する

  15. 15

    RShinyでユーザー名とパスワードを取得するためのテキスト入力をカスタマイズします

  16. 16

    sudoerとしてユーザーを追加しましたが、sshキーベースのログイン認証後にパスワードの入力を求められます

  17. 17

    認証-Javaでユーザー名とパスワードをグローバルにする

  18. 18

    Springでユーザーが入力したユーザー名とパスワードでメールを送信する

  19. 19

    ログインに対するMySQLからのユーザーID(ユーザー名とパスワード)を取得できません

  20. 20

    ログインフォームにユーザー名/パスワードを入力した後、特定のユーザーのレコードに移動する方法

  21. 21

    LDAPユーザーのユーザー名とパスワードを手動で確認する方法

  22. 22

    クラス名を使用してFacebookでユーザー名とパスワードを入力する方法

  23. 23

    ログイン中にユーザーが間違ったユーザー名とパスワードを入力しても、RORでエラーメッセージが点滅しませんでした

  24. 24

    Controller for .NET Web API2.0で基本認証のユーザー名/パスワードを取得する方法

  25. 25

    Laravel 5 db:ユーザー名とパスワードをシードしますが、ログイン時に認証されません

  26. 26

    appiumを使用してログインプロセスを自動化している間、パスワードとユーザー名はユーザー名の同じフィールドに入力されます

  27. 27

    kubernetes apiserviceを開始(再起動)し、ユーザー名とパスワードの認証を追加する方法

  28. 28

    bashスクリプトを使用してnpmに自動ログインしようとしていますが、要求されたときにユーザー名とパスワードを入力する方法がわかりません。出来ますか?

  29. 29

    ユーザーにパスワードの入力を促し、条件を確認するプログラム

ホットタグ

アーカイブ