ハマログ

株式会社イーツー・インフォの社員ブログ

Javaのプログラム内でBasic認証を設定する

目次
1.サーバ側(Apacheとか)でかける
2.ウェブアプリケーションサーバ(Tomcatとか)でかける
3.プログラム側で制御する

サーバ側(ApacheとかNginxとか)でかける。

ウェブのリクエストを最初にうけとるサーバでの設定です。
ユーザアクセスがウェブアプリケーション側に渡る前に制限するので、負荷・セキュリティ的にはこれが一番ベストです。

AuthUserfile /etc/httpd/.htpasswd
AuthGroupfile /dev/null
AuthName "Secure Zone"
AuthType Basic
require valid-user

ウェブアプリケーションサーバ(Tomcatとか)でかけることもできる

web.xml

<web-app>
    <security-constraint>
        <web-resource-collection>
            <web-resource-name>html</web-resource-name>
            <url-pattern>/*</url-pattern>
        </web-resource-collection>
        <auth-constraint>
            <role-name>tomcat</role-name>
        </auth-constraint>
    </security-constraint>
    <login-config>
        <auth-method>BASIC</auth-method>
        <realm-name>UserDatabaseRealm</realm-name>
    </login-config>
    <security-role>
        <role-name>tomcat</role-name>
    </security-role>     
</web-app>

Javaプログラムで制御

データベースからID/パスワード情報を読み込んで、認証を設定する。一番柔軟。
一画面だけかけたいとか、ユーザー名/パスワードをDBから取得して細かく制御をおこないたいとか。そんなときに使えます。
※java.util.Base64を利用

String user = "";
String pass = "";
// 省略
HttpURLConnection con = (HttpURLConnection) url.openConnection();
final String userPassword = user + ":" + pass;
String encodeAuthorization = Base64.getEncoder().encodeToString(userPassword.getBytes());
con.setRequestProperty("Authorization", "Basic " + encodeAuthorization);
con.connect();

以上、メモでした。

Base64Basic認証JavaTomcatアクセス制限認証

  kaneko tomo   2017年3月23日


関連記事

CentOS Stream 8でSSH鍵認証ログインできない(暗号化形式が古かった)

CentOS Streamでサーバー構築をしています。ユーザーアカウントを作成し…

Laravel4でHTTPステータスコードを設定する

Laravel4でのHTTPステータスコードの設定方法。 HTTPステータスコー…

クレジットカード取引のセキュリティ対策

はじめに クレジットカード会社、決済代行業者、セキュリティ事業者などから構成され…


← 前の投稿

次の投稿 →