Webアプリケーションの基本的認証! tomcatでBasic認証を設定する方法

こんにちは。横尾です。
 
先日、tomcatのアプリケーションにBasic認証を設定しました。簡単に設定できる認証ですが、備忘録を兼ねてご紹介していきます。

Basic認証とは

Basic認証とは、WEB上で利用できる認証システムです。
 
IDとパスワードを使って認証を行いますが、64種類の英数字(A-Z、a-z、0-9)のみを使用するため、改ざんが容易であるなどセキュリティ面での不安があると言われています。
 
Webページを一般公開する前に、特定の人だけにアクセスを許可するときなどに使用されることが多いです。Basic認証は、一度認証を行うとブラウザを閉じるまで有効となります。

環境

tomcat
8.5.32
JAVA
1.8

Basic認証の設定方法

Basic認証を有効にする方法は、以下の3ステップです。

tomcat-users.xmlに設定を記述する

下記に格納されている、tomcat-users.xmlにBasic認証の設定内容を記述します。
\conf\tomcat-users.xml

<role rolename="basic"/>
<user username="amgsolution" password="amgpassword" roles="basic"/>

rolenameに認証の名称、usernameに使用するID、passwordに使用するパスワードを設定します。

web.xmlに設定を記述する

下記に格納されている、web.xmlにBasic認証の設定内容を記述します。
\webapps\ROOT\WEB-INF\web.xml

<security-constraint>
 <web-resource-collection>
  <web-resource-name>User Basic Auth</web-resource-name>
  <url-pattern>/*</url-pattern>
 </web-resource-collection>
 <auth-constraint>
  <role-name>basic</role-name>
 </auth-constraint>
</security-constraint>

<login-config>
 <auth-method>BASIC</auth-method>
 <realm-name>User Basic Auth</realm-name>
</login-config>

<security-role>
 <role-name>basic</role-name>
</security-role>

role-nameタグに、tomcat-users.xmlに記述した、roleの認証の名称を記述します。

tomcatを再起動する

Basic認証の確認方法

Web画面から確認する

Basic認証を設定したページのURLを指定してページを開きます。
 
Basic認証が設定できている場合は、下記のポップアップが表示されます。ユーザー名とパスワードを正しく入力すると、画面が表示されます。
 

プログラムから確認する

APIなどプログラムからアクセスする可能性が高いページにBasic認証を設定した場合は、下記のプログラムから確認ができます。

	public void basicTest() throws IOException {

		URL url = new URL("Basic認証を設定したページのURL");
		URLConnection conn = url.openConnection();

		String basicSource = "amgsolution:amgpassword";
		conn.setRequestProperty("Authorization", "Basic " + Base64.getEncoder().encodeToString(basicSource.getBytes()));

		InputStream is;
		try {
			is = conn.getInputStream();
		} catch (Exception e) {
			logger.error("エラー", e);
			return;
		}
	}

6行目のbasicSourceに、ユーザー名:パスワードを設定します。
 
Basic認証が正しく設定できていない場合は、11行目でIOExceptionが発生します。

まとめ

基本的な認証のBasic認証の設定方法と、確認方法のご紹介でした。設定方法に迷ったときはぜひご活用ください。
 
それではまた。

記事をシェア
MOST VIEWED ARTICLES