2011-02-06 3 views
3

私はWebSphere 7.0 Portalを実行しています。すべてのポートレットで適切な情報を参照できるようにするには、ログインする必要があります。しかし、さらに、AJAXスクリプト用の生データを生成する同じwarファイルにデプロイするサーブレットがいくつかあります。Websphere 7 Portal:ポータルへのログイン状態のサーブレットチェック?

現在、特定のサーブレットへのURLを知っている場合、WebSphere Portalからの認証をバイパスできます。これを変更して、ユーザーが現在ポータルにログインしているかどうか確認したいと思います。これはどうすればいいですか?私は((PumaHome) new InitialContext().lookup(new CompositeName(PumaHome.JNDI_NAME))).getProfile().getCurrentUser();を試しましたが、これはnullを返します。

答えて

6

WebSphere Application Serverは、WebアプリケーションのJavaEEセキュリティー・コンテキストを使用するように構成した場合にのみ、プリンシパル・ユーザーとリモート・ユーザーを戻します。 web.xmlに

<security-constraint> 
<display-name>userConstraint</display-name> 
<web-resource-collection> 
    <web-resource-name>secure</web-resource-name> 
    <url-pattern>/*</url-pattern> 
    <http-method>GET</http-method> 
    <http-method>POST</http-method> 
</web-resource-collection> 
<auth-constraint> 
    <description>user</description> 
    <role-name>user</role-name> 
</auth-constraint> 
</security-constraint> 
<security-role> 
<description>secrole</description> 
<role-name>user</role-name> 
</security-role> 

のようなものを追加し、アプリケーションを再デプロイします。アプリケーションを配備したら、管理コンソールでアプリケーションの設定を確認します。あなたは "User/role mapping"に気付くでしょう。新しく追加されたロールに、「すべての認証済みのユーザーを信頼できるレルムから」追加します。アプリケーションを再起動します。

その後、匿名ユーザーはあなたのアプリケーションにアクセスできなくなります。また、getRemoteUserおよびその他のAPIは、ユーザーを適切に戻します。

+2

この構成の後、通常の[Webアプリケーションの保護方法](http://download.oracle.com/javaee/5/tutorial/doc/bncas.html) – erloewe

+0

を使用することもできます。ユーザー/ロールマッピングは、アプリケーション>アプリケーション・タイプ>エンタープライズ・アプリケーション> NAME_OF_APP>ユーザー/グループ・マッピングのセキュリティー・ロール>ユーザー/グループのマップで、WebSphereの「統合ソリューション・コンソール」(ポータル管理ページではなく)にあります。巨大な感謝! :-) – yankee

+0

Btwは、アプリケーションのweb.xmlにセキュリティコンテキスト設定が既に含まれている場合にのみ表示されます。このポインタのためにヤンキーに感謝します。 –