ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|---|
|
エラーの状況
# Tomcat 標準 403 ページ
HTTP Status 403 - 要求されたリソースへのアクセスが拒否されました
# 英語版
HTTP Status 403 - Access to the requested resource has been denied
# Manager App のリモートアクセス
403 Access Denied
You are not authorized to view this page.
主な原因と対処
原因 1: directory listing 無効
Tomcat のデフォルトでは、ディレクトリ一覧表示が無効です:
# webapps/myapp/static/ にアクセス (index.html がない)
http://localhost:8080/myapp/static/
# → 403
# 対処 1: index.html / index.jsp を配置
echo "Static
" > webapps/myapp/static/index.html
# 対処 2: directory listing を有効化 (開発用、本番非推奨)
# conf/web.xml の DefaultServlet 設定
default
org.apache.catalina.servlets.DefaultServlet
listings
true
原因 2: web.xml の security-constraint
Protected
/admin/*
admin
# 対処
# - 該当ロールでログイン
# - URL パターンを再確認
# - 不要なら制約を削除
原因 3: ファイル / フォルダの OS 権限
# Linux で webapps の所有者
$ ls -la /opt/tomcat/webapps/myapp
drwxr-x--- 5 root root 4096 May 15 12:00 .
# → tomcat ユーザが読めない
# 対処
$ sudo chown -R tomcat:tomcat /opt/tomcat/webapps/myapp
$ sudo chmod -R 755 /opt/tomcat/webapps/myapp
原因 4: Manager App / Host Manager の IP 制限
# webapps/manager/META-INF/context.xml
# → 127.x.x.x と ::1 (localhost) からのみ許可
# リモートからは 403
# 対処 1: 許可 IP を追加 (社内 IP 等)
# 対処 2: SSH トンネル経由でアクセス
$ ssh -L 8080:localhost:8080 user@tomcat-server
# ローカルから http://localhost:8080/manager/html
原因 5: 認証情報なしで認証必須リソース
# Manager App は basic 認証
# tomcat-users.xml にユーザ登録が必要
# conf/tomcat-users.xml
# Tomcat 再起動 → ブラウザで認証ダイアログ → 入力
原因 6: HTTPS リダイレクトミス
HTTPS Only
/*
CONFIDENTIAL
# HTTP でアクセスすると HTTPS にリダイレクト
# HTTPS が設定されていないと 403
調査の流れ
- URL を確認: ディレクトリ or ファイル?
- Tomcat ログ確認:
logs/localhost_access_log.YYYY-MM-DD.txt - web.xml 確認: security-constraint があるか
- OS 権限確認:
ls -la - context.xml 確認: RemoteAddrValve の制限
- 認証必要か: 401 と区別
403 vs 401 の違い
| コード | 意味 | 例 |
|---|---|---|
| 401 Unauthorized | 未認証 (認証必要) | ログインしていない |
| 403 Forbidden | 認証済だが権限なし | 一般ユーザが管理画面 |
Spring Security での 403
@Configuration
@EnableWebSecurity
public class SecurityConfig {
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http
.authorizeHttpRequests(auth -> auth
.requestMatchers("/admin/**").hasRole("ADMIN")
.requestMatchers("/api/**").authenticated()
.anyRequest().permitAll()
)
.exceptionHandling(ex -> ex
.accessDeniedHandler((request, response, accessDeniedException) -> {
response.setStatus(403);
response.getWriter().write("Access Denied: " + accessDeniedException.getMessage());
})
);
return http.build();
}
}
// アクセス拒否ページ
@Controller
public class ErrorController {
@GetMapping("/access-denied")
public String accessDenied() {
return "errors/403";
}
}
nginx の 403
# nginx が返す 403
# - location ブロックで deny
# - root ディレクトリの権限不足
# - directory listing 無効でディレクトリアクセス
# 対処
location / {
autoindex on; # ディレクトリ一覧
}
location /admin {
allow 192.168.1.0/24;
deny all;
}
# 権限
$ sudo chown -R www-data:www-data /var/www/html
$ sudo chmod -R 755 /var/www/html
関連エラー
401 Unauthorized: 認証必要403 Forbidden: このページ (認証済だが権限なし)404 Not Found: リソース未存在405 Method Not Allowed: HTTP メソッド不一致
関連記事
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページ
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Laravel キャッシュクリア完全ガイド(cache:clear / config:clear / 2026-05-18 07:42:07
- プロジェクトの作成と削除 2026-05-18 07:42:07
- インストール直後にNetbeansが反応しない 2026-05-18 07:42:07
- 動画やチャンネルの検索 2026-05-18 07:42:07
- APIキー取得方法 2026-05-18 07:42:07
- チャンネル情報の取得 2026-05-18 07:42:07
- API 入門 — Web API(REST / GraphQL / gRPC / 2026-05-18 07:42:07
- インストール(eclipseプラグイン) 2026-05-18 07:42:07
- Laravel「Dotenv values containing spaces must be surrounded 2026-05-18 07:42:07
- エラー一覧 2026-05-18 07:42:07
- curl: (51) SSL: certificate subject name '~' does not match 2026-05-18 07:42:07
- インストール方法(Windows版) 2026-05-18 07:42:07
- JSONから配列に変換 2026-05-18 07:42:07
- 処理を一定時間待つ 2026-05-18 07:42:07
- A non well formed numeric value encountered 2026-05-18 07:42:07
コメントを削除してもよろしいでしょうか?