目次
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();
以上、メモでした。





