Section5: Webアプリケーションのセキュリティ
種別 | 説明 |
---|---|
認証 | システム利用者が正当なユーザであることを確認する。ログイン機能など。 |
許可 | ユーザの権限に応じてリソースへのアクセスを許可すること。アクセス制御。 |
特性 | 説明 | |
---|---|---|
機密性 | 権限を持ったユーザーだけがアクセスできること | |
完全性 | データの欠落や改竄がなく、整合性がとれた完全な状態であること | |
可用性 | 必要なときにいつでも情報にアクセスできること |
方式 | 暗号化の有無 | 説明 | |
---|---|---|---|
BASIC認証 | × | ブラウザのダイアログを使用して認証。BASE64で符号化されるが、暗号化はされない。 | |
DIGEST認証 | ○ | ブラウザのダイアログを使用して認証。MD5で暗号化はされる。 | |
FORM認証 | × | ログインページとログイン失敗ページを作成する必要がある。暗号化されない。 | |
CLIENT-CERT認証 | ○ | SSL接続のクライアント認証を利用する方式。クライアント証明のため、ユーザ名やパスワードは送信されない。 |
設定内容 | タグ | |
---|---|---|
ロールの定義 | security-roleタグ | |
ロールの別名を定義 | servletタグ内のsecurity-role-refタグ | |
認証方式に関する設定 | login-configタグ | |
リソースに対するセキュリティ制約の設定 | security-constraintタグ |
タグ | 説明 |
---|---|
security-role | セキュリティロールの定義。 |
role-name | アクセス制御に使用するロールを定義する。「*」での指定も可能。ここで指定するロールは、サーブレットコンテナで設定されているロールでなければならない。(Tomcatの場合、tomcat-user.xmlに設定する) |
タグ | 説明 |
---|---|
servlet | サーブレットの設定。 |
security-role-ref | このサーブレット内で使用するセキュリティロールの別名を定義する。 |
role-name | セキュリティーロールの別名。。 |
role-link | security-roleタグで指定したロール名。省略時はコンテナが適切なロール名を自動的にマッピングする。 |
(その他のservletタグの子タグは省略) |
- ロールの別名を使うことによって、ソースコードにロール名をハードコーディングしなくてすむ。
- ロール名に変更が生じても、web.xml内でロールの別名とロール名とのマッピングを変更すれば、ソースコードを修正する必要がない。
タグ | 説明 |
---|---|
login-config | 認証方式に関する設定。 |
auth-method | 認証方式の指定。BASIC、DIGEST、FORM、CLIENT-CERTが指定可能。(省略時のデフォルト値はコンテナ依存??) |
realm-name | レルムの名前。BASIC認証などの認証ダイアログに表示される。 |
form-login-config | FORM認証時のページ設定。FORM認証以外では無視される。 |
form-login-page | FORM認証時のログインページのパス。 |
form-error-page | FORM認証時の認証エラーページのパス。 |
タグ | 説明 |
---|---|
security-constraint | セキュリティ制約に関する設定。 |
web-resource-collection | セキュリティ制約を課すリソース情報の定義。 |
web-resource-name | このセキュリティ制約を課すリソース集合の名前。 |
url-pattern | URLパターン。* を指定することが可能。 |
http-method | 制限を設定したいメソッドを指定する。GETのみを指定した場合、POSTでは制限なしにアクセスできてしまうことに注意。省略時は全てのメソッドを制限する。複数タグを指定可能。 |
auth-constraint | アクセス許可に関する制約。 |
role-name | アクセスを許可するロール名。複数タグ指定可能。 |
user-data-constraint | 通信方法に関する制約。 |
transport-guarantee |
保護レベルの指定。指定値は
|
属性 | 値 | |
---|---|---|
formタグのaction属性 | j_security_check | |
ユーザ名の入力フィールドのname属性 | j_username | |
パスワードの入力フィールドのname属性 | j_password |
シグネチャ | 説明 | |
---|---|---|
public String getAuthType() | 使用している認証方式の名前を返す。認証されていない場合はnullを返す。 | |
public String getRemoteUser() | リクエストを生成したユーザが認証されている場合はそのユーザのログイン名を返す。認証されていない場合はnullを返す。 | |
public java.security.Principal getUserPrincipal() | 現在の認証ユーザの名前を含む java.security.Principal オブジェクトを返す。認証されていない場合はnullを返す。 | |
public boolean isUserInRole(String role) | 認証されているユーザが指定された論理的なロールに含まれているかどうかを返す。指定するロール名はsecurity-role-refタグで指定した別名でもよい。 |