BT

FlexおよびJavaアプリケーションのアーキテクチャ(page3)

| 作者 Jeanette Stallons フォローする 0 人のフォロワー 投稿日 2011年2月28日. 推定読書時間: 6 分 |

セキュリティ

多くのアプリケーションでは、サーバーサイドの一部またはすべてのリソースへのアクセスを特定のユーザーに制限する必要があります。多くのJave EEアプリケーションでは、コンテナで管理されたセキュリティが用いられます。この場合、ユーザー認証(ユーザーの本人確認)とユーザー承認(ユーザーが何にアクセスできるかの決定-多くはロールに基づく)は、レルム(ユーザー名、パスワード、ユーザーロールの記録)に基づいて行われます。レルムは、Java EEサーバー上で、リレーショナルデータベース、LDAPディレクトリサーバー、XML文書として構成されるか、特定の認証および承認フレームワークを使用するように構成されます。

FlexアプリケーションをJava EEセキュリティフレームワークに統合して、サーバーサイドリソースへのアクセスを適切に制限するには、BlazeDSまたはLiveCycle Data Servicesの構成ファイルにセキュリティ情報を追加します(詳細はこの後で説明します)。その後、ユーザーからログイン資格情報を受け取って認証のためにサーバーに送るフォームを、通常はFlexアプリケーションで作成します。ユーザー資格情報は、その後のすべての要求と一緒に自動的にサーバーに渡されます。

services-config.xmlの変更

BlazeDSまたはLiveCycle Data Servicesのservices-config.xmlファイルで、アプリケーションサーバーの「ログインコマンド」を<security>タグに指定する必要があります。BlazeDSおよびLiveCycle Data Servicesが提供するログインコマンドは、TomcatLoginCommand(TomcatおよびJBoss用)、JRunLoginCommand、WeblogicLoginCommand、WebSphereLoginCommand、OracleLoginCommandです。これらはすべてXMLファイルに定義されており、必要なもののコメントを外すだけです。

この他に、基本認証とカスタム認証のどちらを使用するかを指定するセキュリティ制約と、必要な場合は1つ以上のロールを定義します。TomatまたはJBossでカスタム認証を行うには、Jave EEアプリケーションサーバーが使用するセキュリティフレームワークとの統合のためのクラスをいくつかWebアプリケーションに追加するとともに、いくつかの構成ファイルを変更する必要もあります。詳しくはこちら*を参照してください。

<services-config>    
   <security> 
   <login-command class="flex.messaging.security.TomcatLoginCommand"
      server="Tomcat">             
      <per-client-authentication>false</per-client-authentication>        
   </login-command> 
   <security-constraint id="trusted">         
      <auth-method>Custom</auth-method>         
      <roles>             
         <role>employees</role>             
         <role>managers</role>         
      </roles>     
      </security-constraint> 
   </security>  
   ... 
</services-config>

remoting-config.xmlの変更

次に、宛先定義でセキュリティ制約を参照する必要があります。

<destination id="employeeService">
    <properties>
       <source>services.EmployeeService</source>
    </properties>
    <security>
       <security-constraint ref="trusted"/>
    </security> 
</destination>

すべての宛先に対するデフォルトのセキュリティ制約を定義することも、異なるセキュリティ制約を使用する特定のメソッドだけにアクセスを制限することもできます。

デフォルトのチャネルmy-amfはHTTPを使用します。HTTPSを使用するmy-secure-amfチャネルを使用するように、1つまたは複数の宛先を変更することもできます。

<destination id="employeeService">     
   <channels>         
      <channel ref="my-secure-amf"/>     
   </channels> 
    ... 
</destination> 

ここで、my-secure-amfは、services-config.xmlファイルに定義されています。

<!-- Non-polling secure AMF --> 
<channel-definition id="my-secure-amf"
    class="mx.messaging.channels.SecureAMFChannel">    

 <endpoint url="https://{server.name}:{server.port}/{context.root}/messagebroker/amfsecure"
    class="flex.messaging.endpoints.SecureAMFEndpoint"/> 
</channel-definition> 

Flexアプリケーションへのコードの追加

以上で、サーバーサイドの設定は終わりです。次に、カスタム認証を使用する場合、Flexアプリケーションでフォームを作成する必要があります。このフォームは、ユーザーからユーザー名とパスワードを取得し、ChannelSet.login()メソッドを呼び出してこれらの資格情報をサーバーに渡し、resultおよびfaultイベントをリッスンします。resultイベントはログイン(認証)が成功したことを、faultイベントはログインが失敗したことを示します。資格情報は、同じChannelSet上で接続されているすべてのサービスに適用されます。 基本認証の場合、Flexアプリケーションには何も追加する必要はありません。アプリケーションが最初に宛先に接続しようとしたときに、ブラウザーがログインダイアログボックスを開きます。

その後、アプリケーションは前と同様にサーバーの宛先に対してFlash Remoting要求を実行できますが、それぞれの要求とともにユーザー資格情報が自動的に送信されるようになります(カスタム認証と基本認証のどちらの場合でも)。宛先または宛先のメソッドに指定されている承認ロールを、ログインするユーザーが満たさない場合、呼び出しはfaultイベントを返します。資格情報を削除してユーザーをログアウトするには、ChannelSet.logout()メソッドを使用します。

 

ページ3/4

 

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT