44 JASPICセキュリティの構成

Java Authentication Service Provider Interface for Containers (JASPIC)仕様は、サービス・プロバイダ・インタフェース(SPI)を定義します。JASPIC SPIは、サーバーのWebアプリケーション・メッセージ処理に統合できるメッセージ認証メカニズムを実装する認証プロバイダによって使用されます。Oracle WebLogic ServerでのJASPICセキュリティの構成方法を学習します。

JASPICの仕様(http://www.jcp.org/en/jsr/detail?id=196)に目を通してください。

この章の内容は次のとおりです。

ここでは、『Oracle WebLogic Serverセキュリティの理解』JASPICセキュリティに関する項に示されているJASPICの基本的な概要を把握していることを前提とします。

JASPICメカニズムによるWebLogic Serverデフォルトのオーバーライド

Webアプリケーションの認証構成プロバイダを構成すると、そのWebアプリケーションでは、これがWebLogic Server認証メカニズムのかわりに使用されます。JASPIC認証プロバイダは、ユーザーの資格証明を認証し、サブジェクトを返します。

したがって、認証構成プロバイダを指定する際は、これが独自のセキュリティ認証のニーズを満たすように注意する必要があります。

JASPICの構成の前提条件

サード・パーティのサーバー認証モジュール(SAM)や認証構成プロバイダをWebLogic Serverで使用できるようにする方法を含め、使用する環境でJASPICを構成するためには、一定の前提条件があります。

JASPICプログラミング・モジュールについては、JASPIC (Java Authentication Service Provider Interface for Containers)の仕様(http://www.jcp.org/en/jsr/detail?id=196)で説明されています。

SAM実装のサンプルについては、GlassFish Server Open Source Editionアプリケーション開発ガイドサーブレット・コンテナへの認証メカニズムの追加に関する項を参照してください。GlassFish Serverの観点から記載されていますが、SAMを記述する際のヒントおよびSAMサンプル自体は有益です。

この項には次のトピックが含まれます:

サーバー認証モジュールがクラスパス内に存在する必要がある

WebLogic Server認証構成プロバイダの構成を計画している場合、WebLogic Serverインスタンスの起動に使用する起動スクリプトまたはコマンドラインから、SAMのjarをシステム・クラスパスに追加する必要があります。これを行わない場合、WebLogic Serverは適切なクラスを見つけることができません。

カスタムの認証構成プロバイダがクラスパス内に存在する必要がある

カスタムの認証構成プロバイダの構成を計画している場合、WebLogic Serverインスタンスの起動に使用する起動スクリプトまたはコマンドラインから、カスタムの認証構成プロバイダのjarをシステム・クラスパスに追加する必要があります。これを行わない場合、WebLogic Serverは適切なクラスを見つけることができません。

構成データの場所

WebLogic Scripting Tool (WLST)を使用して、JASPICおよび認証構成プロバイダを構成できます。JASPICおよび認証構成プロバイダを構成すると、ドメイン規模の認証構成プロバイダの構成データは、ドメインのconfig.xmlファイルの<jaspic>要素に格納されます。

たとえば:

<jaspic>
      <auth-config-provider xsi:type="wls-auth-config-providerType">
        <name>WLSAuthConfigProvider-0</name>
      </auth-config-provider>
    </jaspic>

デプロイされたWebアプリケーションの認証構成プロバイダを構成すると、WLSTは、そのWebアプリケーションのデプロイメント・プラン(plan.xml)を、アプリケーション固有の認証構成プロバイダ構成で更新します。たとえば:

<variable>
      <name>JASPICProvider_AuthConfigProviderName_13210476440805</name>
      <value>WLSAuthConfigProvider-0</value>
</variable>
:
<variable-assignment>
   <name>JASPICProvider_AuthConfigProviderName_13210476440805</name>
   <xpath>/weblogic-web-app/jaspic-provider/auth-config-provider-name</xpath>
</variable-assignment>

アプリケーションでデプロイメント・プランを使用しない場合は、かわりにjaspic-providerデプロイメント記述子要素をweblogic.xmlに追加することができます。

jaspic-providerは、認証時に使用するために登録するauthConfigProviderを指定します。たとえば、<wls:jaspic-provider>my-acp</wls:jlaspic-provider>とします。

ドメインのJASPIC構成

WebLogicリモート・コンソールおよびWLSTを使用してドメインのJASPICを構成できます。

デフォルトでは、JASPICはドメインに対して有効です。

ドメインに対してJASPICを無効にすると、そのドメイン内のすべてのWebアプリケーションに対し、それらの構成に関係なく、JASPICは無効になります。

ドメインに対してJASPICを構成するには:

  1. WebLogicリモート・コンソールで、「ツリーの編集」を開き、「環境」「ドメイン」の順に移動します。
  2. 「セキュリティ」タブで、「拡張フィールドの表示」をクリックします。
  3. 「JASPIC有効」オプションをオンにします。
  4. 「保存」をクリックし、変更をコミットします。
  5. WLSTを使用して、認証構成プロバイダを構成します。「WLSTを使用したJASPICの構成」を参照してください。

ドメインのJASPICプロパティを構成した後、特定のWebアプリケーションに適用する認証構成プロバイダを指定できます。Oracle WebLogic Remote Consoleオンライン・ヘルプJASPICのためのWebアプリケーションの構成に関する項を参照してください。

WLSTを使用したJASPICの構成

WLSTを使用してドメインのJASPICを構成したり、WLS認証構成プロバイダまたはカスタム認証構成プロバイダの作成、WLSおよびカスタムのすべての認証構成プロバイダのリスト表示、ドメインに対するJASPICの有効化および無効化などのタスクを実行できます。

WLSTの使用については、『WebLogic Scripting Toolの理解』を参照してください。

ここでは、WLSTにより次のMBeanを構成する必要があります。

追加のMBean情報については、Oracle WebLogic Server MBeanリファレンスを参照してください。

WLS認証構成プロバイダの作成

例44-1では、WLS認証構成プロバイダを作成し、SAMのクラス名を設定して、構成プロパティを設定します。

このサンプルを実行したら、WebLogic Serverを再起動します。

例44-1 WLS認証構成プロバイダの作成

connect('','','t3://host:port')
Please enter your username :
Please enter your password :
...
edit()
startEdit()
cd('SecurityConfiguration')
cd('mydomain')
jaspic = cmo.getJASPIC()
wacp = jaspic.createWLSAuthConfigProvider('wacp')
am = wacp.getAuthModule()
am.setClassName('com.my.auth.module.Classname')
props = Properties()
props.setProperty('property', 'value')
am.setProperties(props)
save()
activate()

カスタムの認証構成プロバイダの作成

例44-2では、カスタムの認証構成プロバイダを作成し、この認証構成プロバイダのクラス名を設定して、構成プロパティを設定します。

このサンプルを実行したら、WebLogic Serverを再起動します。

例44-2 カスタムの認証構成プロバイダの作成

connect('','','t3://host:port')
Please enter your username :
Please enter your password :
...
edit()
startEdit()
cd('SecurityConfiguration')
cd('mydomain')
jaspic = cmo.getJASPIC()
acp = jaspic.createCustomAuthConfigProvider('cacp')
acp.setClassName('com.my.acp.Classname')
props = Properties()
props.setProperty('property', 'value')
acp.setProperties(props)
save()
activate()

すべてのWLSおよびカスタム認証構成プロバイダのリスト

例44-3は、ドメインのすべての認証構成プロバイダをリストする方法を示しています。

例44-3 すべての認証構成プロバイダのリスト

connect('','','t3://host:port')
Please enter your username :
Please enter your password :
...
edit()
startEdit()
cd('SecurityConfiguration')
cd('mydomain')
jaspic = cmo.getJASPIC()
jaspic.getAuthConfigProviders()

ドメインのJASPICの有効化

例44-4は、ドメインに対してJASPICを有効にする方法を示しています。

このサンプルを実行したら、WebLogic Serverを再起動します。

例44-4 ドメインのJASPICの有効化

connect('','','t3://host:port')
Please enter your username :
Please enter your password :
...
edit()
startEdit()
cd('SecurityConfiguration')
cd('mydomain')
jaspic = cmo.getJASPIC()
jaspic.setEnabled(false)
save()
activate()

ドメインのJASPICの無効化

例44-5は、ドメインに対してJASPICを無効にする方法を示しています。

このサンプルを実行したら、WebLogic Serverを再起動します。

例44-5 ドメインのJASPICの無効化

connect('','','t3://host:port')
Please enter your username :
Please enter your password :
...
edit()
startEdit()
cd('SecurityConfiguration')
cd('mydomain')
jaspic = cmo.getJASPIC()
jaspic.setEnabled(false)
save()
activate()