riku__02
@riku__02

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Spring bootのSecurity(認可設定)についての質問

解決したいこと

現在解体新書という書籍にて11章のSpring セキュリティの内容に着手しています。
その中でも認可設定をした後アドミン専用画面を表示するために、ADMINユーザーでログインしたいが、できないという状態です。
思いあたる原因があればご指摘頂きたいです。
image.png

発生している問題・エラー

■data.sql

INSERT INTO employee(id,name,age)
VALUES('1','Tom',30);

/*ユーザマスタ*/
INSERT INTO m_user (
	user_id
	,password
	,user_name
	,birthday
	,age
	,gender
	,department_id
	,role
) VALUES
('system@co.jp','password','システム管理者','2000-01-01',21,1,1,'ROLE_ADMIN')
,('user@co.jp','password','ユーザ1','2000-01-01',21,1,1,'ROLE_GENERAL')
;

/*部署マスタ*/
INSERT INTO m_department (
	department_id
	,department_name
) VALUES
(1,'システム管理部')
,(2,'営業部')
;

/*給料テーブル*/
INSERT INTO t_salary (
	user_id
	,year_month
	,salary
) VALUES
('user@co.jp','2020/11',280000)
,('user@co.jp','2020/12',290000)
,('user@co.jp','2021/01',300000)
;

自分で試したこと

朝の段階で発覚したので原因がまだ突き止めることが出来ていないので、帰宅後もう少し、見てみます。個々が原因ではないか等の案があればご指摘頂けると嬉しいです。

0

2Answer

貴方の前回のご質問を踏まえた推測ですが、
m_userテーブル側のpassword列が平文(暗号化されていない状態)で登録されているからではないでしょうか。
本来であればユーザー登録時に暗号化した状態でテーブルに保存され、
ログインを試行した際は入力されたパスワードを一旦暗号化して暗号化されたパスワード同士で比較するのだと思います。
SQLで挿入したデータではなく、実際にアプリケーションで登録した管理者ユーザーで試行してみては如何でしょうか。

それと気を悪くさせてしまったら申し訳ございませんが、
画面で何を入力したかアプリケーションで実行されたSQLのログまで提供していただけるとより解決に至り易くなると思いますのでご配慮いただけると幸いです。

0Like

Comments

  1. @riku__02

    Questioner

    @tomdog735 さん
    こんばんは!アドバイスありがとうございます。
    申し訳ないです。。朝勉の後とりあえず質問投げようとして質問の内容がおろそかになってしまって反省しています。

    また内容に関しましてご指摘頂いた内容からユーザ更新にてADMINユーザのパスワードを更新しハッシュ化してみました。
    そしてADMINユーザでログイン後アドミン専用画面に遷移した所500 INTERNAL_SERVER_ERRORエラーが発生しました。

    image.png

    ログとしては以下の内容です。引き続き調査しますが、何か思い当たる点ある場合、ご指摘頂けると幸いです。
    image.png

  2. 一先ずログインできたとのこと安心しました。

    添付していただいたエラーですが、
    類似のエラーについて問題解決しているサイトを見る限り、favicon.icoが適切な場所に置かれていない、
    或いはfavicon.icoへの静的アクセスがSpring Securityの機能によって弾かれているのが原因ではないでしょうか。

    貴方のプロジェクト内で/resources/static配下の任意の場所にfavicon.icoが配置されていることを確認の上、

    com.example.demo.config.SecurityConfig.javaに以下のように追記してみてください。

        /** セキュリティの対象外を設定 */
    	@Bean
    	public WebSecurityCustomizer webSecurityCustomizer() {
    		return web -> web.ignoring().requestMatchers(
    				new AntPathRequestMatcher("/webjars/**"), new AntPathRequestMatcher("/css/**"),
    				new AntPathRequestMatcher("/js/**"), new AntPathRequestMatcher("/h2-console/**"),
    +               new AntPathRequestMatcher("/favicon.ico")
                     );
    	}
    

    お力になれれば幸いです。

Your answer might help someone💌