WebサーバでBASIC認証を行うときの注意点 - WebLogic Server勉強会 LT資料
 

WebサーバでBASIC認証を行うときの注意点 - WebLogic Server勉強会 LT資料

on

  • 6,241 views

WebLogic Server勉強会 LT資料 ...

WebLogic Server勉強会 LT資料
「WebサーバでBASIC認証を行うときの注意点]

伊藤忠テクノソリューションズ株式会社
ソフトウェアサービス本部 ミドルウェアサービス部
山田 貴裕氏 (Twitter: @yamadamn)

Statistics

Views

Total Views
6,241
Views on SlideShare
5,807
Embed Views
434

Actions

Likes
0
Downloads
43
Comments
0

4 Embeds 434

http://blogs.oracle.com 431
http://a0.twimg.com 1
http://webcache.googleusercontent.com 1
https://translate.googleusercontent.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

WebサーバでBASIC認証を行うときの注意点 - WebLogic Server勉強会 LT資料 WebサーバでBASIC認証を行うときの注意点 - WebLogic Server勉強会 LT資料 Presentation Transcript

  • WebLogic Server勉強会@東京 LTWebサーバでBASIC認証を行うときの注意点 ソフトウェアサービス本部 ミドルウェアサービス部 山田 貴裕 2011/12/7 Copyright (c)2011 ITOCHU Techno-Solutions Corporation
  • Webサーバとの連携の基本Webサーバと連携する際は、通常、WebLogic Server用プラグイン(通称:プロキシプラグイン)を経由してアクセスする Webサーバ (Apache, OHS, iPlanet, IIS)クライアント WebLogic Server プラグイン (WLS) BASIC認証を行わないときは正常に動作するが… Copyright (c)2011 ITOCHU Techno-Solutions Corporation
  • BASIC認証設定されたWebサーバとの連携 Webサーバ BASIC認証設定クライアント WebLogic Server プラグイン (WLS) ? 正しいユーザ/パスワードを なぜか認証ダイアログが 入力しているのに… 表示されてしまう Copyright (c)2011 ITOCHU Techno-Solutions Corporation
  • BASIC認証時のHTTPの流れクライアント Webサーバ WLS (BASIC認証設定) 9.2以降デフォルト GET /test/ HTTP/1.1 HTTP/1.1 401 Unauthorized WWW-Authenticate: Basic realm="web" 何も設定していないのに 認証が必要とみなされて GET /test/ HTTP/1.1 しまう! Authorization: Basic xxxxx HTTP/1.1 401 Unauthorized WWW-Authenticate: Basic realm="Weblogic Server" Copyright (c)2011 ITOCHU Techno-Solutions Corporation
  • 回避策 ① WLSのセキュリティレルムへユーザを設定する ② WLSの設定のみでBASIC認証を行う ③ AuthorizationヘッダをWebサーバ側で制御する ④ WLSのセキュリティ設定を変更する Copyright (c)2011 ITOCHU Techno-Solutions Corporation
  • 回避策 ① WLSのセキュリティレルムへユーザを設定する • WLSのセキュリティレルムにも同じユーザとパスワードを 追加する – [セキュリティレルム]→[myrealm]→[ユーザとグループ] ※ ユーザとパスワードの二重メンテナンスが必要 ※ 場合によってはパスワードルールも変更が必要 Copyright (c)2011 ITOCHU Techno-Solutions Corporation
  • 回避策 ② WLSの設定のみでBASIC認証を行う • web.xml/weblogic.xmlなどの設定でBASIC認証を行い、 WebサーバでのBASIC認証は行わない 【 web.xmlの例】 【weblogic.xmlの例】 <web-app> <weblogic-web-app> <security-constraint> <security-role-assignment> <web-resource-collection> <role-name>webuser</role-name> <web-resource-name>test</web-resource-name> <principal-name>mygroup</principal-name> <url-pattern>/*</url-pattern> </security-role-assignment> </web-resource-collection> </weblogic-web-app> <auth-constraint> <role-name>webuser</role-name> </auth-constraint> </security-constraint> <login-config> <auth-method>BASIC</auth-method> WLSのセキュリティレルムに <realm-name>test</realm-name> </login-config> 対応するグループやユーザと <security-role> の関連付けを行う <role-name>webuser</role-name> </security-role> </web-app> ※ Webサーバのコンテンツを保護したいときは利用できない Copyright (c)2011 ITOCHU Techno-Solutions Corporation
  • 回避策 ③ AuthorizationヘッダをWebサーバ側で制御する • AuthorizationヘッダがWLSに渡らないように Webサーバ側で制御する 【 Apache httpd.confの例(抜粋)】 LoadModule weblogic_module modules/mod_wl.so LoadModule headers_module modules/mod_headers.so <Location /test> AuthType Basic AuthName "web" AuthUserFile /usr/local/apache/conf/.htpasswd Require valid-user RequestHeader unset Authorization SetHandler weblogic-handler WebLogicHost localhost WebLogicPort 7001 </Location> ※ HttpServletRequest#getRemoteUser がデフォルトでは取得できない 起動オプション -Dweblogic.http.enableRemoteUserHeader=true を設定 Copyright (c)2011 ITOCHU Techno-Solutions Corporation
  • 回避策 ④ WLSのセキュリティ設定を変更する • WLSのセキュリティ設定を変更し、Authorization: Basic ヘッダが渡っても認証しないようにする【 config.xmlの例(抜粋)】<security-configuration> ~ <enforce-valid-basic-auth-credentials>false</enforce-valid-basic-auth-credentials></security-configuration> ※ 管理コンソールから設定できない ※ WLSの再起動が必要になる ※ HttpServletRequest#getRemoteUser がデフォルトでは取得できない 起動オプション -Dweblogic.http.enableRemoteUserHeader=true を設定 Copyright (c)2011 ITOCHU Techno-Solutions Corporation
  • 回避策 ④ WLSのセキュリティ設定を変更する(続き) WLST (WebLogic Scripting Tool)で変更する – WLSTの呼び出し $ . <WL_HOME>/server/bin/setWLSEnv.sh (※<DOMAIN_HOME>/bin/setDomainEnv.sh でもOK) $ java weblogic.WLST or $ <WL_HOME>/common/bin/wlst.sh – WLSTでの変更 connect(weblogic, welcome1, t3://localhost:7001) edit() startEdit() cd(/SecurityConfiguration/ + domainName) cmo.setEnforceValidBasicAuthCredentials(false) save() validate() showChanges() activate() exit() Copyright (c)2011 ITOCHU Techno-Solutions Corporation
  • 回避策 ④ WLSのセキュリティ設定を変更する(続き) WebLogic Security プログラマーズ ガイド > Web アプリケーションのセキュリティ対策 > セキュアな Web アプリケーションの開発 > リソースが非セキュアな場合の BASIC 認証について WebLogic Server バージョン 9.2 以降では、対象リソースにおいて アクセス制御が有効になっていない場合でも、HTTP BASIC 認証を 使用するクライアント リクエストは WebLogic Server 認証を通過しな ければなりません。 この動作は、セキュリティ コンフィグレーション MBean フラグ enforce-valid-basic-auth-credentials で設定します (DomainMBean を使用すると、そのドメインの新しいセキュリティ コ ンフィグレーション MBean を取得できます)。このフラグは、非セキュ アなリソースへのアクセスにおいて、無効な HTTP BASIC 認証資格 によるリクエストを許可するかどうかを指定します。 ※アップグレードガイドにも簡単に記載あり Copyright (c)2011 ITOCHU Techno-Solutions Corporation
  • まとめ • WLS 9.2以降ではAuthorization: Basicヘッダが渡ってくると、 デフォルトでは認証を必要とする ↓ • WebサーバなどWLSより前段でBASIC認証を行うと、 認証ダイアログから先に進めなくなる事象が発生してしまう 回避策 ① WLSのセキュリティレルムへユーザを設定する ② WLSの設定のみでBASIC認証を行う ③ AuthorizationヘッダをWebサーバ側で制御する ④ WLSのセキュリティ設定を変更する ⇒ ②か④がお勧め Copyright (c)2011 ITOCHU Techno-Solutions Corporation