認可とリゾルバーの整合性セクションにコード例を追加

This commit is contained in:
nrslib 2026-02-18 10:29:39 +09:00
parent 6153fd880a
commit fc3b62ee1c
2 changed files with 30 additions and 0 deletions

View File

@ -186,6 +186,21 @@ fun create(request: CreateRequest) {
When a tenant resolver assumes a specific role (e.g., staff), the endpoint must have corresponding authorization controls. Without authorization, unexpected roles can access the endpoint and cause the resolver to fail.
```kotlin
// NG - Resolver assumes STAFF but no authorization control
fun getSettings(): SettingsResponse {
val tenantId = tenantResolver.resolve() // Fails for non-STAFF
return settingsService.getByTenant(tenantId)
}
// OK - Authorization ensures correct role
@Authorized(roles = ["STAFF"])
fun getSettings(): SettingsResponse {
val tenantId = tenantResolver.resolve()
return settingsService.getByTenant(tenantId)
}
```
For endpoints with role-based branching, verify that tenant resolution succeeds on all paths.
## OWASP Top 10 Checklist

View File

@ -186,6 +186,21 @@ fun create(request: CreateRequest) {
テナントリゾルバーが特定ロール(例: スタッフ)を前提とする場合、エンドポイントに対応する認可制御が必要。認可なしだと、前提外のロールがアクセスしてリゾルバーが失敗する。
```kotlin
// NG - リゾルバーが STAFF を前提とするが認可制御なし
fun getSettings(): SettingsResponse {
val tenantId = tenantResolver.resolve() // STAFF 以外で失敗
return settingsService.getByTenant(tenantId)
}
// OK - 認可制御でロールを保証
@Authorized(roles = ["STAFF"])
fun getSettings(): SettingsResponse {
val tenantId = tenantResolver.resolve()
return settingsService.getByTenant(tenantId)
}
```
ロール分岐があるエンドポイントでは、全パスでテナント解決が成功するか検証する。
## OWASP Top 10 チェックリスト