Spring Bootのアプリ内にパスワード生成タスクを追加

2015/03/28
2021/02/25

以前のエントリ Play Frameworkのアプリ内にパスワード生成プロジェクトを追加のようなことをSpring Bootで行う方法について。
上記エントリで書いたように、Gradleで簡単に定義できる。

暗号化方法は、Spring Bootでユーザ認証で書いたようにWebSecurityConfigurerAdapterの継承クラスでnew StandardPasswordEncoder()を設定している前提。
他のEncoderを使う場合はタスクの内容を適宜書き換えれば良いはず。

タスク作成

build.gradleに以下を追記する。
Webアプリ側でSpring Securityを既に追加しているなら、taskだけ書き足してIDEにimportを補ってもらうだけで済むはず。

import org.springframework.security.crypto.password.StandardPasswordEncoder

:

dependencies {
    :
    compile 'org.springframework.boot:spring-boot-starter-security:1.2.2.RELEASE'
    :
}

task encodePassword << {
    StandardPasswordEncoder encoder = new StandardPasswordEncoder()
    String username = 'test'
    if (project.hasProperty('args')) {
        username = project.args.split('\\s+')[0]
    }
    println "Encoded password for user ${username}:"
    println encoder.encode(username)
}

実行

以下を実行するとtestというパスワードを暗号化した文字列が表示される。

./gradlew encodePassword -Pargs="test"

© 2010 ksoichiro