티스토리 뷰

Web Development

Shiro JdbcRealm(Postgresql)

§무명소졸§ 2020. 3. 20. 12:48

국내에서는 웹 애플리케이션 개발할 때 Spring 을 많이 사용하고 그러다 보니 보안 처리는 주로 Spring Security를 많이 사용한다. 하지만 Spring Security를 사용하지 않고 보안 영역의 프로그램을 직접 짜지 않는다면 Apache Shrio는 좋은 대안이 될 수 있다. Apache Shiro는  java로 구성된 Security Framework 이다. Apache Zeppelin등에서 사용되고 있고 2010년 이전에 나와서 최근에는  2020-02-23 1.5.1 release 될만큼 잘 관리되고 있다. 오늘은 Apache Shiro 구체적인 사용법은 작성은 아니고 혹시라도 누군가 Apache Shiro를 Postgresql DB를 연동하고 싶을때 참고할 수 있는 Configuration 정보를 남긴다. (필자는 인터넷에 정보가 없어서 약간 고생했다.)

shiro.ini

DB연결을 통한 로그인 처리를 위한 설정이다.

credentialsMatcher = org.apache.shiro.authc.credential.HashedCredentialsMatcher
credentialsMatcher.hashAlgorithmName = SHA-256
credentialsMatcher.hashIterations = 2002

ds = org.postgresql.ds.PGPoolingDataSource
ds.serverName = 127.0.0.1
ds.user = test_user
ds.password = 1234
ds.databaseName = test_db

jdbcRealm = org.apache.shiro.realm.jdbc.JdbcRealm
jdbcRealm.dataSource = $ds
jdbcRealm.permissionsLookupEnabled = false
jdbcRealm.authenticationQuery = SELECT user_pass FROM users WHERE user_name = ?
jdbcRealm.userRolesQuery = SELECT role_name FROM user_roles WHERE user_name = ?
jdbcRealm.credentialsMatcher = $credentialsMatcher

authc = org.apache.shiro.web.filter.authc.PassThruAuthenticationFilter

 

Password Generator

패스워드는 SHA-256 Hexing 을 이용해서 인코딩되서 저장해야 한다. shiro에서 사용할 암호화 문자열을 만드는 샘플 자바이다.

package org.apache.zeppelin.utils;

import org.apache.shiro.crypto.hash.DefaultHashService;
import org.apache.shiro.crypto.hash.HashRequest;

public class GeneratePasswordUtils {
    public static void main(String[] args) {
        final DefaultHashService hash = new DefaultHashService();

        final String pswEnc = hash.computeHash(new HashRequest.Builder()
                .setAlgorithmName("SHA-256")
                .setIterations(2002)
                .setSource("1234")
                .build())
                .toHex();

        System.out.println(pswEnc);
    }
}


 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크