ハマログ

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

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日


関連記事

bash でテキストファイルの内容を環境変数に設定する

bash でテキストファイルの内容を環境変数に設定するのにはまったので、覚え書き…

NetBeans IDE8.0でファイルの改行コードを指定するの巻

NetBeansはデフォルトでは改行コードの表示されないし、変更もできません。 …

AWS Lambda/API GatewayのIP制限が解除されなくて困った話

AWSで環境構築・開発をするにあたって(AWSに限りませんがまあその)、 当然な…


← 前の投稿

次の投稿 →